Обработка событий документов MS Office из 1С8.х. и кольцевые ссылки.
Обработка событий документов MS Office из 1С8.х.
Возникновение кольцевых ссылок при работе с документами MS Office из 1С8.х
- Описание
- Подробнее
Описание
Описание как открыть документ MS Word можно найти здесь: Как открыть *.DOC файл из 1С для редактирования?
Код аналогичного открытия файлов MS Excel функции отличается от MS Word.
Событие в MS Excel «Перед закрытием» в 1С обрабатывается так:
Процедура ОткрытьФайлДляРедактрования(ПутьКФайлу )
MSExcel= Новый ComОбъект(«Excel.Application»);
MSExcel.Workbooks.Open(ПутьКФайлу);
MSExcel.Visible = Истина;
ДобавитьОбработчик MSExcel.WorkbookBeforeClose, ПередЗакрытиемДокументаЕксель;
КонецПроцедуры
Процедура ПередЗакрытиемДокументаЕксель(Документ, Отмена)
//Перед закрытием сохраняем документ excel
Документ.Save();
//Не забываем удалять обработчик
УдалитьОбработчик MSExcel.WorkbookBeforeClose, ПередЗакрытиемДокументаЕксель;
//Обработчик удален — можно закрыть документ
Документ.Close(); //если документ не будет закрыт, код сохранения файла в базе 1С не сработает
//Теперь можно сохранить файл в базе 1С
Шаблон = Новый ХранилищеЗначения(Новый ДвоичныеДанные(ПолныйПутьКФайлу) , Новый СжатиеДанных(9));
КонецПроцедуры
Чтобы узнать, какие события возникают при работе в программе MS Excel, надо в программе MS Excel открыть редактор Visual Basic (alt+F11), В дереве объектов Microsoft Excel Objects выбрать «ЭтаКнига», в списке объектов выбрать «Workbook» и в списке процедур можно смотреть доступные события.
Например, в 1С для получения события «Перед печатью» в MS Excel, необходимо прописать код:
ДобавитьОбработчик MSExcel.WorkbookBeforePrint, ПередПечатьюДокументаЕксель;
и
Процедура ПередПечатьюДокументаЕксель (Документ, Отмена)
// код, обрабатывающий событие печати из документа excel
КонецПроцедуры
Не забывайте выполнять удаление обработчика событий, оператор: «УдалитьОбработчик»!!!
Если не удалить обработчик событий, возникнут «Кольцевые ссылки» , при закрытии формы обработки, форма останется существовать виртуально. В этом случае для полного закрытия формы поможет закрытие платформы 1С.

