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