К статье
Практический материал

Документы и Печать · 9 мин

Как вставить своё поле в шаблон этикетки в 1С

Разбираем, как добавить своё поле в шаблон этикетки в 1С: редактирование макета, параметры области, заполнение в коде, типичные ошибки и проверка результата.

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

Выбор пути зависит от конфигурации. В «Управлении торговлей 11», «Рознице», «Комплексной автоматизации» есть обработка «Редактирование шаблона этикетки», где поля добавляются перетаскиванием доступных параметров. В «1С:Предприятии 8» без такой обработки или в самописных решениях макет редактируется напрямую в конфигураторе, а вывод поля программируется в модуле печати. Оба сценария разберём подробно.

Как устроен шаблон этикетки и где он хранится

Шаблон этикетки — это табличный документ (макет), разделённый на именованные области. Внутри областей могут быть два типа содержимого: статический текст (он печатается как есть) и параметры — поля в угловых скобках или квадратных скобках, которые при печати заменяются реальными данными. Именно параметры и есть те самые «свои поля», которые можно добавлять, переименовывать и перемещать.

В типовых конфигурациях пользовательские шаблоны хранятся в справочнике «Шаблоны этикеток и ценников» (или «Хранилище шаблонов») и редактируются без конфигуратора — это важно, потому что такие изменения не требуют снятия конфигурации с поддержки и не слетают при обновлении. Встроенные в конфигурацию макеты лежат в ветке «Общие → Макеты» дерева конфигурации, и их правка — уже доработка, которая усложнит обновление.

Способ 1: добавить поле через типовой редактор шаблонов

В конфигурациях линейки «Управление торговлей», «Розница», ERP откройте раздел «Настройки и администрирование» (или «Администрирование») → «Печатные формы, отчеты и обработки» → «Шаблоны этикеток и ценников». Либо прямо из формы печати этикеток нажмите кнопку редактирования шаблона рядом с полем выбора шаблона.

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

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

Порядок действий в типовом редакторе
  1. 1
    Откройте справочник шаблонов этикеток и создайте копию рабочего шаблона
  2. 2
    Откройте копию на редактирование
  3. 3
    Перетащите нужное поле из списка доступных на макет
  4. 4
    Настройте положение, размер, шрифт и выравнивание поля
  5. 5
    Сохраните шаблон и напечатайте пробную этикетку на одном товаре
  6. 6
    Проверьте, что поле выводится и не перекрывает штрихкод и другие элементы

Способ 2: добавить параметр в макет через конфигуратор

Когда типового редактора нет или список полей в нём фиксирован, поле добавляется напрямую в макет. Откройте конфигуратор, найдите нужный макет (обычно «Общие → Макеты» или макет у обработки печати этикеток) и откройте его двойным щелчком.

Выделите ячейку, где должно выводиться новое поле. В свойствах ячейки (правая кнопка → «Свойства») установите параметр «Заполнение» = «Параметр», а в свойстве «Параметр» укажите имя, например Производитель. Альтернатива — вписать в текст ячейки конструкцию [Производитель]: квадратные скобки 1С интерпретирует как параметр. Если в одной ячейке нужен и текст, и параметр, используйте шаблон: «Заполнение» = «Шаблон», текст вида Произв.: [Производитель].

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

Как заполнить новое поле в коде печати

Сам по себе параметр в макете ничего не выведет — значение ему присваивается в процедуре формирования этикетки. Найдите модуль, где формируется табличный документ: обычно это функция печати в менеджере обработки или общем модуле. Там есть строки вида Область.Параметры.Наименование = ....

Добавьте аналогичную строку для своего параметра:

ОбластьЭтикетка = Макет.ПолучитьОбласть("Этикетка");

ОбластьЭтикетка.Параметры.Производитель = Строка(Выборка.Номенклатура.Производитель);

ТабличныйДокумент.Вывести(ОбластьЭтикетка);

Если данные берутся из запроса, убедитесь, что нужное поле добавлено в текст запроса и присутствует в выборке — иначе получите ошибку «Поле не найдено». Для дополнительных реквизитов номенклатуры значение придётся получать отдельно — через ЗначениеСвойства из табличной части «ДополнительныеРеквизиты» объекта.

bsl
Область.Параметры.СрокГодности = Формат(Выборка.СрокГодности, "ДЛФ=D");

Настройка размеров, шрифта и переноса

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

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

Контрольные точки

Как проверить результат

Поле на печатной форме
Норма

Значение выводится полностью, в нужном месте

Тревожный признак

Поле пустое, содержит имя параметра в скобках или обрезано

Штрихкод после добавления поля
Норма

Сканируется штатно, размер не изменился

Тревожный признак

Штрихкод сжат или перекрыт новым полем

Этикетки для разных товаров
Норма

Поле корректно заполняется и для длинных, и для пустых значений

Тревожный признак

На части товаров ошибка или сдвиг верстки

Типичные ошибки и ограничения

Самая частая ошибка — рассинхрон имени параметра в макете и в коде. Имя Производитель в макете и Производител в коде не вызовет ошибки компиляции: присвоение просто уйдёт «в никуда», а на печати поле останется пустым или выведется как [Производитель]. Проверяйте имена посимвольно.

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

Типичные ошибки
01
Имя параметра в макете и в коде различается — поле на печати пустое или выводится в квадратных скобках
02
Правка типового макета без копии — изменения теряются при обновлении конфигурации
03
Поле не добавлено в запрос или временную таблицу печати — ошибка «Поле не найдено» при формировании
04
Новое поле перекрывает штрихкод — сканер перестаёт считывать этикетку
05
Длинное значение без переноса — текст обрезается или сдвигает соседние элементы

Что делать, если поле не выводится

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

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

Итог

Что важно запомнить

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

Частые вопросы

Можно ли добавить поле в шаблон этикетки без конфигуратора?

Да, если конфигурация содержит типовой редактор шаблонов этикеток (УТ 11, Розница, ERP, КА). Там поля добавляются из списка доступных. Если нужного поля в списке нет — без доработки кода не обойтись.

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

Это значит, что параметру в макете не присвоено значение в коде: либо строка присваивания отсутствует, либо имя параметра в коде отличается от имени в макете. Сверьте оба имени посимвольно.

Как вывести в этикетке дополнительный реквизит номенклатуры?

Дополнительные реквизиты хранятся в табличной части «ДополнительныеРеквизиты» объекта. В коде печати найдите нужную строку по свойству и передайте её значение параметру макета. В некоторых типовых конфигурациях допреквизиты уже доступны в редакторе шаблонов как отдельные поля.

Пропадёт ли моё поле после обновления конфигурации?

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

Можно ли добавить поле, значение которого вводится вручную при печати?

Да. В типовых редакторах есть поле произвольного текста, а в самописных решениях можно перед печатью запросить значение у пользователя (ВвестиСтроку или поле на форме) и передать его в параметр макета.

Почему после добавления поля штрихкод перестал сканироваться?

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