Как настроить скидку от рекомендуемой, а не от розничной цены в 1С:Розница 2.2?

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

В типовой конфигурации 1С:Розница 2.2 стандартный механизм управляемых скидок рассчитывает процентную скидку непосредственно от текущей розничной цены товара, зафиксированной в строке документа продажи. Однако на практике часто возникает задача, когда продажа осуществляется по стандартной розничной цене, но маркетинговая акция предполагает предоставление скидки (например, 15%, 20% или 30%) от другой цены — Рекомендуемой розничной цены (РРЦ). При этом итоговая цена продажи с учетом скидки не должна превышать базовую розничную цену.

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

Причины ограничений штатного функционала

Проанализируем базовую логику ценообразования и скидок в 1С:Розница 2.2:

  1. Расчет от текущей цены строки: Управляемая скидка с типом «Процент» всегда применяется к текущей цене товара в чеке. Скидка с типом «Использовать вид цены» позволяет подставить фиксированное значение конкретного вида цен, но не умеет вычислять динамический процент от другого вида цен с одновременной проверкой верхней границы.
  2. Защита цен только «снизу»: Штатный механизм контроля цен (минимальные цены номенклатуры) предназначен для предотвращения продаж ниже себестоимости или установленного порога. Инструментов для автоматической отсечки «сверху» (чтобы цена со скидкой от РРЦ не превышала основную розничную цену) в типовых настройках скидок не предусмотрено.

Тем не менее, решить данную задачу можно как штатным путем, так и с помощью средств расширения функционала.

Вариант 1. Настройка через дополнительные виды цен и группы совместного применения

Рассмотрим порядок настройки задачи средствами стандартного интерфейса без привлечения программиста.

Шаг 1. Создание динамического вида цены

В справочнике ВидыЦен создается новый вид цены (например, «Цена по акции 15% от РРЦ»). В настройках способа расчета задается формула:

[РекомендуемаяРозничнаяЦена] * 0.85

При изменении базовой рекомендуемой цены в документе УстановкаЦенНоменклатуры акционная цена будет рассчитываться автоматически.

Шаг 2. Настройка скидки и ограничение верхней границы

Для того чтобы итоговая цена со скидкой от РРЦ не оказалась выше базовой розничной цены (например, если РРЦ существенно выше розничной), используется механизм групп совместного применения скидок:

  1. Создаем скидку с типом «Использовать вид цены» и выбираем расчетный вид цены «Цена по акции 15% от РРЦ».
  2. Создаем вторую скидку, которая устанавливает бановую розничную цену.
  3. Помещаем обе скидки в группу совместного применения с правилом «Минимум». Программа сравнит полученные значения и применит ту скидку, которая дает наименьшую (наиболее выгодную для покупателя) цену, тем самым гарантируя, что итоговая цена не превысит базовую розничную.

Недостаток метода: Если в компании действует гибкая шкала скидок (от 1% до 50%), потребуется создать десятки видов цен, столько же правил расчета и документов назначения скидок. Это делает административное обслуживание системы весьма трудоемким.

Вариант 2. Использование внешней обработки расчета скидки

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

Рассмотрим алгоритм работы внешней обработки в РМК или чеке ККМ:

  1. В справочнике СкидкиНаценкиОграничения создается элемент с типом «Внешняя обработка».
  2. При нажатии кнопки расчета скидок в РМК система передает табличную часть чека во внешнюю обработку.
  3. Обработка делает запрос к регистру сведений ЦеныНоменклатуры и получает текущие значения видов цен «Рекомендуемая» и «Розничная» для товаров в чеке.
  4. В коде обработки рассчитывается цена по формуле:
    
    ЦенаСоСкидкой = ЦенаРекомендуемая * (1 - ПроцентСкидки / 100);
    ИтоговаяЦена = Мин(ЦенаСоСкидкой, ЦенаРозничная);
    СуммаСкидки = (ЦенаРозничная - ИтоговаяЦена) * Количество;
    
  5. Рассчитанная сумма скидки возвращается в документ продажи.

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

Вариант 3. Доработка через расширение конфигурации

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

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

Особенности и технические нюансы

При выборе программного способа решения (через внешнюю обработку или расширение) необходимо учитывать следующие моменты:

← На главную