Эту и другие технические статьи написали наши программисты 1С и получили за них премии. Если вы тоже работаете с 1С и любите делиться опытом, приходите разработчиком в Neti →

 

Рассмотрим подключение к новому документу ПодключаемыхКоманд и Печати на примере конфигурации Управление холдингом 3.0.6.8 с номером версии Библиотеки стандартных подсистем 3.0.1.428.

1С УХ 3.0: Подключение ПодключаемыхКоманд и Печати к новому документу

Для того чтобы подключить печатную форму к новому документу конфигурации, нужно (*код, который нужно добавить в процедуры, можно посмотреть в формах типовых документов конфигурации):

1. Добавить механизм ПодключаемыхКоманд к форме документа ФормаДокумента:

1.1. Добавить код в процедуру ПриСозданииНаСервере.

1.2. Добавить код в процедуру ПриЧтенииНаСервере.

1.3. Добавить код в процедуру ПриОткрытии.

1.4. Добавить три процедуры: Подключаемый_ВыполнитьКоманду, Подключаемый_ВыполнитьКомандуНаСервере, Подключаемый_ОбновитьКоманды.

 

2. Добавить механизм ПодключаемыхКоманд к форме документа ФормаСписка:

2.1. Добавить код в процедуру ПриСозданииНаСервере.

2.2. Добавить код в процедуру СписокПриАктивизацииСтроки ([ИмяТаблицыНаФорме]ПриАктивизацииСтроки).

2.3. Добавить три процедуры: Подключаемый_ВыполнитьКоманду, Подключаемый_ВыполнитьКомандуНаСервере, Подключаемый_ОбновитьКоманды.

 

3. Прописать процедуры печати в Модуле менеджера документа:

3.1. Добавить экспортную процедуру ДобавитьКомандыПечати (название и параметр должны быть именно такими).

Предположим, что хотим добавить печатную форму Предложения по лизингу с идентификатором ПредложенияПоЛизингу:

Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Идентификатор = "ПредложенияПоЛизингу";
	КомандаПечати.Представление = НСтр("ru = 'Предложения по лизингу'");
	КомандаПечати.Обработчик = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати";
	КомандаПечати.СписокФорм = "ФормаСписка,ФормаДокумента";
	КомандаПечати.Порядок = 10;	
КонецПроцедуры

3.2. Добавить экспортную процедуру Печать (название и параметры должны быть именно такими):

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

3.3. Добавить функцию ПечатьДокумента (имя процедуры и параметры, как прописано в процедуре Печать):

Функция ПечатьДокумента(МассивОбъектов, ОбъектыПечати, ПараметрыПечати)
	ТабличныйДокумент = Новый ТабличныйДокумент;
	ТабличныйДокумент.АвтоМасштаб = Истина;
	ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
	ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ИмяНовогоДокумента_ИмяМакета";

	//Запрос по данным документов для печати из массива МассивОбъектов

	ПервыйДокумент = Истина;

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

		// Запомним номер строки, с которой начали выводить текущий документ.
		НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;

		//Заполняем и выводим области макета

		// В табличном документе зададим имя области, в которую был 
		// выведен объект. Нужно для возможности печати покомплектно.
		УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, 
			НомерСтрокиНачало, ОбъектыПечати, СсылкаНаТекущийДокументПечати);
	КонецЦикла;

	Возврат ТабличныйДокумент;
КонецФункции

4. В Общем модуле УправлениеПечатьюПереопределяемый в процедуру ПриОпределенииОбъектовСКомандамиПечати добавить новый документ, например,

СписокОбъектов.Добавить(Документы.ИмяНовогоДокумента);

В итоге на форме списка и на форме документа появится кнопка печати Предложения по лизингу (рис. 1–2):

1С УХ 3.0: Подключение ПодключаемыхКоманд и Печати к новому документу

Рис. 1. Кнопка печати на форме списка

1С УХ 3.0: Подключение ПодключаемыхКоманд и Печати к новому документу

Рис. 2. Кнопка печати на форме документа