Макет печатной формы документа

16.02.2018

Теги: 1С:ПредприятиеДокумент

Откроем в конфигураторе окно редактирования объекта конфигурации Документ «ПриходнаяНакладная». Перейдем на закладку «Макеты», нажмем кнопку «Конструкторы» и запустим конструктор печати.

В открывшемся окне конструктора на первом шаге укажем, что будет создана новая команда «Печать» для формирования печатной формы документа:

На втором шаге определим реквизиты документа, которые будет содержать шапка печатной формы:

На третьем шаге определим, что все реквизиты табличной части будут отображены в печатной форме:

На четвертом шаге конструктор предложит сформировать подвал печатной формы. Ничего не указываем (подвал использовать не будем) и переходим к следующему шагу.

Здесь ничего не меняем, тем самым согласимся с тем, что команда для вызова процедуры формирования печатной формы будет помещена в командную панель формы, в раздел «Важное».

Нажмем OK. В конфигураторе откроется модуль команды «Печать», модуль менеджера документа «ПриходнаяНакладная» и макет этого документа.

Модуль команды Печать

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    ТабДок = Новый ТабличныйДокумент;
    Печать(ТабДок, ПараметрКоманды);

    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Ложь;
    ТабДок.ТолькоПросмотр = Ложь;
    ТабДок.ОтображатьЗаголовки = Ложь;

    ТабДок.Показать();
КонецПроцедуры

&НаСервере
Процедура Печать(ТабДок, ПараметрКоманды)
    Документы.ПриходнаяНакладная.Печать(ТабДок, ПараметрКоманды);
КонецПроцедуры

Модуль менеджера документа

Процедура Печать(ТабДок, Ссылка) Экспорт
    Макет = Документы.ПриходнаяНакладная.ПолучитьМакет("Печать");
    Запрос = Новый Запрос();
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ПриходнаяНакладная.Дата,
    |    ПриходнаяНакладная.Номер,
    |    ПриходнаяНакладная.Склад,
    |    ПриходнаяНакладная.Материалы.(
    |        НомерСтроки,
    |        Материал,
    |        Количество,
    |        Цена,
    |        Сумма
    |    )
    |ИЗ
    |    Документ.ПриходнаяНакладная КАК ПриходнаяНакладная
    |ГДЕ
    |    ПриходнаяНакладная.Ссылка В (&Ссылка)";
    Запрос.Параметры.Вставить("Ссылка", Ссылка);
    Выборка = Запрос.Выполнить().Выбрать();

    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    Шапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьМатериалыШапка = Макет.ПолучитьОбласть("МатериалыШапка");
    ОбластьМатериалы = Макет.ПолучитьОбласть("Материалы");
    ТабДок.Очистить();

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

        ТабДок.Вывести(ОбластьЗаголовок);

        Шапка.Параметры.Заполнить(Выборка);
        ТабДок.Вывести(Шапка, Выборка.Уровень());

        ТабДок.Вывести(ОбластьМатериалыШапка);
        ВыборкаМатериалы = Выборка.Материалы.Выбрать();
        Пока ВыборкаМатериалы.Следующий() Цикл
            ОбластьМатериалы.Параметры.Заполнить(ВыборкаМатериалы);
            ТабДок.Вывести(ОбластьМатериалы, ВыборкаМатериалы.Уровень());
        КонецЦикла;
        
        ВставлятьРазделительСтраниц = Истина;
    КонецЦикла;
КонецПроцедуры

Макет документа

Редактирование макета

Добавим новую область для вывода итоговой суммы документа. Выделим мышью две пустые строки под табличной частью документа и выполним пункт главного меню Таблица > Имена > Назначить имя. Назовем область Всего, нажмем ОК.

В созданной области, в колонке Цена, напишем ВСЕГО, а в колонке Сумма напишем ВсегоПоДокументу:

Вызвав палитру свойств для последней заполненной нами ячейки, в свойстве Заполнение укажем, что в этой ячейке будет находиться не текст, а параметр.

Откроем модуль менеджера документа «ПриходнаяНакладная», найдем в нем процедуру Печать и отредактируем ее следующим образом

Процедура Печать(ТабДок, Ссылка) Экспорт
    Макет = Документы.ПриходнаяНакладная.ПолучитьМакет("Печать");
    Запрос = Новый Запрос();
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ПриходнаяНакладная.Дата,
    |    ПриходнаяНакладная.Номер,
    |    ПриходнаяНакладная.Склад,
    |    ПриходнаяНакладная.Материалы.(
    |        НомерСтроки,
    |        Материал,
    |        Количество,
    |        Цена,
    |        Сумма
    |    )
    |ИЗ
    |    Документ.ПриходнаяНакладная КАК ПриходнаяНакладная
    |ГДЕ
    |    ПриходнаяНакладная.Ссылка В (&Ссылка)";
    Запрос.Параметры.Вставить("Ссылка", Ссылка);
    Выборка = Запрос.Выполнить().Выбрать();

    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    Шапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьМатериалыШапка = Макет.ПолучитьОбласть("МатериалыШапка");
    ОбластьМатериалы = Макет.ПолучитьОбласть("Материалы");
    // получаем область макета «Всего»
    ОбластьВсего = Макет.ПолучитьОбласть("Всего");
    ТабДок.Очистить();

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

        ТабДок.Вывести(ОбластьЗаголовок);

        Шапка.Параметры.Заполнить(Выборка);
        ТабДок.Вывести(Шапка, Выборка.Уровень());

        ТабДок.Вывести(ОбластьМатериалыШапка);
        ВыборкаМатериалы = Выборка.Материалы.Выбрать();
        // сумма табличной части документа
        СуммаИтог = 0;
        Пока ВыборкаМатериалы.Следующий() Цикл
            ОбластьМатериалы.Параметры.Заполнить(ВыборкаМатериалы);
            ТабДок.Вывести(ОбластьМатериалы, ВыборкаМатериалы.Уровень());
            // увеличиваем сумму на каждой итерации
            СуммаИтог = СуммаИтог + ВыборкаМатериалы.Сумма;
        КонецЦикла;
        
        // устанавливаем значение параметра области
        ОбластьВсего.Параметры.ВсегоПоДокументу = СуммаИтог;
        // выводим область макета «Всего»
        ТабДок.Вывести(ОбластьВсего);
        ВставлятьРазделительСтраниц = Истина;
    КонецЦикла;
КонецПроцедуры

Поиск: 1С:Предприятие • Документ • Макет • Печать

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.