Автор: Дмитрий   Дата: 2018-06-06 20:19:45

Внешняя печатная форма 1с 8.3

В типовой конфигураций 1С Предприятие, предусмотрен механизм подключение внешних печатных форм для документов, справочников. В качестве примера создадим внешнюю печатную форму для Реализация товаров и услуг.

Форма будет достаточно простой.

1. Создаем внешнюю обработку, в ней добавляем реквизит СсылкаНаОбъект, тип: ДокументСсылка.РеализацияТоваровУслуг.

Реквизит СсылкаНаОбъект

2. Добавляем макет.

Макет

3. Создаем шапку.

Шапка

4. В области Строка выделяем ячейки: Номер Номенклатура Количество Цена Сумма устанавливаем свойство Заполнение в Параметр.

Заполнение

5. В модуле объект нашей обработки пишем функцию Печать(). Важно, чтобы эта функция называлась именно так. Через данную функцию передается табличный документ в документ. Создаем еще функцию ПечатьВнешнейПечатнойФормы(), в которой будем описывать алгоритм формирование внешней печатной формы.

Функция  Печать() Экспорт
	Перем ТабДок;
	ТабДок = ПечатьВнешнейПечатнойФормы();
	Возврат ТабДок;
КонецФункции

Функция ПечатьВнешнейПечатнойФормы()
	ТабДок = Новый ТабличныйДокумент;
	СсылкаДокумент = СсылкаНаОбъект;//связь с документом (Реализация товаров и услуг)
	Макет = ПолучитьМакет("Макет");
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	РеализацияТоваровУслугТовары.НомерСтроки,
	|	РеализацияТоваровУслугТовары.Количество,
	|	РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
	|	РеализацияТоваровУслугТовары.Цена,
	|	РеализацияТоваровУслугТовары.Сумма КАК Сумма,
	|	РеализацияТоваровУслугТовары.Ссылка.Дата,
	|	РеализацияТоваровУслугТовары.Ссылка.Номер,
	|	РеализацияТоваровУслугТовары.Ссылка
	|ИЗ
	|	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
	|ГДЕ
	|	РеализацияТоваровУслугТовары.Ссылка = &СсылкаДокумент
	|ИТОГИ
	|	СУММА(Сумма)
	|ПО
	|	ОБЩИЕ";
	
	Запрос.УстановитьПараметр("СсылкаДокумент", СсылкаДокумент);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
	ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
	ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
	
	ТабДок.Очистить();
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	ВыборкаДетальныеЗаписи.Следующий();
	ОбластьПодвал.Параметры.ИтогСумма = ВыборкаДетальныеЗаписи.Сумма ;
	ВыборкаДетальныеЗаписи.Следующий();
	ОбластьШапка.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
	
	ТабДок.Вывести(ОбластьШапка);
	ТабДок.НачатьАвтогруппировкуСтрок();
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.Прямой);
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		Если ВыборкаДетальныеЗаписи.Уровень() = 0 Тогда
			Продолжить;
		КонецЕсли;
		ОбластьСтрока.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
		ТабДок.Вывести(ОбластьСтрока, ВыборкаДетальныеЗаписи.Уровень());
	КонецЦикла;
	ТабДок.ЗакончитьАвтогруппировкуСтрок();
	ТабДок.Вывести(ОбластьПодвал);
	Возврат ТабДок;
КонецФункции //

6. Вносим еще один макет. Его используем для авто регистрации внешней печатной формы в документе.

Макет регистрации

7. В первой ячейки пишем: Документы.РеализацияТоваровУслуг.

Указываем Документы.РеализацияТоваровУслуг

8. Внешний вид:

Внешний вид