Зачастую перед специалистами по автоматизации встает маркетинговая задача: необходимо поощрить покупателя подарком, если он совершил покупку на крупную сумму (например, от 5 000 рублей), при этом не воспользовавшись значительными скидками (менее 15%). В типовом функционале 1С:Розница 2.2 подобные условия требуют внимательного проектирования, так как механизм скидок ориентирован на изменение цены, а не на изменение состава номенклатуры документа.
Рассмотрим первый, наиболее «коробочный» подход — использование механизма вытеснения в настройках скидок. Этот метод подойдет, если логика достаточно проста и вписывается в стандартные правила.
Таким образом, если условия «Группы 1» (например, итоговая скидка 15%) не выполняются, система перейдет к исполнению условия для подарка. Обратите внимание: этот метод требует тщательного тестирования на суммарный процент скидок по чеку, так как скидки рассчитываются по каждой строке документа отдельно.
Если задача требует строгой проверки суммарной скидки по всему документу, типовых настроек может не хватить. В этом случае наиболее надежным решением станет использование подписки на событие ОбработкаПроведения для документа ЧекККМ.
Разберем логику программной реализации:
ОбработкаПроведения мы получаем доступ к табличной части документа.РС.ЦеныНоменклатуры.Примерная логика обработки данных:
// Пример псевдокода для реализации проверки в подписке
Процедура ПроверитьУсловияПодарка(ДокументСсылка)
СуммаДокумента = ДокументСсылка.СуммаДокумента;
Если СуммаДокумента > 5000 Тогда
ИтоговаяСкидка = РасчитатьПроцентСкидки(ДокументСсылка);
Если ИтоговаяСкидка < 15 Тогда
ДобавитьПодарокВЧек(ДокументСсылка);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Если вы не хотите вносить изменения в конфигурацию, можно воспользоваться механизмом внешних обработок. Внешняя обработка может быть подключена к кассовому узлу и запускаться при нажатии кнопки «Оплатить».
Преимущества данного метода:
При реализации любого из способов важно помнить о нюансах работы с числами в 1С:
Во-первых, всегда используйте базовую цену. Не полагайтесь на сумму скидки, которая уже «сидит» в документе, так как после применения нескольких 15 различных видов скидок возникают погрешности округления. Сравнивайте отношение итоговой суммы к сумме по базовым ценам.
Во-вторых, при суммировании скидок (9%, 5% и т.д.) всегда проверяйте точность вычислений. Если в итоге получается 15.004%, система может отказать в подарке. Мы рекомендуем использовать метод Окр(Число, 2) при сравнении, чтобы исключить подобные технические ошибки.
Итог: Если стандартных групп «Вытеснения» недостаточно, лучшим выбором будет использование расширения конфигурации с подпиской на событие. Это позволит гибко управлять составом чека и гарантирует, что подарок будет выдан именно в тот момент, когда выполнены все маркетинговые условия вашей компании.