Как вывести артикул рядом с наименованием товара в счете-фактуре в 1С:УПП 1.3

Программист 1С v8.3 (Обычные формы) Налоговый учет
← На главную

При работе в конфигурации 1С:Управление производственным предприятием (УПП), редакция 1.3 пользователи часто сталкиваются с необходимостью кастомизации печатных форм. Одна из наиболее популярных задач — вывод артикула номенклатуры в печатной форме счета-фактуры или Универсального передаточного документа (УПД) прямо рядом с наименованием товара. Это помогает клиентам быстрее идентифицировать продукцию при приемке.

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

Анализ штатных возможностей программы

Для начала проанализируем, почему не удается решить задачу простой установкой флажков в пользовательском режиме. В настройках параметров учета 1С:УПП 1.3 действительно существует константа ДополнительнаяКолонкаПечатныхФормДокументов, которая позволяет выбрать вывод артикула или кода в печатных формах. Однако эта настройка беспрепятственно работает только для простых товарных накладных (например, ТОРГ-12) или счетов на оплату.

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

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

Шаг 1. Настройка ячейки макета: переключение с «Параметра» на «Шаблон»

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

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

Решить эту проблему нам поможет использование свойства Шаблон. Выполним следующие действия по шагам:

  1. Откроем макет печатной формы счета-фактуры (в составе конфигурации или во внешней печатной форме).
  2. Найдем ячейку, в которую выводится наименование товара (обычно там написано ТоварНаименование).
  3. Выделим эту ячейку, нажмем клавишу F4, чтобы открыть палитру свойств.
  4. В палитре свойств найдем строку Заполнение (Fill) и переключим ее значение с Параметр на Шаблон.
  5. Теперь вернемся к тексту в самой ячейке макета. Изменим его формат. Напишем текст, используя квадратные скобки для обозначения переменных: [ТоварНаименование] (арт. [Артикул]).

При использовании шаблона платформа 1С автоматически распознает слова внутри квадратных скобок как отдельные параметры и позволит передать в них разные значения из кода, сохранив при этом статичный текст (в нашем случае — скобки и сокращение "арт.").

Шаг 2. Корректировка запроса получения данных

Теперь перейдем к программной части. Данные для печати счета-фактуры в УПП 1.3 собираются с помощью запроса, который обычно расположен в общем модуле УчетНДС (или в модуле менеджера документа СчетФактураВыданный, в зависимости от версии релиза вашей конфигурации).

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

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


// Фрагмент изменения текста запроса в модуле
ТекстЗапроса = 
"ВЫБРАТЬ
|	ТаблицаТовары.Номенклатура КАК Номенклатура,
|	ТаблицаТовары.Номенклатура.Артикул КАК Артикул,
|	ТаблицаТовары.ТоварНаименование КАК ТоварНаименование,
|	ТаблицаТовары.Количество КАК Количество,
|	// ... другие поля запроса ...
|ИЗ
|	ВременнаяТаблицаТоваров КАК ТаблицаТовары";

Если в вашем запросе обращение идет напрямую к табличной части документа, связь со справочником может выглядеть так: ДокументТаблица.Номенклатура.Артикул КАК Артикул. Использование виртуального поля через точку от ссылки на номенклатуру вполне допустимо, так как платформа автоматически преобразует это в левое соединение на уровне СУБД.

Шаг 3. Заполнение параметров в алгоритме печати

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

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

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

ОбластьСтрока.Параметры.Заполнить(ВыборкаСтрок);

В этом случае вам дополнительно прописывать ничего не нужно! Платформа самостоятельно сопоставит поле Артикул из выборки запроса с параметром [Артикул], который мы добавили в шаблон ячейки макета на первом шаге.

Вариант Б: Ручное (построчное) заполнение параметров. Если разработчики типовой конфигурации заполнили параметры явным образом, найдем строку заполнения наименования товара и добавим ниже заполнение артикула:


// Было в типовом коде:
ОбластьСтрока.Параметры.ТоварНаименование = ВыборкаСтрок.ТоварНаименование;

// Добавим наше изменение:
ОбластьСтрока.Параметры.Артикул = ВыборкаСтрок.Артикул;

Теперь при формировании печатной формы программа успешно соединит наименование и артикул в одной ячейке.

Почему лучше использовать внешнюю печатную форму (ВПФ)?

Редактирование общего модуля УчетНДС напрямую в конфигурации крайне не рекомендуется. Формы счетов-фактур и УПД регулярно претерпевают изменения на законодательном уровне. При первом же обновлении конфигурации ваши изменения в общем модуле могут быть затерты или вызовут конфликты, требующие ручного объединения кода.

Правильным и безопасным подходом является создание внешней печатной формы:

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

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

← На главную