![]() |
|
Взаимодействие 1С и OpenOffice Calc | ☑ | ||
---|---|---|---|---|
0
elister
20.07.09
✎
14:46
|
Есть вот такой код:
//Подключение к серверу автоматизации OpenOffice Попытка ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager"); Исключение Предупреждение(ОписаниеОшибки() + Символы.ПС + "программа OpenOffice не установлена на данном компьютере!"); Возврат; КонецПопытки; //загрузка из файла документа OpenOffice Calc Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop"); Свойства = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue"); Свойства.Name = "AsTemplate"; Свойства.Value = Истина; Args = Новый COMSafeArray("VT_VARIANT", 2); Args.SetValue(0, Свойства); Свойства1 = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue"); Свойства1.Name = "Hidden"; Свойства1.Value = Истина; Args.SetValue(1, Свойства1); ДокументOF = Desktop.LoadComponentFromURL(ConvertToURL(ПутьДляВыгрузки), "_blank", 0, Args); //открытие документа Если Не (ServiceManager = Неопределено) Тогда Если ОткрыватьЗаявкуПередВыгрузкой Тогда Предупреждение("ВНИМАНИЕ: Пока открыто окно OpenOffice, письмо не будет отправлено!"); ДокументOF.GetCurrentController().GetFrame().GetContainerWindow().SetVisible(Истина); Пока <...проверка состояния документа...> // Ждем пока документ будет закрыт, чтобы избежать ошибок доступа к файлу... КонецЦикла; Иначе ДокументOF.dispose(); ДокументOF = Неопределено; КонецЕсли; Desktop = Неопределено; // Удаляем COM-объект ServiceManager = Неопределено; КонецЕсли; На месте блока <...проверка состояния документа...> должен быть какой-то метод, наподобие такого: ДокументOF.GetCurrentController().GetFrame().GetContainerWindow().GetVisible() = Истина Но метод GetVisible() для интерфейса XWindow отсутствует. Можно ли каким-либо способом проконтролировать закрытие документа OpenOffice из 1С? |
|||
1
ТелепатБот
гуру
20.07.09
✎
14:46
|
||||
2
defor
18.08.09
✎
16:34
|
Простой "деревянный" способ, проконтролировать когда будет освобожден файл.
ИмяВременногоФайла = ПолучитьИмяВременногоФайла(); // Ожидаем закрытие документа Пока Истина Цикл Предупреждение("Идет изменение файла", 2, "Ожидание закрытия файла..."); Попытка ПереместитьФайл(ПутьДляВыгрузки, ИмяВременногоФайла); прервать; Исключение КонецПопытки; КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |