В розничной торговле часто используются различные маркетинговые акции для привлечения покупателей. Одна из популярных механик — предоставление персональной скидки по одноразовому промокоду или QR-коду. При этом бизнес часто хочет ограничить объем продаваемого по акции товара в одни руки, например: «Скидка 25% по QR-коду на определенный сегмент товаров, но не более чем на 5 штук в чеке».
Разберем подробно, возможно ли реализовать такой сценарий штатными средствами в программе «1С:Розница 2.2», с какими техническими ограничениями вы можете столкнуться, как обойти их с помощью доработок и как эта задача решается в современной редакции «1С:Розница 3.0».
---
Выясним, какие инструменты предоставляет нам редакция 2.2 для решения этой задачи и где начинаются ограничения платформы.
Для реализации первой части задачи — работы с уникальными одноразовыми QR-кодами — в программе предусмотрен специализированный механизм. Начиная с определенных релизов ветки 2.2, в системе присутствует регистр сведений СостоянияОднократныхСкидокИКупонов. Этот регистр предназначен для хранения информации об одноразовых кодах и их текущем статусе (использован или нет).
В рабочем месте кассира (РМК) предусмотрена штатная кнопка «Промокод». При ее нажатии кассир может считать сканером штрихкод или QR-код. Система выполнит поиск кода в регистре, проверит его актуальность и, если код валиден, применит связанную с ним автоматическую скидку, зафиксировав факт гашения купона в системе.
Однако при попытке настроить вторую часть условия — ограничение «не более 5 штук» — мы сталкиваемся с жестким ограничением типового функционала:
За разовый объем продаж в «1С:Розница 2.2» работает только по принципу «не менее». То есть мы можем настроить скидку, которая сработает, если покупатель берет 5 и более товаров.Рассмотрим подробнее два практических пути решения этой проблемы: для редакции 2.2 (через внешнюю обработку) и для редакции 3.0 (полностью штатными средствами).
---
Поскольку стандартный конструктор скидок не позволяет ограничить максимальное количество акционного товара в чеке, лучшим решением для «1С:Розница 2.2» без изменения типовой конфигурации является использование механизма внешних обработок расчета скидок.
В системе «1С:Розница» реализована штатная возможность подключения внешних алгоритмов через справочник ДополнительныеОтчетыИОбработки. Мы можем разработать или внедрить готовую внешнюю обработку с типом «Скидки-наценки».
Проанализируем, как должен выглядеть программный алгоритм расчета такой скидки во внешней обработке:
СостоянияОднократныхСкидокИКупонов.Ниже представлен пример структуры программного кода для внешней обработки расчета скидки:
Процедура РассчитатьСкидку(ОбъектДокумента, ПараметрыРасчета, ТаблицаСкидок) Экспорт
СегментНоменклатуры = ПолучитьСегментАкционныхТоваров();
МаксимальноеКоличество = 5;
ПроцентСкидки = 25;
// Проверяем наличие примененного одноразового купона в чеке
Если Не КупонУспешноАктивирован(ОбъектДокумента) Тогда
Возврат;
КонецЕсли;
КоличествоОбработано = 0;
Для Каждого СтрокаТЧ Из ОбъектДокумента.Товары Цикл
Если ТоварПринадлежитСегменту(СтрокаТЧ.Номенклатура, СегментНоменклатуры) Тогда
ДоступноДляСкидки = Мин(СтрокаТЧ.Количество, МаксимальноеКоличество - КоличествоОбработано);
Если ДоступноДляСкидки > 0 Тогда
// Рассчитываем сумму скидки на доступное количество
СуммаСтрокиБезСкидки = ДоступноДляСкидки * СтрокаТЧ.Цена;
СуммаСкидкиСтроки = СуммаСтрокиБезСкидки * (ПроцентСкидки / 100);
// Записываем результат в таблицу распределения скидок
НоваяСтрокаСкидки = ТаблицаСкидок.Добавить();
НоваяСтрокаСкидки.ПолучательСкидки = СтрокаТЧ.КлючСвязи;
НоваяСтрокаСкидки.Сумма = СуммаСкидкиСтроки;
КоличествоОбработано = КоличествоОбработано + ДоступноДляСкидки;
КонецЕсли;
Если КоличествоОбработано >= МаксимальноеКоличество Тогда
Прервать; // Лимит в 5 товаров исчерпан
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Использование внешней обработки позволяет не снимать конфигурацию с поддержки и полностью закрывает потребность бизнеса в сложных механиках лояльности.
---
Если у вас есть возможность обновить конфигурацию до актуальной редакции «1С:Розница 3.0» (или использовать «1С:Управление нашей фирмой 3.0»), то данная задача решается полностью в пользовательском режиме без привлечения программистов.
Разработчики фирмы «1С» кардинально переработали и расширили маркетинговый блок в третьей версии программы. Настроим нашу акцию по шагам:
Перейдем в раздел маркетинга и создадим новую автоматическую скидку со значением 25%. В карточке скидки в поле «Область предоставления» выберем вариант «На строку с условием». Программа откроет дополнительные параметры, где мы сможем указать ограничение: Применять только на 5 ед. товара один раз в строке. Это ключевая настройка, которая решает проблему верхнего лимита количества товара.
В условиях предоставления скидки добавим отбор по номенклатуре. Укажем созданный ранее сегмент товаров, на которые должна распространяться акция. Теперь скидка будет начисляться только на позиции из этого сегмента и строго в пределах установленного лимита (не более 5 единиц).
В «1С:Розница 3.0» промокоды стали полноценным нативным объектом. Прямо из карточки скидки мы можем сгенерировать пул уникальных однократных промокодов. Система позволяет:
При оформлении продажи в новом РМК кассиру достаточно считать предоставленный покупателем QR-код. Программа мгновенно проверит промокод, применит скидку 25% ровно на 5 единиц товара из сегмента (даже если в чеке их присутствует больше) и погасит использованный купон.
---
Если ваше предприятие использует развитую CRM или внешнюю систему лояльности (например, UDS Game, MAXMA.com, Mindbox и др.), логику ограничений и валидацию QR-кодов можно полностью перенести на сторону этого сервиса.
В этом случае интеграция работает по следующей схеме:
Такой подход избавляет от необходимости дорабатывать код самой программы «1С» и позволяет централизованно управлять маркетинговыми акциями сразу во всей торговой сети.
---
Подводя итоги нашего анализа, дадим практические рекомендации для внедрения данной механики:
СостоянияОднократныхСкидокИКупонов.