Как в 1С:Управление торговлей 11 ограничить применение скидки только оптовой или только розничной продажей

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

При настройке автоматических скидок в 1С:Управление торговлей 11 часто возникает необходимость разделить маркетинговые акции: одни скидки должны действовать исключительно при оптовых сделках через документы Заказ клиента и Реализация товаров и услуг, а другие — только при розничных продажах через рабочее место кассира (РМК) в документе Чек ККМ.

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

Особенности типового механизма скидок и наценок

Проанализируем типовой справочник Условия предоставления скидок (наценок). В стандартном перечне условий программы нет прямого отбора по типу документа или виду торговой операции. Доступны фильтры по сумме документа, количеству позиций, времени действия, номенклатурным позициям, карте лояльности, форме оплаты и т.д.

Поэтому разделение опта и розницы в системе реализуется не через условия строки скидки, а через область ее действия (назначения) или через контекст расчета.

Вариант 1. Разделение скидок через соглашения об условиях продаж (только для опта)

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

Разберем по шагам, как это работает:

  1. Перейдем в раздел CRM и маркетинг — Ценообразование — Скидки (наценки).
  2. Создадим или настроим нужную автоматическую скидку.
  3. Перейдем в рабочее место Установка действия скидок (наценок) (кнопка Установить статус на форме списка или внутри скидки).
  4. В поле области действия выберем В соглашениях и укажем необходимые Типовые соглашения с клиентами или Индивидуальные соглашения с клиентами, установив статус Действует.
  5. Обязательно убедимся, что данная скидка не назначена на склады.

Почему это работает: документы оптовой торговли (Заказ клиента, Реализация товаров и услуг) всегда оформляются с указанием соглашения (если включено использование соглашений в настройках системы). В рабочем месте кассира (РМК) документ Чек ККМ оформляется без соглашений. Соответственно, скидка, привязанная к соглашению, в чеке ККМ никогда не рассчитается.

Вариант 2. Разделение скидок через склады и карты лояльности (только для розницы)

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

  1. Разделение по складам: если розница и опт отгружаются с разных складов (например, розница со склада с типом Розничный магазин или Торговый зал, а опт — с оптового склада), мы назначаем действие скидки исключительно на розничный склад в рабочем месте Установка действия скидок (наценок). В оптовых соглашениях эта скидка не активируется.
  2. Использование карт лояльности: в РМК скидка может предоставляться по условию наличия зарегистрированной карты лояльности (дисконтной карты). В условии предоставления скидки указываем За наличие карты лояльности (определенного вида или любого). Оптовые покупатели, не предъявляющие розничные дисконтные карты, данную скидку не получат.

Вариант 3. Подключаемые внешние условия скидок (без изменения конфигурации)

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

Механизм БСП позволяет создать дополнительную обработку для расчета условий. В алгоритме обработки мы можем проверить тип документа, в котором происходит расчет:

  1. Создаем внешнюю обработку со стандартным интерфейсом БСП для условий скидок.
  2. В функции проверки условия анализируем переданный контекст документа:

Если ТипЗнч(ПараметрыРасчета.ДокументСсылка) = Тип("ДокументСсылка.ЧекККМ") Тогда
    // Условие выполняется только для розничных чеков
    Результат = Истина;
ИначеЕсли ТипЗнч(ПараметрыРасчета.ДокументСсылка) = Тип("ДокументСсылка.ЗаказКлиента")
    Или ТипЗнч(ПараметрыРасчета.ДокументСсылка) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
    // Для оптовых документов скидка не применяется
    Результат = Ложь;
КонецЕсли;

Такую обработку регистрируем в разделе НСИ и администрирование — Печатные формы, отчеты и обработки — Дополнительные отчеты и обработки, после чего выбираем ее в качестве условия в карточке скидки. Конфигурация остается на полной поддержке.

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

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

  1. В конфигураторе добавим новое расширение с назначением Адаптация или Дополнение.
  2. Добавим метод расчета скидок из модуля СкидкиНаценкиСервер с аннотацией &Вместо, &Перед или &После.
  3. В расширении реализуем отбор по типу документа-источника перед вычислением дерева скидок.

Таким образом, основная база остается на типовой поддержке и без проблем обновляется вендором, а требуемое разделение оптовых и розничных скидок работает корректно.

← На главную