В процессе работы с программой 1С:Розница (особенно в релизах ветки 2.2) пользователи часто сталкиваются с необходимостью вывода на ценник даты, когда была установлена текущая цена. Это требование может быть обусловлено как внутренним регламентом магазина, так и законодательными нормами. Однако стандартный редактор шаблонов не всегда интуитивно понятен, особенно когда речь заходит о форматировании данных. Рассмотрим подробно, как решить задачу добавления даты и исправить типичные ошибки отображения.
Для начала разберем, откуда программа берет информацию о дате. В типовой обработке ПечатьЭтикетокИЦенников предусмотрено поле, которое фиксирует момент последнего изменения записи в регистре цен. Проанализируем алгоритм добавления этого поля в макет:
ДатаПоследнегоИзмененияЦены. Именно это поле отвечает за вывод даты установки цены.После добавления многие пользователи замечают, что дата выводится вместе со временем (например, 15.05.2023 14:30:15). Для ценника это избыточная информация, которая загромождает пространство. Разберемся, как это исправить.
Самая частая проблема заключается в том, что установленный в свойствах ячейки «Формат» игнорируется программой. Выясним причину: это происходит из-за некорректного режима заполнения ячейки. В 1С существует три режима: «Текст», «Параметр» и «Шаблон».
Важное правило: Если вы хотите использовать стандартные механизмы форматирования 1С (через конструктор форматной строки), ячейка должна иметь тип заполнения Параметр.
Рассмотрим пошагово, как настроить отображение даты в формате «день.месяц.год» (дд.мм.гггг):
Параметр.ДатаПоследнегоИзмененияЦены. Обратите внимание: в режиме параметра квадратные скобки [] ставить не нужно.ДФ=dd.MM.yyyy.После этих манипуляций программа будет обрезать время и выводить только чистую дату. Если вы оставите режим «Шаблон», 1С будет воспринимать содержимое ячейки как произвольную строку и функции форматирования к ней не применятся.
Еще один популярный вопрос касается эстетического оформления цены. Часто требуется сделать рубли крупным шрифтом, а копейки — маленьким и приподнятым к верхнему краю. Поскольку макет ценника — это фактически табличный документ, мы можем использовать свойства ячеек для достижения этого эффекта.
Проанализируем ситуацию: стандартное поле Цена выводит число целиком. Чтобы разделить его, нам потребуется либо доработка кода, либо хитрость с макетом. Если редактор позволяет использовать вычисляемые выражения, можно попробовать разделить цену. Однако чаще всего приходится прибегать к следующему методу в макете:
Для программного разделения в коде обработки печати (если вы имеете доступ к конфигуратору) используется следующая логика:
// Пример разделения цены на части для вывода в разные параметры
ЦелаяЧасть = Цел(ТекущаяЦена);
ДробнаяЧасть = (ТекущаяЦена - ЦелаяЧасть) * 100;
// Если нужно гарантировать две цифры для копеек (например, "05")
СтрокаКопеек = Формат(ДробнаяЧасть, "ЧЦ=2; ЧВН=");
В самом макете для ячейки с копейками установите шрифт меньшего размера, подчеркивание (свойство «Шрифт» -> «Подчеркнутый») и выравнивание по вертикали «Верх».
Иногда при редактировании шаблона пользователи обнаруживают, что поле ПредыдущаяЦена (или «Старая цена») исчезло из списка доступных. Выясним, почему это происходит. Данное поле является динамическим и появляется только тогда, когда выполняются определенные условия в самой обработке печати:
ЦеныНоменклатуры, и обработка не передает этот параметр в макет.Если стандартных полей макета недостаточно (например, нужна дата конкретного документа «Установка цен номенклатуры», а не просто дата изменения записи), потребуется небольшая модификация программного кода в функции заполнения данных печати. Рассмотрим пример, как можно получить дату документа-основания:
// В коде формирования данных для печати
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЦеныНоменклатуры.Регистратор.Дата КАК ДатаДокумента
|ИЗ
| РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
|ГДЕ
| ЦеныНоменклатуры.Номенклатура = &Номенклатура
| И ЦеныНоменклатуры.ВидЦены = &ВидЦены";
// Далее полученная ДатаДокумента передается в структуру данных макета
Подведем итог: для большинства задач по настройке даты достаточно правильно выставить тип заполнения Параметр и настроить Формат в свойствах ячейки. Это избавит вас от лишних символов времени и позволит привести ценник к профессиональному виду без привлечения программистов.