|
COM объект MS Word (отловить закрытие окна) | ☑ | ||
---|---|---|---|---|
0
CodeNull
11.05.12
✎
08:13
|
Приветствую участников форума.
Пытаюсь решить такую задачу: есть некий dot шаблон который процентов на 70 заполняется данными в 1С (использую COM объект MS Word), когда документ по шаблону сформирован то он передается пользователю для дальнейшего редактирования,т.е. открывается окно Word. Могу ли я как-то отловить момент когда пользователь закроет окно Word? Чтобы получить отредактированный документ и автоматически сохранить его в системе 1С? |
|||
1
ЧеловекДуши
11.05.12
✎
08:17
|
Зачем?
Не заморачивайся, делай как есть. Если пользователь закрыл, то это уже его проблема :) |
|||
2
ЧеловекДуши
11.05.12
✎
08:18
|
+ Рекомендуется вообще то окно всегда открывать.
|
|||
3
ЧеловекДуши
11.05.12
✎
08:19
|
+ К тому же ты используешь шаблон, т.е. по большей части все должно заполняться быстренько :)
|
|||
4
Wobland
11.05.12
✎
08:21
|
(1) чтобы сохранить в базе. пускай юзер свои данные вводит в 1С, а вордовский файл потом сформируешь, не?
|
|||
5
CodeNull
11.05.12
✎
08:29
|
К сожалению, пока нет возможности полностью автоматически заполнять документ. Но требуется сохранять его после завершения правок пользователем.
Да,можно заставить пользователя вручную прикреплять документы в 1С,НО требование заказчика - чтобы данная операция совершалась автоматически. Теперь сижу,ломаю голову. Насколько я понимаю, через COM-объект отследить когда пользователь закроет окно или сохранит файл - невозможно? |
|||
6
aleks-id
11.05.12
✎
08:35
|
Процедура ОткрытьДокументВорд(ПолноеИмяФайла)
Попытка Word = Новый COMОбъект("Word.Application"); Word.Documents.Open(ПолноеИмяФайла); Word.Visible = Истина; ДобавитьОбработчик Word.DocumentBeforeClose, ПередЗакрытиемДокументаOffice; ДобавитьОбработчик Word.DocumentBeforeSave, ПередСохранениемДокументаOffice; Исключение ЗапуститьПриложение(ПолноеИмяФайла); КонецПопытки; КонецПроцедуры Процедура ПередЗакрытиемДокументаOffice(Документ, Отмена) Если РазрешеныОперацииСВложением() Тогда Если (НЕ Документ.Saved) ИЛИ (ДокументИзменен) Тогда Документ.Save(); msOffice = Документ.Application; Документ.Close(); msOffice.Quit(); ТекОбъект = ЭлементыФормы.Файлы.ТекущиеДанные.Ссылка.ПолучитьОбъект(); ТекОбъект.Хранилище = Новый ХранилищеЗначения(Новый ДвоичныеДанные(ПолноеИмяФайла), Новый СжатиеДанных()); ТекОбъект.Записать(); КонецЕсли; Иначе Если (НЕ Документ.Saved) ИЛИ (ДокументИзменен) Тогда Сообщить("Запрещено редактирование прикрепленных файлов утвержденных документов. Изменения не сохранены.", СтатусСообщения.Важное); КонецЕсли; КонецЕсли; ДокументИзменен = Ложь; КонецПроцедуры Процедура ПередСохранениемДокументаOffice(Документ, СохранитьКак, Отмена) ДокументИзменен = Истина; КонецПроцедуры |
|||
7
CodeNull
11.05.12
✎
08:40
|
aleks-id, спасибо за код! Попробую переложить на свою задачу.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |