При настройке системы лояльности в УТ 11.4 часто возникают задачи, требующие контроля общего количества проданных товаров по акции. В частности, пользователей интересует вопрос: как ограничить продажу конкретного товара со скидкой 10%, если общее количество таких товаров за весь период акции не должно превышать 10 штук?
Давайте разберем эту задачу, проанализируем возможности типового функционала и определим, как реализовать подобное ограничение программными методами.
Первым делом важно прояснить: типовые настройки справочника Скидки (наценки) в УТ 11.4 предназначены для работы с условиями, которые легко проверяются в рамках текущей транзакции (чека) или через накопительные карты клиента. Стандартные настройки позволяют ограничить:
За разовый объем продаж).Однако, в типовой конфигурации отсутствует штатный механизм «глобального счетчика», который бы в реальном времени отслеживал продажи конкретной номенклатуры по всей базе для конкретной акции. Следовательно, если ваша задача — ограничить продажу до 10 штук всего за период акции, встроенных «галочек» для этого недостаточно.
Чтобы реализовать данную логику, мы воспользуемся механизмом Внешние обработки (скидки и наценки). Этот инструмент позволяет передать управление расчетом скидки на сторону внешнего файла .epf.
Рассмотрим, что именно нам предстоит сделать для достижения цели:
Скидки (наценки). В настройках скидки необходимо выбрать способ предоставления Скидка (наценка) рассчитывается внешним обработчиком.В модуле внешней обработки ключевым методом является расчет суммы скидки. Давайте проанализируем, как может выглядеть структура такой функции:
Функция РассчитатьСкидку(Параметры) Экспорт
// 1. Получаем текущее количество товара в документе
ТекущееКоличество = Параметры.Товар.Количество;
// 2. Получаем накопленное количество из нашего регистра
ПроданоРанее = ПолучитьПродажиПоАкции(Параметры.Акция);
// 3. Проверяем лимит
Если (ПроданоРанее + ТекущееКоличество) <= 10 Тогда
// Возвращаем процент скидки 10%
Возврат 10;
Иначе
// Лимит исчерпан
Возврат 0;
КонецЕсли;
КонецФункции
Обратите внимание: для корректной работы системы необходимо предусмотреть момент записи данных в регистр. Это лучше всего делать при проведении документа ЧекККМ или при закрытии кассовой смены, чтобы накопленные данные всегда были актуальны.
Если задача менее строгая и допустимо ограничить 10 штук на одного покупателя в одном чеке, то мы можем обойтись без программирования. Для этого выполните следующее:
Скидки (наценки).Условия предоставления.За разовый объем продаж.Этот метод не требует привлечения разработчика, однако он не контролирует общее количество товаров за весь период проведения акции.
Мы выяснили, что для решения задачи в УТ 11.4 существуют два пути. Первый — простой, но ограниченный (контроль в рамках одного чека). Второй — профессиональный, подразумевающий написание внешней обработки для работы с произвольными регистрами учета. Рекомендуем начать с уточнения требований бизнеса: действительно ли нужен жесткий лимит на всю базу или достаточно ограничения в рамках одной покупки.