Как настроить ограничение количества товара по акции в УТ 11.4?

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

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

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

Анализ типовых возможностей

Первым делом важно прояснить: типовые настройки справочника Скидки (наценки) в УТ 11.4 предназначены для работы с условиями, которые легко проверяются в рамках текущей транзакции (чека) или через накопительные карты клиента. Стандартные настройки позволяют ограничить:

  1. Количество товара в конкретном чеке (используя условие За разовый объем продаж).
  2. Скидку в зависимости от сегмента номенклатуры или карты лояльности.

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

Решение через внешние обработки

Чтобы реализовать данную логику, мы воспользуемся механизмом Внешние обработки (скидки и наценки). Этот инструмент позволяет передать управление расчетом скидки на сторону внешнего файла .epf.

Разбор процесса реализации по шагам

Рассмотрим, что именно нам предстоит сделать для достижения цели:

  1. Создание регистра накопления. Так как система не ведет учет «выбранного лимита» акции, нам необходимо создать свой регистр сведений или регистр накопления. В нем мы будем хранить информацию о количестве проданных товаров по конкретной акции.
  2. Разработка внешней обработки. Нам потребуется создать обработку, которая подключается в справочнике Скидки (наценки). В настройках скидки необходимо выбрать способ предоставления Скидка (наценка) рассчитывается внешним обработчиком.
  3. Логика кода. Внешняя обработка должна при каждом расчете скидки выполнять следующие действия:
    • Получать данные из документа, в котором происходит продажа.
    • Обращаться к созданному регистру, чтобы узнать, сколько товаров по этой акции уже было продано ранее.
    • Сравнивать сумму проданных товаров с лимитом (10 штук).
    • Возвращать системе результат: предоставлять скидку, если лимит не превышен, или блокировать её.

Примерный алгоритм работы кода

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


Функция РассчитатьСкидку(Параметры) Экспорт
    // 1. Получаем текущее количество товара в документе
    ТекущееКоличество = Параметры.Товар.Количество;
    
    // 2. Получаем накопленное количество из нашего регистра
    ПроданоРанее = ПолучитьПродажиПоАкции(Параметры.Акция);
    
    // 3. Проверяем лимит
    Если (ПроданоРанее + ТекущееКоличество) <= 10 Тогда
        // Возвращаем процент скидки 10%
        Возврат 10;
    Иначе
        // Лимит исчерпан
        Возврат 0;
    КонецЕсли;
КонецФункции

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

Альтернативный подход: Ограничение в чеке

Если задача менее строгая и допустимо ограничить 10 штук на одного покупателя в одном чеке, то мы можем обойтись без программирования. Для этого выполните следующее:

  1. Откройте карточку нужной Скидки (наценки).
  2. Перейдите на вкладку Условия предоставления.
  3. Добавьте условие За разовый объем продаж.
  4. Укажите количество — 10 штук.

Этот метод не требует привлечения разработчика, однако он не контролирует общее количество товаров за весь период проведения акции.

Заключение

Мы выяснили, что для решения задачи в УТ 11.4 существуют два пути. Первый — простой, но ограниченный (контроль в рамках одного чека). Второй — профессиональный, подразумевающий написание внешней обработки для работы с произвольными регистрами учета. Рекомендуем начать с уточнения требований бизнеса: действительно ли нужен жесткий лимит на всю базу или достаточно ограничения в рамках одной покупки.

← На главную