Как в 1С:Розница настроить скидку на распродажу ограниченного остатка товара

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

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

Проанализируем архитектуру подсистемы маркетинговых акций в конфигурации 1С:Розница 2.2, выясним, с какими сложностями сопряжена данная задача, и рассмотрим практические способы ее решения.

Архитектурные и законодательные ограничения типового функционала

Прежде чем приступать к настройке, проанализируем внутренние механизмы 1С и законодательные требования, которые важно учитывать при автоматизации скидок на остатки:

  1. Отсутствие глобального счетчика срабатываний скидки. В типовой подсистеме автоматических скидок условие предоставления рассчитывается в контексте текущего документа (в момент оформления чека в РМК) либо по накоплениям на дисконтной карте покупателя. Механизма квотирования, позволяющего задать условие вида «предоставлять скидку только на первые N штук по всей базе», в типовом функционале условий скидок нет.
  2. Специфика динамических сегментов. Если попытаться создать сегмент номенклатуры с отбором по остаткам (например, остаток меньше либо равен заданному значению), скидка не отключится мгновенно при продаже акционных позиций. Формирование динамических сегментов выполняется регламентным заданием по расписанию, а оперативные остатки в процессе пробития чеков обновляются только после закрытия смены или проведения документов. До момента следующего пересчета система продолжит предоставлять скидку на новые партии.
  3. Ограничения распределенных информационных баз (РИБ). В магазинах с несколькими автономными кассовыми узлами контроль остатка в реальном времени невозможен без непрерывного онлайн-соединения. Из-за асинхронного обмена данными между узлами кассы возникнет ситуация конкурентного списания, когда акционный товар пробьют на двух кассах одновременно сверх лимита.
  4. Требования к алкогольной продукции и маркировке. Если распродаются остатки алкоголя, действуют жесткие ограничения: во-первых, нельзя опускать итоговую стоимость ниже МРЦ (минимальной розничной цены), иначе система заблокирует проведение чека. Во-вторых, категорически запрещено списывать товар под видом «уценки» с заведением фиктивной номенклатуры с новым штрихкодом: акцизные марки жестко привязаны к конкретному коду номенклатуры и справкам ЕГАИС.

Решение 1. Использование механизма серийных одноразовых купонов (штатный способ)

Рассмотрим наиболее надежный и безопасный штатный метод, не требующий доработки конфигурации и не нарушающий учет маркированного товара и алкоголя. Этот способ основан на применении скидки по одноразовым промокодам (купонам).

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

  1. Перейдем в раздел Маркетинг и откроем справочник Скидки (наценки, ограничения).
  2. Создадим новую автоматическую скидку с типом действия (процент или фиксированная сумма уценки) и назначим ее на требуемый товар или сегмент.
  3. В табличной части условий предоставления добавим условие с типом По купону.
  4. В карточке условия купонной серии создадим серию купонов и укажем признак однократного использования.
  5. Сгенерируем в системе ровно столько уникальных штрихкодов купонов, сколько единиц товара требуется распродать по акции (например, ровно 3 штуки).
  6. Распечатаем полученные штрихкоды и наклеим их непосредственно на акционные бутылки рядом с заводским штрихкодом либо передадим кассиру.

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

Решение 2. Продажа через перемаркировку и комплект (для обычной продукции)

Если распродаваемый товар не является маркированным или алкогольным, можно применить организационно-методический способ с разделением товарных позиций:

  1. Создадим новую позицию номенклатуры с наименованием вида «Товар (распродажа/уценка)».
  2. Назначим на данную позицию сниженную цену документом Установка цен номенклатуры.
  3. Сгенерируем для нее отдельный внутренний штрихкод, распечатаем самоклеящиеся этикетки и наклеим их поверх оригинальных штрихкодов на акционные упаковки.
  4. Переведем нужное количество товара со старой карточки на новую документом Пересортица товаров или связкой документов Списание товаров и Оприходование товаров.

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

Решение 3. Доработка условий скидки с контролем лимита (для программистов)

Если требуется полностью автоматизировать процесс без купонов и переклейки штрихкодов, проанализируем программную доработку через создание внешнего условия скидки.

Для исключения ошибок параллельных продаж и махинаций с отложенными чеками архитектура доработки должна строиться следующим образом:

  1. Создается непериодический регистр сведений для хранения лимитов и текущих счетчиков продаж в разрезе акций и номенклатурных позиций.
  2. Реализуется дополнительная внешняя обработка с условием предоставления скидки, подключаемая в справочник Дополнительные отчеты и обработки.
  3. В коде проверки условия выполняется запрос к регистру сведений. При расчете скидки обязательно используется управляемая транзакционная блокировка, чтобы предотвратить превышение лимита при одновременной продаже с нескольких рабочих мест:

Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.ЛимитыАкционныхТоваров");
ЭлементБлокировки.УстановитьЗначение("Номенклатура", ТекущаяНоменклатура);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();

Увеличение счетчика проданного количества фиксируется непосредственно при проведении документа Чек ККМ, что гарантирует точный учет квоты и автоматическое прекращение действия скидки при достижении заданного лимита.

← На главную