Как в «1С:Розница 2.2» настроить выдачу подарка при выполнении условий по сумме чека и отсутствию скидок?

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

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

Вариант 1: Настройка с помощью групп совместного применения

Рассмотрим первый, наиболее «коробочный» подход — использование механизма вытеснения в настройках скидок. Этот метод подойдет, если логика достаточно проста и вписывается в стандартные правила.

  1. Перейдем в раздел Маркетинг — Скидки (наценки).
  2. Создадим группу скидок, в которой зададим правило Сложение или Умножение для всех наших действующих автоматических скидок. Это позволит системе корректно рассчитывать итоговый процент скидки по каждой позиции.
  3. Создадим вторую группу скидок с типом Вытеснение.
  4. В эту группу включим:
    • В приоритетную роль — «Группу 1» (где находятся все ваши действующие 15 видов скидок).
    • Во второстепенную роль — скидку или сообщение о выдаче подарка.

Таким образом, если условия «Группы 1» (например, итоговая скидка 15%) не выполняются, система перейдет к исполнению условия для подарка. Обратите внимание: этот метод требует тщательного тестирования на суммарный процент скидок по чеку, так как скидки рассчитываются по каждой строке документа отдельно.

Вариант 2: Использование подписки на событие

Если задача требует строгой проверки суммарной скидки по всему документу, типовых настроек может не хватить. В этом случае наиболее надежным решением станет использование подписки на событие ОбработкаПроведения для документа ЧекККМ.

Разберем логику программной реализации:

  1. В событии ОбработкаПроведения мы получаем доступ к табличной части документа.
  2. Сравниваем текущую цену продажи с ценой, записанной в РС.ЦеныНоменклатуры.
  3. Считаем суммарное отклонение. Если оно менее 15% и сумма чека превышает 5 000 рублей, мы программно добавляем строку с товаром-подарком.

Примерная логика обработки данных:


// Пример псевдокода для реализации проверки в подписке
Процедура ПроверитьУсловияПодарка(ДокументСсылка)
    СуммаДокумента = ДокументСсылка.СуммаДокумента;
    Если СуммаДокумента > 5000 Тогда
        ИтоговаяСкидка = РасчитатьПроцентСкидки(ДокументСсылка);
        Если ИтоговаяСкидка < 15 Тогда
            ДобавитьПодарокВЧек(ДокументСсылка);
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Вариант 3: Внешняя обработка обслуживания

Если вы не хотите вносить изменения в конфигурацию, можно воспользоваться механизмом внешних обработок. Внешняя обработка может быть подключена к кассовому узлу и запускаться при нажатии кнопки «Оплатить».

Преимущества данного метода:

На что обратить внимание при расчете скидки?

При реализации любого из способов важно помнить о нюансах работы с числами в 1С:

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

Во-вторых, при суммировании скидок (9%, 5% и т.д.) всегда проверяйте точность вычислений. Если в итоге получается 15.004%, система может отказать в подарке. Мы рекомендуем использовать метод Окр(Число, 2) при сравнении, чтобы исключить подобные технические ошибки.

Итог: Если стандартных групп «Вытеснения» недостаточно, лучшим выбором будет использование расширения конфигурации с подпиской на событие. Это позволит гибко управлять составом чека и гарантирует, что подарок будет выдан именно в тот момент, когда выполнены все маркетинговые условия вашей компании.

← На главную