Как исключить определенный сегмент номенклатуры из расчета скидок в 1С:УТ 11 и Рознице

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

При настройке маркетинговых акций в программах 1С:Предприятие (Управление торговлей 11, Розница 2, ERP) часто возникает задача: применить скидку на весь ассортимент, за исключением конкретной группы товаров или сегмента. Это актуально для товаров с низкой маржой, когда необходим анализ наценки, подакцизной продукции или позиций, на которые цена и так установлена на минимальном уровне (для автоматической защиты цен пригодится контроль минимальных цен в РМК для 1С). Разберем подробно, какими способами можно реализовать это исключение, проанализируем риски каждого метода и выберем наиболее стабильный вариант.

Метод 1. Использование групп совместного применения с типом «Вытеснение»

Рассмотрим самый распространенный и корректный с точки зрения логики системы способ — настройку приоритетов внутри групп совместного применения скидок. В 1С скидки редко существуют сами по себе; они объединяются в группы, для которых важен подробный отчет по скидкам и которые определяют, как скидки будут взаимодействовать друг с другом: складываться, вытесняться или выбираться по максимальному значению.

Для реализации исключения выполним следующие шаги:

  1. Перейдем в справочник Скидки (наценки).
  2. Создадим новую группу и установим для нее вариант совместного применения Вытеснение.
  3. Внутри этой группы создадим две записи:
    • Первая скидка (Приоритет 1): Скидка 0%, которая действует только на наш исключаемый сегмент номенклатуры.
    • Вторая скидка (Приоритет 2): Основная скидка (например, 10%), которая действует на всю номенклатуру, включая комплекты товаров, или другой широкий сегмент.

Проанализируем ситуацию: когда система начинает расчет, она сначала обращается к скидке с наивысшим приоритетом. Если товар входит в исключаемый сегмент, срабатывает первая скидка (0%). Так как группа настроена на Вытеснение, расчет на этом останавливается, и основная скидка 10% к этому товару уже не применяется. Если же товар не входит в этот сегмент, система пропускает первую настройку и применяет основную скидку.

Метод 2. Настройка отрицательных фильтров в условиях предоставления

В современных версиях 1С (УТ 11.4+ и Розница 2.3+) механизм отборов стал более гибким. Мы можем настроить исключение внутри самой карточки скидки, не прибегая к созданию дополнительных «нулевых» скидок. Разберем, как это сделать через конструктор условий.

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

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

Метод 3. Использование ценовых групп (для 1С:Розница)

Как показывает практика, в некоторых версиях конфигурации Розница 2.3 система может блокировать запись скидки с нулевым процентом. В таком случае на помощь приходят ценовые группы. Проанализируем этот алгоритм:

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

Почему метод «Сложение скидок +10% и -10%» — это «мина замедленного действия»?

Разберем ситуацию, предложенную в одном из сообщений форума: создать группу Сложение, где одна скидка дает +10%, а вторая (для исключаемого сегмента) дает -10% (наценку). На первый взгляд, в сумме должен получиться 0, но это опасное заблуждение.

Выясним причину риска. Все дело в последовательности вычислений и округлениях. Рассмотрим пример расчета в codebig:


// Математическая ловушка последовательного применения
Цена_Базовая = 100.00;
Скидка_Процент = 10;
Наценка_Процент = 10;

// Шаг 1: Применяем скидку
Цена_После_Скидки = Цена_Базовая - (Цена_Базовая * Скидка_Процент / 100); // 90.00
// Шаг 2: Применяем "компенсирующую" наценку к результату
Цена_Итоговая = Цена_После_Скидки + (Цена_После_Скидки * Наценка_Процент / 100); // 90 + 9 = 99.00

Как мы видим, итоговая цена составила 99 рублей вместо исходных 100. Если в настройках системы стоит флаг «Применять скидки последовательно», вы гарантированно получите расхождения. Даже если скидки складываются арифметически (10% - 10% = 0%), на больших объемах данных и при использовании сложных округлений до копеек могут возникать ошибки в чеках ККМ, что приведет к невозможности пробития чека из-за расхождения сумм по строкам и по итогу документа.

Метод 4. Ограничение через максимальный процент скидки

Для того чтобы гарантированно защитить определенный сегмент товаров от любых маркетинговых активностей (даже ошибочно настроенных в будущем), рекомендуется использовать механизм Максимальный процент скидки. Этот инструмент является «предохранителем» в системе 1С — выявить товары с низкой маржой для установки ограничений поможет отчет для анализа прибыли и наценки товаров.

Посмотрим, как его настроить:

  1. В карточке сегмента номенклатуры или в настройках правил ценообразования (в зависимости от версии конфигурации) найдем поле «Максимальный процент скидки».
  2. Установим значение 0%.
  3. Теперь, даже если на этот товар будет действовать несколько автоматических скидок на общую сумму 50%, система при расчете в документе «сбросит» их значение до 0%, так как сработает ограничение на уровне мастер-данных.

Важные нюансы работы с сегментами

Проанализируем техническую сторону работы сегментов. В 1С существует три способа формирования сегмента номенклатуры:

1. Формировать вручную: самый стабильный, но трудозатратный метод.

2. Периодическое обновление: оптимальный вариант. Система раз в сутки (или по расписанию) обновляет состав сегмента.

3. Формировать динамически: самый опасный вариант для расчета скидок.

При использовании динамического сегмента, в момент открытия каждого чека или подбора товара, система выполняет сложный SQL-запрос к базе данных, чтобы проверить, входит ли товар в сегмент прямо сейчас. Если в чеке много позиций, а база данных большая, это приведет к значительным задержкам (зависанию) рабочего места кассира (РМК). Мы рекомендуем всегда использовать сегменты с периодическим обновлением для целей расчета скидок. Для ускорения обработки данных можно применить расширение для оптимизации расчета скидок.

Резюме

Подводя итог, для исключения сегмента из скидок в 1С:УТ 11 мы рекомендуем использовать комбинацию методов: объединение скидок в группу Вытеснение с приоритетной нулевой скидкой и установку Максимального процента скидки 0% для особо важных позиций. Это обеспечит корректность математических расчетов и защитит от человеческого фактора при настройке будущих акций.

← На главную