Почему стандартные реквизиты документа не выводятся на печать в 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При создании новых печатных форм для документов разработчики нередко сталкиваются с ситуацией, когда добавленные в табличный документ стандартные реквизиты (например, Номер и Дата) остаются пустыми при формировании отчета или печатной формы, хотя пользовательские реквизиты шапки отображаются корректно. Разберем по шагам, почему возникает эта ошибка и как правильно настроить макет и программный код для вывода данных.

Основная причина: отсутствие инициализации параметров в коде

Проанализируем механику работы табличных документов в платформе 1С:Предприятие. Само по себе указание имени реквизита в ячейке макета не связывает его с базой данных автоматически. Чтобы значение появилось на листе, его необходимо явно передать в область макета перед выводом в результирующий табличный документ.

Если в коде процедуры печати заполняются только пользовательские реквизиты или используется неполная выборка из запроса, параметры стандартных реквизитов остаются неинициализированными.

Рассмотрим типовой пример корректного явного заполнения параметров области:


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

Проверка режима заполнения ячейки в свойствах макета

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

  1. Текст — платформа воспринимает содержимое ячейки буквально. Если в ячейке написано [Номер] или <Номер>, на печать выведутся именно эти скобки со словом, а не значение переменной.
  2. Параметр — ячейка связывается с коллекцией параметров области. В ячейке указывается имя без скобок (например, Номер), а в программном коде к ней обращаются через конструкцию Область.Параметры.Номер.
  3. Шаблон — позволяет объединять статический текст и вычисляемые параметры. В ячейке пишется текст с квадратными скобками, например: Документ № [Номер] от [Дата].

Особенности группового заполнения через метод Заполнить()

Если в процедуре печати используется метод автоматического заполнения по структуре или выборке запроса, посмотрим на пример правильной работы с ним:


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

При использовании метода Параметры.Заполнить() важно помнить о следующих нюансах:

  1. Имена полей в выборке запроса или ключи структуры должны строго совпадать с именами параметров, заданными в ячейках макета (с учетом регистра).
  2. Поля Номер и Дата должны быть явно включены в секцию ВЫБРАТЬ текста запроса к документу.

Форматирование даты и очистка номера от префиксов

Рассмотрим полезные приемы оформления стандартных реквизитов для вывода печатных документов пользователю:

1. Форматирование даты документа: чтобы исключить вывод времени и представить дату в читаемом виде, можно использовать строковую функцию форматирования:


ОбластьШапка.Параметры.Дата = Формат(Шапка.Дата, "ДФ=dd.MM.yyyy"); // Выведет дату в формате 01.01.2025
// или с использованием локального формата:
ОбластьШапка.Параметры.Дата = Формат(Шапка.Дата, "ДЛФ=DD"); // Выведет дату прописью: 1 января 2025 г.

2. Удаление префиксов и лидирующих нулей из номера: в конфигурациях на базе Библиотеки Стандартных Подсистем (БСП) для получения красивого номера на печать рекомендуется применять специализированную функцию:


НомерНаПечать = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(Ссылка.Номер, Истина, Истина);
ОбластьШапка.Параметры.Номер = НомерНаПечать;
← На главную