Оповестить о печати документов

Печать (Ctrl+P)
Подсистема «Печать» библиотеки стандартных подсистем предназначена для формирования печатных форм объектов на основе табличных макетов (формат MXL) или макетов офисных документов в форматах Microsoft Word и OpenOffice.org Writer.

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

Рис 1 Общая форма Печать документов библиотеки БСП
  Мне работодатель  дал следующее техническое задание  –   установить статус распечатано на определенные важные виды документов в момент, когда пользователь отправляет  на печать документ.  Задача очень проста, но оказалась интересной из-за недоработки в модуле общей формы   Печать документов  функционала –  а именно,  не дороботка в теле процедуры печать   Мне   пришлось изменить программный код в этой процедуре и добавить строку вызова метода глобального контекста  Оповестить :
&НаКлиенте
Процедура Печать(Команда)
ТабличныеДокументы = ТабличныеДокументыДляПечати();
 УправлениеПечатьюКлиент.РаспечататьТабличныеДокументы(ТабличныеДокументы, ОбъектыПечати,
 ТабличныеДокументы.Количество() > 1, ?(НастройкиПечатныхФорм.Количество() > 1, Копий, 1));
 Оповестить("Напечатано",Параметры.ПараметрКоманды,"ПечатьДокументов"); //Санчес
КонецПроцедуры

Отметим, что структура параметры этой формы имеет много свойств, одно из них – ПараметрКоманды, которое содержит массив ссылок объектов ( документов).  Кроме того,   метод  Оповестить посылает оповещение всем созданным  формам и всем подключенным через метод ПодключитьОбработчикОповещения процедурам модуля управляемого приложения (модуля обычного приложения) или общего модуля.
  После этого,   в модуле формы документа, а также в модуле формы списка документа  нужно подключить  процедуру  обработчика оповещения, куда  будут переданы указанные параметры оповещения. Поэтому, в модуле этих форм ,   в обработчике события ОбработкаОповещения я добавил следующий программный код:
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
 Если ИмяСобытия = "Напечатано" и Источник="ПечатьДокументов" 
                        и ТипЗнч(Параметр) = Тип("Массив") Тогда
 УстановитьСтатусРаспечатаноНасервере(Параметр); // запись в регистре сведений  Статусы документа
 КонецЕсли;
КонецПроцедуры
 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *