При создании новых печатных форм для документов разработчики нередко сталкиваются с ситуацией, когда добавленные в табличный документ стандартные реквизиты (например, Номер и Дата) остаются пустыми при формировании отчета или печатной формы, хотя пользовательские реквизиты шапки отображаются корректно. Разберем по шагам, почему возникает эта ошибка и как правильно настроить макет и программный код для вывода данных.
Проанализируем механику работы табличных документов в платформе 1С:Предприятие. Само по себе указание имени реквизита в ячейке макета не связывает его с базой данных автоматически. Чтобы значение появилось на листе, его необходимо явно передать в область макета перед выводом в результирующий табличный документ.
Если в коде процедуры печати заполняются только пользовательские реквизиты или используется неполная выборка из запроса, параметры стандартных реквизитов остаются неинициализированными.
Рассмотрим типовой пример корректного явного заполнения параметров области:
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.Номер = Ссылка.Номер;
ОбластьШапка.Параметры.Дата = Ссылка.Дата;
ТабДок.Вывести(ОбластьШапка);
Выясним причину, связанную с настройками самого табличного документа. В палитре свойств ячейки макета ключевую роль играет свойство Заполнение, которое может принимать три значения:
[Номер] или <Номер>, на печать выведутся именно эти скобки со словом, а не значение переменной.Номер), а в программном коде к ней обращаются через конструкцию Область.Параметры.Номер.Документ № [Номер] от [Дата].Если в процедуре печати используется метод автоматического заполнения по структуре или выборке запроса, посмотрим на пример правильной работы с ним:
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.Заполнить(ВыборкаШапка);
ТабДок.Вывести(ОбластьШапка);
При использовании метода Параметры.Заполнить() важно помнить о следующих нюансах:
Номер и Дата должны быть явно включены в секцию ВЫБРАТЬ текста запроса к документу.Рассмотрим полезные приемы оформления стандартных реквизитов для вывода печатных документов пользователю:
1. Форматирование даты документа: чтобы исключить вывод времени и представить дату в читаемом виде, можно использовать строковую функцию форматирования:
ОбластьШапка.Параметры.Дата = Формат(Шапка.Дата, "ДФ=dd.MM.yyyy"); // Выведет дату в формате 01.01.2025
// или с использованием локального формата:
ОбластьШапка.Параметры.Дата = Формат(Шапка.Дата, "ДЛФ=DD"); // Выведет дату прописью: 1 января 2025 г.
2. Удаление префиксов и лидирующих нулей из номера: в конфигурациях на базе Библиотеки Стандартных Подсистем (БСП) для получения красивого номера на печать рекомендуется применять специализированную функцию:
НомерНаПечать = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(Ссылка.Номер, Истина, Истина);
ОбластьШапка.Параметры.Номер = НомерНаПечать;