Как в макет ценника добавить дату ценника и настроить её формат в 1С:Розница

Программист 1С v8.3 (Управляемые формы) 1С:Розница Управленческий учет Торговля и дистрибуция
← На главную

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

Поиск и добавление нужного поля в шаблон

Для начала разберем, откуда программа берет информацию о дате. В типовой обработке ПечатьЭтикетокИЦенников предусмотрено поле, которое фиксирует момент последнего изменения записи в регистре цен. Проанализируем алгоритм добавления этого поля в макет:

  1. Откроем обработку печати ценников (обычно находится в разделе «Продажи» или «Закупки»).
  2. Перейдем в режим редактирования шаблона ценника или загрузим готовый вариант, используя набор готовых макетов этикеток.
  3. В правой части окна редактора, в списке «Доступные поля», найдем параметр ДатаПоследнегоИзмененияЦены. Именно это поле отвечает за вывод даты установки цены.
  4. Перетащим это поле в нужную ячейку нашего макета.

После добавления многие пользователи замечают, что дата выводится вместе со временем (например, 15.05.2023 14:30:15). Для ценника это избыточная информация, которая загромождает пространство. Разберемся, как это исправить.

Настройка формата даты и исправление типа заполнения

Самая частая проблема заключается в том, что установленный в свойствах ячейки «Формат» игнорируется программой. Выясним причину: это происходит из-за некорректного режима заполнения ячейки. В 1С существует три режима: «Текст», «Параметр» и «Шаблон».

Важное правило: Если вы хотите использовать стандартные механизмы форматирования 1С (через конструктор форматной строки), ячейка должна иметь тип заполнения Параметр.

Рассмотрим пошагово, как настроить отображение даты в формате «день.месяц.год» (дд.мм.гггг):

  1. Выделим ячейку в макете, куда мы добавили дату.
  2. Нажмем клавишу F4, чтобы открыть палитру свойств ячейки.
  3. В поле «Заполнение» вместо значения «Шаблон» выберем Параметр.
  4. В поле «Параметр» убедимся, что написано ДатаПоследнегоИзмененияЦены. Обратите внимание: в режиме параметра квадратные скобки [] ставить не нужно.
  5. Найдем свойство «Формат». Нажмем на кнопку с тремя точками, чтобы открыть конструктор форматной строки.
  6. На вкладке «Дата» выберем нужный вид (например, локальный формат даты) или вручную пропишем строку: ДФ=dd.MM.yyyy.

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

Как разделить рубли и копейки (копейки сверху и подчеркнуты)

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

Проанализируем ситуацию: стандартное поле Цена выводит число целиком. Чтобы разделить его, нам потребуется либо доработка кода, либо хитрость с макетом. Если редактор позволяет использовать вычисляемые выражения, можно попробовать разделить цену. Однако чаще всего приходится прибегать к следующему методу в макете:

  1. Вместо одной большой ячейки для цены создадим сложную структуру из нескольких мелких ячеек.
  2. В левой (большой) ячейке будем выводить рубли.
  3. В правой верхней (маленькой) ячейке — копейки.

Для программного разделения в коде обработки печати (если вы имеете доступ к конфигуратору) используется следующая логика:


// Пример разделения цены на части для вывода в разные параметры
ЦелаяЧасть = Цел(ТекущаяЦена);
ДробнаяЧасть = (ТекущаяЦена - ЦелаяЧасть) * 100;

// Если нужно гарантировать две цифры для копеек (например, "05")
СтрокаКопеек = Формат(ДробнаяЧасть, "ЧЦ=2; ЧВН=");

В самом макете для ячейки с копейками установите шрифт меньшего размера, подчеркивание (свойство «Шрифт» -> «Подчеркнутый») и выравнивание по вертикали «Верх».

Что делать, если пропало поле «Предыдущая цена»?

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

Использование программных методов для сложных задач

Если стандартных полей макета недостаточно (например, нужна дата конкретного документа «Установка цен номенклатуры», а не просто дата изменения записи), потребуется небольшая модификация программного кода в функции заполнения данных печати. Рассмотрим пример, как можно получить дату документа-основания:


// В коде формирования данных для печати
Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|	ЦеныНоменклатуры.Регистратор.Дата КАК ДатаДокумента
|ИЗ
|	РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
|ГДЕ
|	ЦеныНоменклатуры.Номенклатура = &Номенклатура
|	И ЦеныНоменклатуры.ВидЦены = &ВидЦены";

// Далее полученная ДатаДокумента передается в структуру данных макета

Подведем итог: для большинства задач по настройке даты достаточно правильно выставить тип заполнения Параметр и настроить Формат в свойствах ячейки. Это избавит вас от лишних символов времени и позволит привести ценник к профессиональному виду без привлечения программистов.

← На главную