Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 23:21

Перехват закрытия openoffice из 1с 8

Автор hiallbb, 28 мар 2011, 20:20

0 Пользователей и 2 гостей просматривают эту тему.

hiallbb

Здравствуйте! Необходимо открыть шаблон документа в Oo writer из 1с, пользователь правит его, нажимает на кнопку закрытия OpenOffice и файл должен автоматически сохраниться во временную папку, т.е. без всяких диалоговых окон. Есть код:
ЦитироватьЕсли СловоДокумент = Неопределено Тогда
        Попытка
            ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager");
            Reflection = ServiceManager.createInstance("com.sun.star.reflection.CoreReflection");
            Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop");
            Broadcaster = ServiceManager.createInstance("com.sun.star.frame.GlobalEventBroadcaster");
        Исключение
            Сообщить(ОписаниеОшибки(),"!");
            Возврат;
        КонецПопытки;
       
        Если ЗначениеЗаполнено(ВремФайл) Тогда
            УдалитьФайлы(ВремФайл);
        КонецЕсли;
       
        // Получить имя временного файла для хранения документа

        ИмяФайла = ПолучитьИмяВременногоФайла(".doc");
        Args = Новый COMSafeArray("VT_DISPATCH", 1);
        Если ДвДанные = Неопределено Тогда
            // Создать новый документ, если не был создан до этого

            OOДокумент = Desktop.loadComponentFromURL("private:factory/swriter", "_blank", 0, Args);
            // И сохранить его во временный файл

            OOДокумент.storeAsURL(ПреобразоватьВURL(ИмяФайла), Args);
        Иначе
            // Записать данные во временный файл

            ДвДанные.Записать(ИмяФайла);
            // Создать новый документ

            OOДокумент = Desktop.loadComponentFromURL(ПреобразоватьВURL(ИмяФайла), "_blank", 0, Args);
            OOДокумент.storeAsURL(ПреобразоватьВURL(ИмяФайла), Args);
        КонецЕсли;
       
   
    КонецЕсли;
   
    // Если документ открыт, активизировать его

    OOДокумент.getCurrentController().getFrame().getContainerWindow().setFocus();   
   
   

    //Добавить обработчик события от документа OpenOffice

    ДобавитьОбработчик OOДокумент.Close(true), ЗакрытиеДокумента;
ДобавитьОбработчик OOДокумент.Close(true)  - вот тут не отрабатывает, тупо выходит из опенофиса. Открывается нужный шаблон и тут же закрывается, хотя должна вызваться процедура ЗакрытиеДокумента(), дабы обработать событие закрытия OpenOffice.
В чем проблема? Как правильно перехватить закрытие openoffice?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск