gifts2017

Обработка событий документов 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С.

См. также

Подписаться Добавить вознаграждение
В этой теме еще нет сообщений.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа