Как вывести процент скидки в шаблоне ценника 1С:УТ 11.4?

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

При работе в конфигурации 1С:Управление торговлей 11.4 пользователи часто сталкиваются с необходимостью кастомизации ценников. Одной из самых популярных задач является вывод процента скидки, который рассчитывается на основе текущей цены и «старой» (дополнительной) цены. Несмотря на то что в конструкторе шаблонов доступны поля Цена и Цена (дополнительно), типовой функционал не позволяет прописывать математические формулы непосредственно в ячейках макета.

В этой статье мы подробно разберем, почему эта задача не решается простым редактированием шаблона в пользовательском режиме, и рассмотрим эффективные способы добавления автоматического расчета скидки.

Анализ проблемы: почему в УТ 11.4 нет поля «Скидка»?

Проанализируем ситуацию: в отличие от конфигурации «1С:Розница 2», где система компоновки данных (СКД) для ценников доступна для редактирования пользователем, в УТ 11.4 архитектура системы печати этикеток более закрытая. Список доступных полей жестко ограничен набором данных, который формирует обработка ПечатьЭтикетокИЦенников.

Попытки прописать формулу вида 100*(1-Цена/ЦенаДоп) прямо в параметрах текстовой ячейки шаблона не приведут к успеху, так как система ожидает там только идентификатор поля, а не выражение. Поэтому нам необходимо «внедрить» новое поле в сам источник данных.

Решение 1: Использование механизма расширений (рекомендуемый способ)

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

  1. Создадим новое расширение или используем существующее.
  2. Добавим в расширение обработку ПечатьЭтикетокИЦенников.
  3. Найдем основную Схему компоновки данных (СКД), которая отвечает за формирование полей для печати.
  4. Перейдем на вкладку Вычисляемые поля. Именно здесь мы можем добавить наше собственное поле, которое будет доступно в конструкторе шаблонов.

Добавим поле со следующими параметрами:

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

Решение 2: Редактирование через Конфигуратор (прямое изменение)

Если вы не используете расширения, можно внести изменения непосредственно в код программы. Выясним, где именно находится нужная нам логика. Основная схема компоновки данных обычно зашита внутри обработки ПечатьЭтикетокИЦенников.

Проанализируем структуру СКД в конфигураторе. Вам нужно найти набор данных (обычно это запрос), который собирает информацию о ценах. Чтобы добавить расчет скидки, можно модифицировать сам текст запроса:


// Пример добавления поля в текст запроса СКД
ВЫБРАТЬ
    ...,
    ВЫБОР
        КОГДА ЦеныДополнительные.Цена > 0
            ТОГДА (1 - ЦеныОсновные.Цена / ЦеныДополнительные.Цена) * 100
        ИНАЧЕ 0
    КОНЕЦ КАК ПроцентСкидки
ИЗ
    ...

Однако работа с вычисляемыми полями (как в Решении 1) через интерфейс СКД в конфигураторе является более гибкой, так как не требует глубокого изменения текста тяжелых типовых запросов.

Решение 3: Подключение внешней обработки печати

Рассмотрим ситуацию, когда вы не хотите менять конфигурацию вообще. В 1С предусмотрена возможность использования внешних обработок печати этикеток и ценников. Вы можете взять типовую обработку из дистрибутива конфигурации, сохранить ее как внешнюю (через Файл - Сохранить как...), внести изменения в ее СКД и подключить через раздел Администрирование — Печатные формы, отчеты и обработки.

Это позволит вам:

Важные нюансы при настройке макета

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

  1. Выделите ячейку с параметром ПроцентСкидки.
  2. В свойствах выберите поле Формат.
  3. В конструкторе формата установите количество знаков после запятой (например, 0) и добавьте префикс «-» или постфикс «%».

Важный момент: Проверьте, чтобы в запросе или вычисляемом поле стояла проверка на деление на ноль (ЦенаДополнительно <> 0). В противном случае, если для товара не задана дополнительная цена, печать ценников может аварийно завершиться с ошибкой.

Заключение

Мы выяснили причину, по которой расчет процента скидки невозможен «из коробки» в УТ 11.4 — это программное ограничение доступа к правке СКД в пользовательском режиме. Наиболее корректным и современным способом решения задачи является добавление вычисляемого поля через Расширение. Это сохраняет чистоту конфигурации и дает пользователю удобный инструмент, который работает автоматически при каждом изменении цен.

← На главную