Документы и Печать · 9 мин
Как вставить своё поле в шаблон этикетки в 1С
Разбираем, как добавить своё поле в шаблон этикетки в 1С: редактирование макета, параметры области, заполнение в коде, типичные ошибки и проверка результата.
Этикетка в 1С печатается на основе шаблона — макета, в котором заранее размечены области: наименование товара, штрихкод, цена, артикул. Когда стандартного набора полей не хватает (нужно вывести срок годности, производителя, код поставщика или произвольную надпись), шаблон придётся доработать. Сделать это можно двумя путями: через встроенный редактор шаблонов этикеток и ценников в типовых конфигурациях или через правку макета в конфигураторе, если типовой редактор не даёт нужной гибкости.
Выбор пути зависит от конфигурации. В «Управлении торговлей 11», «Рознице», «Комплексной автоматизации» есть обработка «Редактирование шаблона этикетки», где поля добавляются перетаскиванием доступных параметров. В «1С:Предприятии 8» без такой обработки или в самописных решениях макет редактируется напрямую в конфигураторе, а вывод поля программируется в модуле печати. Оба сценария разберём подробно.
Как устроен шаблон этикетки и где он хранится
Шаблон этикетки — это табличный документ (макет), разделённый на именованные области. Внутри областей могут быть два типа содержимого: статический текст (он печатается как есть) и параметры — поля в угловых скобках или квадратных скобках, которые при печати заменяются реальными данными. Именно параметры и есть те самые «свои поля», которые можно добавлять, переименовывать и перемещать.
В типовых конфигурациях пользовательские шаблоны хранятся в справочнике «Шаблоны этикеток и ценников» (или «Хранилище шаблонов») и редактируются без конфигуратора — это важно, потому что такие изменения не требуют снятия конфигурации с поддержки и не слетают при обновлении. Встроенные в конфигурацию макеты лежат в ветке «Общие → Макеты» дерева конфигурации, и их правка — уже доработка, которая усложнит обновление.
Способ 1: добавить поле через типовой редактор шаблонов
В конфигурациях линейки «Управление торговлей», «Розница», ERP откройте раздел «Настройки и администрирование» (или «Администрирование») → «Печатные формы, отчеты и обработки» → «Шаблоны этикеток и ценников». Либо прямо из формы печати этикеток нажмите кнопку редактирования шаблона рядом с полем выбора шаблона.
В редакторе слева отображается список доступных полей — это данные номенклатуры, характеристик, штрихкодов, цен и организации. Чтобы добавить поле, перетащите его мышью в нужное место макета либо вставьте через контекстное меню «Вставить поле». Размер и положение поля настраиваются растягиванием рамки, шрифт — через панель форматирования.
Если нужного поля в списке нет (например, дополнительный реквизит номенклатуры), проверьте, включён ли этот реквизит в состав доступных полей шаблона. В ряде конфигураций список полей фиксирован в коде обработки, и тогда остаётся второй способ — доработка через конфигуратор или использование поля «Произвольная надпись», значение которой задаётся вручную при печати.
- 1Откройте справочник шаблонов этикеток и создайте копию рабочего шаблона
- 2Откройте копию на редактирование
- 3Перетащите нужное поле из списка доступных на макет
- 4Настройте положение, размер, шрифт и выравнивание поля
- 5Сохраните шаблон и напечатайте пробную этикетку на одном товаре
- 6Проверьте, что поле выводится и не перекрывает штрихкод и другие элементы
Способ 2: добавить параметр в макет через конфигуратор
Когда типового редактора нет или список полей в нём фиксирован, поле добавляется напрямую в макет. Откройте конфигуратор, найдите нужный макет (обычно «Общие → Макеты» или макет у обработки печати этикеток) и откройте его двойным щелчком.
Выделите ячейку, где должно выводиться новое поле. В свойствах ячейки (правая кнопка → «Свойства») установите параметр «Заполнение» = «Параметр», а в свойстве «Параметр» укажите имя, например Производитель. Альтернатива — вписать в текст ячейки конструкцию [Производитель]: квадратные скобки 1С интерпретирует как параметр. Если в одной ячейке нужен и текст, и параметр, используйте шаблон: «Заполнение» = «Шаблон», текст вида Произв.: [Производитель].
Учтите, что параметр добавляется внутри именованной области макета (например, «Этикетка»). Если область одна и выводится в цикле для каждой этикетки, параметр будет заполняться при каждом выводе — это стандартный режим для этикеток.
Как заполнить новое поле в коде печати
Сам по себе параметр в макете ничего не выведет — значение ему присваивается в процедуре формирования этикетки. Найдите модуль, где формируется табличный документ: обычно это функция печати в менеджере обработки или общем модуле. Там есть строки вида Область.Параметры.Наименование = ....
Добавьте аналогичную строку для своего параметра:
ОбластьЭтикетка = Макет.ПолучитьОбласть("Этикетка");
ОбластьЭтикетка.Параметры.Производитель = Строка(Выборка.Номенклатура.Производитель);
ТабличныйДокумент.Вывести(ОбластьЭтикетка);
Если данные берутся из запроса, убедитесь, что нужное поле добавлено в текст запроса и присутствует в выборке — иначе получите ошибку «Поле не найдено». Для дополнительных реквизитов номенклатуры значение придётся получать отдельно — через ЗначениеСвойства из табличной части «ДополнительныеРеквизиты» объекта.
Область.Параметры.СрокГодности = Формат(Выборка.СрокГодности, "ДЛФ=D");Настройка размеров, шрифта и переноса
Этикетка имеет жёсткие габариты под размер термоленты, поэтому новое поле легко «вылезает» за границы или перекрывает штрихкод. В свойствах ячейки настройте «Размещение текста»: для длинных значений включите перенос и уменьшите шрифт, либо задайте фиксированную высоту строки и свойство «АвтоОтметкаНезаполненного» не трогайте — оно к печати не относится.
Проверяйте итоговый вид на реальном принтере этикеток, а не только в предпросмотре: драйверы термопринтеров иногда обрезают поля иначе, чем экранный предпросмотр. Полезно напечатать тестовую этикетку с максимально длинным значением поля — например, самым длинным наименованием производителя из справочника.
Как проверить результат
Значение выводится полностью, в нужном месте
Поле пустое, содержит имя параметра в скобках или обрезано
Сканируется штатно, размер не изменился
Штрихкод сжат или перекрыт новым полем
Поле корректно заполняется и для длинных, и для пустых значений
На части товаров ошибка или сдвиг верстки
Типичные ошибки и ограничения
Самая частая ошибка — рассинхрон имени параметра в макете и в коде. Имя Производитель в макете и Производител в коде не вызовет ошибки компиляции: присвоение просто уйдёт «в никуда», а на печати поле останется пустым или выведется как [Производитель]. Проверяйте имена посимвольно.
Вторая группа ошибок — правка типового макета без копии. При очередном обновлении конфигурации макет будет перезаписан, и доработка исчезнет. Третья — попытка вывести в поле значение, которого нет в источнике данных печати: если обработка печати работает с временной таблицей товаров, новое поле нужно добавить и в запрос формирования этой таблицы, а не только в макет и код вывода.
Что делать, если поле не выводится
Действуйте по цепочке от макета к данным. Сначала убедитесь, что печатается именно тот шаблон, который вы правили, — в форме печати может быть выбран другой шаблон по умолчанию. Затем проверьте имя параметра в свойствах ячейки и в строке присваивания. Далее поставьте точку останова или выведите значение через Сообщить() перед выводом области — так вы поймёте, доходит ли значение до кода печати.
Если значение в коде есть, а на бумаге его нет, проблема в макете: неверный тип заполнения ячейки, параметр добавлен в другую область или область выводится из другого макета. Если значения нет уже в коде — проблема в источнике данных: запросе, выборке или способе получения дополнительного реквизита.
Что важно запомнить
Своё поле добавляется в три шага: параметр в макете, присваивание значения в коде печати, проверка на реальной печати. Работайте с копией шаблона, сверяйте имена параметров посимвольно и тестируйте на самом длинном значении.
Частые вопросы
Можно ли добавить поле в шаблон этикетки без конфигуратора?
Да, если конфигурация содержит типовой редактор шаблонов этикеток (УТ 11, Розница, ERP, КА). Там поля добавляются из списка доступных. Если нужного поля в списке нет — без доработки кода не обойтись.
Почему на печати вместо значения выводится текст в квадратных скобках?
Это значит, что параметру в макете не присвоено значение в коде: либо строка присваивания отсутствует, либо имя параметра в коде отличается от имени в макете. Сверьте оба имени посимвольно.
Как вывести в этикетке дополнительный реквизит номенклатуры?
Дополнительные реквизиты хранятся в табличной части «ДополнительныеРеквизиты» объекта. В коде печати найдите нужную строку по свойству и передайте её значение параметру макета. В некоторых типовых конфигурациях допреквизиты уже доступны в редакторе шаблонов как отдельные поля.
Пропадёт ли моё поле после обновления конфигурации?
Шаблоны из справочника «Шаблоны этикеток и ценников» при обновлении сохраняются. Правки встроенных макетов и кода пропадут, если конфигурация обновляется полностью без сравнения и объединения. Поэтому доработки делайте в копии макета и по возможности выносите код в расширение.
Можно ли добавить поле, значение которого вводится вручную при печати?
Да. В типовых редакторах есть поле произвольного текста, а в самописных решениях можно перед печатью запросить значение у пользователя (ВвестиСтроку или поле на форме) и передать его в параметр макета.
Почему после добавления поля штрихкод перестал сканироваться?
Новое поле, скорее всего, сжало или перекрыло область штрихкода, и его графика исказилась. Уменьшите шрифт нового поля, сместите его в свободную зону макета и проверьте этикетку сканером после каждого изменения размеров.