Как добавить новую колонку с дополнительным реквизитом в печатную форму документа 1С?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

Многие разработчики, особенно начинающие, сталкиваются с проблемой: при попытке добавить новый столбец с данными в печатную форму документа, поле остается пустым, даже если реквизит в базе данных заполнен. Давайте разберем по шагам, почему так происходит и как правильно внести изменения, чтобы данные корректно отображались на бумаге или в табличном документе.

Понимание архитектуры печати

Первое, что необходимо осознать: печатная форма в 1С — это не статичная таблица, а результат работы программного алгоритма. Редактирование макета в пользовательском режиме (через кнопку «Изменить макет») в большинстве случаев не дает результата для новых данных, так как макет — это лишь визуальный шаблон. Чтобы в нем появились новые данные, их нужно сначала «достать» из базы данных с помощью запроса, а затем «передать» в параметры макета через программный код.

Шаг 1: Изменение запроса в модуле менеджера

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

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


ВЫБРАТЬ
    ...
    ВложенныйЗапрос.Номенклатура.AddРазмеры КАК Размеры,
    ...
ИЗ
    ...

Убедитесь, что вы присвоили полю понятный псевдоним через ключевое слово КАК. Именно этот псевдоним будет использоваться как имя параметра в макете.

Шаг 2: Настройка макета в Конфигураторе

Теперь, когда данные приходят в выборку, откройте макет печатной формы в Конфигураторе. Найдите нужную область — например, строку таблицы, где выводятся данные по товарам.

  1. Добавьте новую ячейку в строку.
  2. В свойствах ячейки установите тип Параметр.
  3. В поле Параметр впишите то же самое имя, которое вы указали в псевдониме запроса (в нашем примере — Размеры).

Шаг 3: Программное заполнение параметров

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


Пока ВыборкаПоТоварам.Следующий Цикл
    // ... здесь идет формирование строк ...
    ОбластьТовар.Параметры.Заполнить(ВыборкаПоТоварам);
    // ...
КонецЦикла;

Метод Параметры.Заполнить(ВыборкаПоТоварам) автоматически ищет в макете параметры с именами, совпадающими с полями выборки. Если вы назвали поле в запросе Размеры и параметр в макете тоже назвали Размеры, 1С сама подставит значение. Если автоматическое заполнение не работает, вы можете присвоить значение явно:

ОбластьТовар.Параметры.Размеры = ВыборкаПоТоварам.Размеры;

Почему изменения в пользовательском режиме не работают?

Редактирование макетов через пользовательский режим сохраняет изменения в информационной базе в специальном хранилище. Однако, если конфигурация типовая, алгоритм печати часто запрашивает «оригинальный» макет из конфигуратора, игнорируя пользовательские правки. Кроме того, пользовательский режим не позволяет изменить SQL-запрос, который физически выбирает данные из базы. Без изменения запроса в модуле данные просто не попадают в структуру выборки, и, следовательно, не могут быть переданы в макет.

Рекомендации по отладке

Если вы внесли изменения, но колонка все равно пустая, выполните следующие действия:

Следуя этим шагам, вы сможете гибко настраивать любые печатные формы под требования вашего бизнеса, не полагаясь на удачу, а понимая логику работы платформы 1С.

← На главную