Переход на новые редакции программных продуктов 1С часто сопровождается изменением привычных механизмов работы. Одной из таких ситуаций, с которой сталкиваются пользователи и специалисты при миграции с 1С:Розница 2.3 на 1С:Розница 3.0 (базирующуюся на коде 1С:УНФ), является настройка печатных форм, в частности — ценников и этикеток. В старых версиях механизм шаблонов казался более интуитивным, и при смене интерфейса возникает вопрос: как объединить несколько полей, например, «Артикул» и «Наименование», в одной ячейке макета?
В этой статье мы подробно разберем, куда «исчез» шаблон, как настроить вывод данных штатными средствами платформы без программирования, и рассмотрим программные методы решения задачи для сложных случаев.
В макете ценника необходимо вывести информацию о товаре в одной строке (или в одной ячейке), объединив несколько реквизитов. Чаще всего требуется конструкция вида: «Артикул Товара» + «Наименование Товара». Если в редакторе просто выбрать параметр, выводится только одно значение. Нам же нужно понять, как склеить эти строки.
Многие пользователи ошибочно полагают, что в «Рознице 3.0» убрали возможность использования текстовых шаблонов в ячейках. На самом деле, этот функционал является частью самой платформы 1С:Предприятие и редактора табличных документов, поэтому исчезнуть он не мог. Изменился лишь подход к редактированию макетов внутри конфигурации.
Давайте разберем по шагам, как настроить объединение полей непосредственно в макете:
FillType, если интерфейс на английском).Номенклатура), и система подставит туда значение целиком.[] для обозначения переменных.Пример текста, который нужно написать в ячейке после переключения в режим шаблона:
[Артикул] [Номенклатура.Наименование]
Или, если вы хотите добавить поясняющий текст:
Арт: [Артикул], Товар: [Номенклатура]
Важно: Все, что находится внутри квадратных скобок, система будет воспринимать как параметры и пытаться найти их значения в источнике данных. Все, что снаружи скобок — это просто текст, который выведется на печать без изменений.
Архитектура «Розницы 3.0» активно использует Систему Компоновки Данных (СКД) для формирования этикеток. Это дает нам мощный инструмент — Пользовательские поля. Этот метод полезен, если вы не хотите менять макет (или он недоступен для глубокого редактирования), но можете настроить набор данных.
Рассмотрим, как это сделать:
Пример формулы для пользовательского поля:
Строка(Номенклатура.Артикул) + " " + Строка(Номенклатура.Наименование)
Здесь мы используем функцию Строка(), чтобы гарантировать, что оба значения будут приведены к строковому типу перед сложением. После создания такого поля, дайте ему понятный заголовок, например, ПолноеНаименованиеСАртикулом. Затем это новое поле можно выбрать в дереве доступных полей и перетащить в макет ценника как обычный параметр.
Иногда логика вывода слишком сложна для простого шаблона или пользовательского поля. Например, вам нужно выводить артикул только определенной группы товаров, или менять форматирование. В обсуждении на форуме предлагался именно программный подход.
Если мы говорим о вставке кода, то в современной разработке (особенно для конфигураций на поддержке) настоятельно рекомендуется использовать механизм Расширений конфигурации. Не следует править основной модуль конфигурации.
Суть метода заключается в перехвате момента, когда система заполняет параметры области макета, и подмене значения. Рассмотрим примерный алгоритм того, что нужно сделать в коде:
Пример кода, иллюстрирующий объединение строк (как предлагалось в обсуждении):
// Пример конкатенации строк
ТекстДляВывода = "";
// Проверяем, заполнен ли артикул, чтобы не выводить лишние пробелы
Если ЗначениеЗаполнено(Выборка.Артикул) Тогда
ТекстДляВывода = СокрЛП(Выборка.Артикул) + " ";
КонецЕсли;
ТекстДляВывода = ТекстДляВывода + СокрЛП(Выборка.Наименование);
// Присваиваем значение параметру области
ОбластьМакета.Параметры.НаименованиеТовара = ТекстДляВывода;
Обратите внимание на функцию СокрЛП(). Она удаляет лишние пробелы слева и справа от строки, что крайне важно при склеивании данных, чтобы текст на ценнике выглядел аккуратно.
Поскольку «Розница 3.0» построена на базе библиотек УНФ, механизмы печати там унифицированы. Скорее всего, вам придется искать процедуры в общих модулях, связанных с подсистемой «Печать» или «Торговое оборудование». Используйте расширение для переопределения метода заполнения данных печати.
Давайте проанализируем, почему возникает путаница. В версии 2.3 часто использовались предопределенные шаблоны, где логика была "зашита" жестче, но интерфейс настройки был проще для неискушенного пользователя. В версии 3.0 вам дается в руки полноценный конструктор.
Основные отличия, которые нужно учитывать:
Заполнение).Параметр, попытка написать туда формулу Артикул + " " + Наименование приведет к ошибке или выводу текста формулы, а не результата. Система будет искать параметр с таким длинным и странным именем. Именно переключение в Шаблон заставляет платформу вычислять содержимое.Для решения задачи вывода нескольких реквизитов в одном поле ценника в 1С:Розница 3.0 не обязательно прибегать к программированию. Рассмотрим приоритетность решений:
Используя эти методы, вы сможете гибко настраивать внешний вид ценников и этикеток, делая их информативными и удобными для покупателей.