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