В розничной торговле часто применяется практика предоставления специальных скидок для сотрудников компании. Это отличная мотивационная мера, однако без жесткого контроля она может стать источником злоупотреблений. Например, недобросовестный сотрудник может начать приобретать дефицитный или дорогой товар со своей скидкой в 30% для перепродажи родственникам или знакомым. Чтобы исключить подобные ситуации, необходимо настроить жесткий лимит покупок — например, разрешить приобретать товар со скидкой на сумму не более 1000 рублей в сутки.
В рамках этой статьи мы подробно разберем, как решить эту задачу в программе «1С:Розница 2.2 / 2.3», проанализируем ограничения типового функционала и рассмотрим альтернативные варианты реализации через внешние обработки и расширения конфигурации.
---
Самый простой и не требующий программирования способ — использование штатного механизма условий предоставления скидок. Мы можем настроить систему так, чтобы она проверяла сумму покупок по карте лояльности за текущие сутки.
Рассмотрим по шагам, как настроить такую схему:
За накопленный объем продаж.День (или текущий день).Важное примечание: При такой настройке система будет автоматически анализировать регистр накопления Продажи за текущие сутки по конкретной дисконтной карте при проведении чека на кассе.
---
Хотя стандартный функционал выглядит простым и рабочим, при реальной работе в магазине мы обязательно столкнемся со следующими технологическими ограничениями:
---
Чтобы обойти проблему «неделимости» чека и настроить гибкое распределение скидки, мы можем использовать механизм внешних обработок. Начиная с версии 2.2, «1С:Розница» поддерживает подключение внешних алгоритмов для расчета скидок без изменения конфигурации.
Выясним, как это работает программно. Мы создаем внешнюю обработку, которая регистрируется в справочнике дополнительных отчетов и обработок. При расчете скидки в Рабочем месте кассира (РМК) система передает табличную часть чека в эту обработку.
Проанализируем пример кода, который выполняет запрос к регистру продаж для проверки накопленного лимита за сегодня:
// Функция выполняет запрос к регистру продаж для получения суммы покупок за текущий день
Функция ПолучитьСуммуПродажЗаСегодня(ДисконтнаяКарта) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЕСТЬNULL(СУММА(Продажи.Сумма), 0) КАК СуммаПродаж
|ИЗ
| РегистрНакопления.Продажи КАК Продажи
|ГДЕ
| Продажи.ДисконтнаяКарта = &ДисконтнаяКарта
| И Продажи.Период МЕЖДУ &НачалоДня И &КонецДня";
Запрос.УстановитьПараметр("ДисконтнаяКарта", ДисконтнаяКарта);
Запрос.УстановитьПараметр("НачалоДня", НачалоДня(ТекущаяДата()));
Запрос.УстановитьПараметр("КонецДня", КонецДня(ТекущаяДата()));
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующая() Тогда
Возврат Выборка.СуммаПродаж;
КонецЕсли;
Возврат 0;
КонецФункции
На основе полученного значения СуммаПродаж алгоритм внешней обработки может рассчитать точный остаток лимита. Если сумма текущей корзины покупателя превышает этот остаток, обработка автоматически рассчитает скидку в виде фиксированной суммы, равной 30% от оставшегося лимита, и распределит её по строкам чека. Это полностью решает проблему «все или ничего».
---
Если у вас нет штатного программиста для написания внешней обработки, наиболее практичным решением будет установка готового расширения. Расширения конфигурации (.cfe) не требуют снятия базы 1С с поддержки и позволяют существенно изменить логику работы РМК.
Качественные расширения для контроля лимитов предоставляют следующие возможности:
ФизическиеЛица, что полностью исключает дублирование лимитов.---
Если вы планируете переход или уже работаете на современных конфигурациях под управлением платформы «1С:Предприятие 8.3» (например, «1С:Розница 3.0» или автономном решении «1С:РМК»), управление лимитами стало еще более гибким:
Подведем итог: Для реализации жесткого лимита скидок в «1С:Розница» вы можете использовать стандартный механизм накоплений по картам, однако для предотвращения конфликтных ситуаций на кассе при превышении лимита рекомендуется использовать внешнюю обработку расчета скидок или специализированное расширение, которое автоматически скорректирует чек до копейки.