Как добавить артикул в макеты печатных форм 1С:Управление нашей фирмой 1.6?

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

При работе в программе 1С:Управление нашей фирмой (УНФ) пользователи часто сталкиваются с необходимостью изменить визуальное представление документов, предназначенных для печати. Одной из самых популярных задач является добавление колонки Артикул в такие документы, как «Заказ поставщику», «Счет на оплату» или «Расходная накладная». Однако на практике простое редактирование макета через встроенный редактор табличных документов часто не приносит желаемого результата: колонка появляется, но данные в ней не отображаются. В этой статье мы подробно разберем, почему так происходит, рассмотрим штатные возможности системы и найдем способы решения этой технической задачи.

Разберем причину: почему простое добавление параметра в макет не работает

Для начала проанализируем ситуацию, с которой сталкивается большинство начинающих разработчиков и продвинутых пользователей. Вы открываете Макет печатной формы, добавляете новую колонку, называете ее Артикул и устанавливаете тип заполнения Параметр. Сохраняете изменения, открываете документ, нажимаете кнопку «Печать», но колонка остается пустой. Почему?

Дело в том, что в системе 1С процесс формирования печатной формы разделен на два независимых этапа:

  1. Подготовка данных (серверная логика): Программа выполняет запрос к базе данных, собирает информацию о товарах, ценах, количестве и других реквизитах. Этот набор данных формируется в коде конфигурации (в модулях менеджеров документов или общих модулях печати).
  2. Заполнение макета (визуализация): Программа берет подготовленные данные и «вставляет» их в соответствующие параметры макета.

Если в программном коде (в запросе) не предусмотрено получение поля Артикул, то системе просто нечего подставлять в ваш новый параметр макета. Параметр в макете — это лишь пустая «ячейка», которая ждет данных из программы. Если программа об этой ячейке «не знает», она проигнорирует ее заполнение.

Штатный способ: глобальная настройка «Дополнительная колонка»

Прежде чем приступать к программированию, рассмотрим, как разработчики фирмы 1С предусмотрели решение этой задачи стандартными средствами. В 1С:УНФ реализован механизм управления выводом идентификаторов номенклатуры.

Выясним, где находится эта настройка. Перейдем по следующему пути:

Настройки — Еще больше возможностей — Компания — раздел Печать — поле «Дополнительная колонка»

В этом поле доступны три варианта выбора:

  1. Не выводить — в печатных формах будет отображаться только наименование (и характеристика, если она используется).
  2. Артикул — система автоматически добавит артикул в печатные формы.
  3. Код — вместо артикула будет выводиться внутренний код номенклатуры.

Важно понимать: эта настройка является глобальной. Она влияет на большинство типовых печатных форм в программе. Если вы выберете «Артикул», система сама модифицирует запросы и подставит данные в стандартные параметры макетов.

Ограничение стандартного функционала: Артикул vs Код

Проанализируем ситуацию, когда стандартная настройка не подходит. В некоторых отраслях бизнеса требуется выводить в печатной форме одновременно и внутренний Код (для складского учета), и Артикул (для взаимодействия с поставщиком).

В 1С:УНФ логика печати построена таким образом, что для этих двух реквизитов часто используется один и тот же параметр в макете (например, ТоварКодАртикул или включение в ТоварНаименование). Программа проверяет константу настройки и подставляет в этот параметр либо одно, либо другое значение. Вывести оба значения одновременно стандартными средствами настройки «в один клик» невозможно. Именно в этот момент возникает необходимость внесения изменений в логику формирования данных.

Рассмотрим решение через Расширение конфигурации

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

Разберем по шагам, как реализовать добавление артикула через расширение:

  1. Создаем новое расширение в конфигураторе.
  2. Добавляем в расширение процедуру формирования печатной формы (например, из модуля менеджера документа ЗаказПоставщику). Обычно это процедура Печать или вспомогательные функции формирования таблиц данных.
  3. Используем аннотацию &Вместо или &После для перехвата логики.
  4. Модифицируем текст запроса. Нам нужно добавить поле Номенклатура.Артикул в выборку.

Посмотрим на пример того, как может выглядеть модификация запроса в коде (фрагмент):


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

После того как запрос извлек данные из базы, их необходимо передать в область макета. Рассмотрим подробнее процедуру заполнения параметров:


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

Альтернативный вариант: Внешняя печатная форма (ВПФ)

Если вы не хотите работать с расширениями, можно создать Внешнюю печатную форму. Это отдельный файл (обработка с расширением .epf), который подключается к базе через раздел «Печатные формы, отчеты и обработки».

Преимущества ВПФ:

Недостатки:

Использование дополнительных реквизитов

Выясним еще одну интересную возможность. В 1С:УНФ можно создавать Дополнительные реквизиты для справочника «Номенклатура». Если по каким-то причинам стандартное поле «Артикул» вам не подходит, вы можете создать свой реквизит «Артикул для печати».

В некоторых типах печатных форм (которые строятся на базе механизмов СКД — Системы компоновки данных) такие реквизиты можно добавить в макет через пользовательские настройки состава полей. Однако для классических табличных макетов «Заказа поставщику» это все равно потребует программного вмешательства, аналогичного описанному выше в разделе про расширения.

Подведем итоги

Мы проанализировали проблему вывода артикула в 1С:УНФ 1.6 и пришли к следующим выводам:

  1. Первым делом проверьте глобальную настройку в разделе «Компания — Печать». В 90% случаев переключение режима на «Артикул» решает задачу.
  2. Помните, что редактирование только макета без изменения программного кода (запроса) не даст результата, так как данные не будут передаваться в новые параметры.
  3. Для вывода и Кода, и Артикула одновременно используйте Расширения конфигурации для модификации запросов печати.
  4. Если задача разовая и сложная по оформлению — используйте механизм Внешних печатных форм.

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

← На главную