Top.Mail.Ru

Печать комплектов печатных форм в 1С БСП: как сделать за 7 шагов

В типовой конфигурации 1С:ERP (2.4) потребовалось подключить печать комплекта печатных форм по образцу реализации или заказа клиента. Казалось, что сделать это будет легко — вроде бы все печатные формы добавлены и остается только добавить несколько команд: печать на принтер и печать с настройкой. Но нет — нужно сделать немного больше.

В этой статье сделаем всё по образцу документа реализации (РеализацияТоваровИУслуг). Поэтому смотрим в модуль менеджера и делаем по порядку следующие действия.

1. Добавляем команды печати комплектов

Команды для печати добавляются в процедуре «ДобавитьКомандыПечати».  Нам необходимы две команды:

// Комплект документов на принтер
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Обработчик = "УправлениеПечатьюУТКлиент.ПечатьКомплектаДокументов";
	КомандаПечати.МенеджерПечати = "";
	КомандаПечати.Идентификатор = "КомплектДокументов";
	КомандаПечати.СразуНаПринтер = Истина;
	КомандаПечати.Представление = НСтр("ru = 'Комплект документов на принтер';										|en = 'Document set for printing'");
	КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
	КомандаПечати.Порядок = 1;

	// Комплект документов с настройкой...
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Обработчик = "УправлениеПечатьюУТКлиент.ПечатьКомплектаДокументовСНастройкой";
	КомандаПечати.МенеджерПечати = "";
	КомандаПечати.Идентификатор = "КомплектДокументовСНастройкой";
	КомандаПечати.Представление = НСтр("ru = 'Комплект документов с настройкой...';										|en = 'Document set with setting...'");
	КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
	КомандаПечати.Порядок = 2;

Здесь нужно обратить внимание на свойства «Обработчик» и «Порядок». В качестве обработчика задаются процедуры печати комплектов — сразу на принтер или с настройкой. Обычно команды печати комплектов расположены в начале списка, поэтому порядок у них задается как 1 и 2 соответственно.

2. Описываем, какие печатные формы могут входить в комплект

Затем необходимо определить, какие печатные формы будут входить в состав комплекта. Для этого добавляем экспортную функцию «КомплектПечатныхФорм». В ней с помощью специального метода РС «НастройкиПечатиОбъектов» добавляем все необходимые печатные формы:

РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "ПриходныйОрдерНаТовары", НСтр("ru = 'Приходный ордер на товары';en = 'Goods receipt note'"), 0);

3. Добавляем процедуру печати комплектов

Печать комплекта производится отдельной экспортной функцией «СформироватьКомплектПечатныхФорм». В ней сначала мы получаем комплект печатных форм, который будем формировать:

Перем АдресКомплектаПечатныхФорм;
	
Если ТипЗнч(ПараметрыПечати) = Тип("Структура") И ПараметрыПечати.Свойство("АдресКомплектаПечатныхФорм", АдресКомплектаПечатныхФорм) Тогда
		
	КомплектПечатныхФорм = ПолучитьИзВременногоХранилища(АдресКомплектаПечатныхФорм);
		
Иначе
		
	КомплектПечатныхФорм = РегистрыСведений.НастройкиПечатиОбъектов.КомплектПечатныхФорм(
		Метаданные.Документы.ПриходныйОрдерНаТовары.ПолноеИмя(),
		МассивОбъектов, Неопределено);
		
КонецЕсли;
		
Если КомплектПечатныхФорм = Неопределено Тогда
	Возврат Неопределено;
КонецЕсли;

Далее опять же с помощью специальной функции РС «НастройкиПечатиОбъектов» по каждой форме получаем комплект для печати и формируем отдельно каждую печатную форму:

КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
		КомплектПечатныхФорм,
		МассивОбъектов,
		"ПриходныйОрдерНаТовары");
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
	УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
		КоллекцияПечатныхФорм,
		КомплектПечати.Имя,
		КомплектПечати.Представление,
		ПечатьПриходногоОрдераНаТовары(МассивОбъектов, ОбъектыПечати));
КонецЦикла;

4. Добавляем печать комплекта в процедуру «Печать»

Команда печати комплекта на принтер и печать комплекта из диалога настройки комплекта работают немного по-разному. Процедура формирования комплектов, которую мы добавили в предыдущем пункте, вызывается непосредственно при выводе сразу на принтер. Если же мы производим печать с возможностью просмотра (из диалога настройки комплекта), то вызывается процедура «Печать» модуля менеджера объекта. Поэтому в этой процедуре необходимо добавить обработку печати комплекта:

Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "КомплектДокументов") Тогда
	КоллекцияПечатныхФорм.Очистить();
	СформироватьКомплектПечатныхФорм(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати);
КонецЕсли;

5. Подключаем возможность печати комплектов в РС

Наш объект (документ приходный ордер) необходимо подключить к печати комплектов. Делается это в модуле менеджера РС «НастройкиПечатиОбъектов» в методе «ТаблицаОбъектовДляПечатиКомплектно»:

НоваяСтрока = ТаблицаОбъектов.Добавить();
НоваяСтрока.ТипОбъекта = Метаданные.Документы.ПриходныйОрдерНаТовары.ПолноеИмя();
НоваяСтрока.Представление = Метаданные.Документы.ПриходныйОрдерНаТовары.Представление();
НоваяСтрока.ЕстьОрганизация = Ложь;
НоваяСтрока.ЕстьПартнер = Ложь;

6. Исключаем из комплекта печатные формы требующие вызов дополнительных диалогов

Для формирования некоторых печатных форм может потребоваться вызов дополнительных диалогов. Такие команды нужно исключить из комплекта, либо доработать их, чтобы они могли формироваться без вызова таких диалогов. Для приходного ордера это печатные формы – «Ценник» и «Этикетка».

7. Корректируем процедуры печатных форм

Необходимо убедиться, что все процедуры печати отдельных печатных форм делают разметку табличного документа по объектам печати (с помощью метода «ЗадатьОбластьПечатиДокумента»). Для отдельной печатной формы не в составе комплекта это не требуется. Однако при печати комплекта, если такой разметки нет, будет выдаваться ошибка.

Comments

So empty here ... leave a comment!

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

Sidebar