При оформлении торговых залов и подготовке товаров к продаже правильное отображение информации на ценниках играет ключевую роль. Часто стандартных возможностей платформы «1С:Предприятие 8» в пользовательском режиме оказывается недостаточно, чтобы решить специфические задачи бизнеса. Например, когда необходимо вывести длинное описание из поля «Полное наименование» дополнительного реквизита вместо его краткого представления или когда дата производства на ценнике упорно печатается со временем в секундах, портя внешний вид макета.
В этой статье мы подробно разберем причины возникновения данных сложностей в типовых конфигурациях (таких как «1С:Управление торговлей», «1С:ERP Управление предприятием», «1С:Комплексная автоматизация», «1С:Розница» и «1С:УНФ») и рассмотрим по шагам все возможные способы решения этих проблем — от простых пользовательских настроек до программной доработки системы.
Выясним причину, почему система по умолчанию выводит только краткое наименование дополнительного реквизита с типом значения «Дополнительное значение». При создании такого реквизита платформа использует подчиненный справочник ЗначенияСвойствОбъектов. Когда мы добавляем этот реквизит на ценник через стандартный редактор шаблонов, система обращается к строковому представлению объекта ссылки, которым по умолчанию всегда является реквизит Наименование.
Пользовательский визуальный конструктор шаблонов ценников не позволяет напрямую «достучаться» до вложенных реквизитов объектов (таких как ПолноеНаименование). Рассмотрим три эффективных метода решения этой задачи.
Способ 1. Настройка схемы компоновки данных (СКД) макета (без программирования)
Современные шаблоны ценников и этикеток в 1С функционируют на базе Системы компоновки данных (СКД). Мы можем изменить схему получения данных, чтобы сделать полное наименование доступным для выбора в макете.
Номенклатура.[ИмяВашегоДопРеквизита].ПолноеНаименование КАК ДопРеквизитПолноеНаименование
ДопРеквизитПолноеНаименование. Просто перетащим его в нужную ячейку макета ценника.Способ 2. Программная замена через расширение конфигурации (рекомендуемый метод для разработчиков)
Чтобы не снимать конфигурацию с поддержки и гарантировать корректное обновление базы в будущем, напишем расширение для обработки ПечатьЭтикетокИЦенников. Мы перехватим таблицу подготовленных к печати данных и принудительно подставим полное наименование вместо краткого.
Проанализируем процедуру заполнения данных перед выводом на печать и добавим следующий код в модуль нашего расширения:
&Вместо("ПодготовитьТаблицуТоваров")
Процедура Расш_ПодготовитьТаблицуТоваров(ТаблицаТоваров)
// Выполняем типовой алгоритм подготовки данных
ПродолжитьВызов(ТаблицаТоваров);
// Обходим подготовленную таблицу и заменяем краткое наименование на полное
Для Каждого СтрокаДанных Из ТаблицаТоваров Цикл
Если ЗначениеЗаполнено(СтрокаДанных.ДополнительныйРеквизитСсылка) Тогда
// Извлекаем ПолноеНаименование из справочника ЗначенияСвойствОбъектов
СтрокаДанных.ДополнительныйРеквизитПредставление = СтрокаДанных.ДополнительныйРеквизитСсылка.ПолноеНаименование;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Данный код абсолютно безопасен, работает в фоновом режиме и автоматически подставляет нужный длинный текст во все ценники, где используется данный реквизит.
Способ 3. Изменение типа реквизита на текстовый (быстрый обходной путь)
Если вам не требуется использовать значения данного реквизита для сложной аналитики, отборов в отчетах или группировок, мы можем отказаться от типа значения «Дополнительное значение». Создадим дополнительный реквизит с типом «Строка» (установив длину, например, 1024 символа). Строковые реквизиты по умолчанию выводятся на ценник полностью, не требуя никаких дополнительных манипуляций в конфигураторе.
По умолчанию в типовых конфигурациях 1С длина наименования в справочнике ЗначенияСвойствОбъектов ограничена 50 или 100 символами. Если вам необходимо сохранить тип реквизита «Дополнительное значение», но стандартной длины текстового поля критически не хватает, мы можем увеличить длину наименования.
Метод 1. Использование расширения конфигурации (безопасно)
Начиная с версии платформы 1С:Предприятие 8.3.22 (и при режиме совместимости от 8.3.17 и выше), разработчики могут изменять длину стандартных реквизитов и наименований справочников через расширения.
ЗначенияСвойствОбъектов, кликнем по нему правой кнопкой мыши и выберем «Добавить в расширение».Наименование и откроем его свойства (F4).Метод 2. Прямое изменение в конфигураторе (требует снятия с поддержки)
Если используемая вами платформа 1С или режим совместимости не позволяют вносить изменения в длину наименований через расширения, выполним следующие шаги:
ЗначенияСвойствОбъектов установим правило: «Объект поставщика редактируется с сохранением поддержки».Разберем ситуацию с датой производства. Почему стандартная настройка формата ячейки в ценнике (через свойства ячейки) не убирает время? При формировании ценников обработка печати преобразует все дополнительные реквизиты в текстовый формат на сервере перед выводом в макет. Таким образом, в ячейку передается уже готовый текст вида «15.10.2025 00:00:00». Макет ценника воспринимает это значение как строку, а не как дату, из-за чего стандартные маски форматирования даты перестают работать.
Посмотрим, какими способами мы можем привести дату к красивому виду (например, «Октябрь 2025» или просто «10.2025»).
Способ 1. Применение форматной строки в СКД макета
Наиболее правильный способ решения — отформатировать значение даты еще на этапе работы Системы компоновки данных, до того как оно превратится в плоский текст.
ДатаПроизводства).ДФ='MM.yyyy'ДФ='MMMM yyyy'ДФ=dd.MM.yyyyСпособ 2. Использование выражений непосредственно в ячейке шаблона
Если ваша конфигурация поддерживает вычисление простых выражений платформы внутри параметров макета, мы можем написать формулу форматирования прямо в тексте ячейки ценника в квадратных скобках:
[Формат(Номенклатура.[ДатаПроизводства], "ДФ='MM.yyyy'")]
При выводе макета парсер обработает эту функцию и вернет строковое значение в красивом формате.
Способ 3. Программное форматирование даты в коде обработки печати
Если вы хотите жестко зафиксировать вывод даты производства для всех ценников на уровне программного кода, найдем в модуле обработки печати ценников место заполнения параметров и применим функцию Формат() к значению реквизита:
// Проверим заполнение даты производства
ДатаПроизводстваЗначение = ВыборкаДанных.ДатаПроизводства;
Если ЗначениеЗаполнено(ДатаПроизводстваЗначение) Тогда
Если ТипЗнч(ДатаПроизводстваЗначение) = Тип("Дата") Тогда
// Принудительно форматируем дату в вид "Месяц Год"
ОбластьМакета.Параметры.ДатаПроизводства = Формат(ДатаПроизводстваЗначение, "ДФ='MMMM yyyy'");
Иначе
// Если значение пришло в виде строки, пробуем преобразовать его
Попытка
ДатаИзСтроки = Дата(ДатаПроизводстваЗначение);
ОбластьМакета.Параметры.ДатаПроизводства = Формат(ДатаИзСтроки, "ДФ='MMMM yyyy'");
Исключение
// В случае ошибки выводим исходную строку или оставляем поле пустым
ОбластьМакета.Параметры.ДатаПроизводства = ДатаПроизводстваЗначение;
КонецПопытки;
КонецЕсли;
КонецЕсли;
Этот код гарантирует, что вне зависимости от настроек макета пользователем, на печать всегда будет выводиться аккуратная, презентабельная дата производства без лишней информации о часах и секундах.
Мы подробно проанализировали внутренние механизмы работы платформы «1С:Предприятие 8» с дополнительными реквизитами при печати ценников. Как видим, ограничения стандартного визуального редактора легко обходятся с помощью точечной настройки Системы компоновки данных (СКД) или написания небольших программных модулей в расширениях конфигурации. Применяя данные подходы, вы сможете добиться идеального отображения любой текстовой и графической информации на ценниках вашей компании.