При настройке автоматических скидок в 1С:Управление торговлей 11 часто возникает необходимость разделить маркетинговые акции: одни скидки должны действовать исключительно при оптовых сделках через документы Заказ клиента и Реализация товаров и услуг, а другие — только при розничных продажах через рабочее место кассира (РМК) в документе Чек ККМ.
Разберем специфику типового механизма ценообразования и скидок, а также рассмотрим по шагам все способы решения этой задачи — от стандартной настройки программы до подключения внешних обработок и расширений.
Проанализируем типовой справочник Условия предоставления скидок (наценок). В стандартном перечне условий программы нет прямого отбора по типу документа или виду торговой операции. Доступны фильтры по сумме документа, количеству позиций, времени действия, номенклатурным позициям, карте лояльности, форме оплаты и т.д.
Поэтому разделение опта и розницы в системе реализуется не через условия строки скидки, а через область ее действия (назначения) или через контекст расчета.
Если требуется предоставить скидку строго при оптовой продаже, наиболее правильный и штатный способ — назначить действие скидки в соглашении с клиентом.
Разберем по шагам, как это работает:
Почему это работает: документы оптовой торговли (Заказ клиента, Реализация товаров и услуг) всегда оформляются с указанием соглашения (если включено использование соглашений в настройках системы). В рабочем месте кассира (РМК) документ Чек ККМ оформляется без соглашений. Соответственно, скидка, привязанная к соглашению, в чеке ККМ никогда не рассчитается.
Для ограничения скидки рамками розничной торговли можно использовать два типовых сценария в зависимости от структуры компании:
Если оптовые и розничные продажи ведутся с одного общего склада, а применение соглашений или карт лояльности не подходит, воспользуемся штатным механизмом внешних обработок условий предоставления скидок.
Механизм БСП позволяет создать дополнительную обработку для расчета условий. В алгоритме обработки мы можем проверить тип документа, в котором происходит расчет:
Если ТипЗнч(ПараметрыРасчета.ДокументСсылка) = Тип("ДокументСсылка.ЧекККМ") Тогда
// Условие выполняется только для розничных чеков
Результат = Истина;
ИначеЕсли ТипЗнч(ПараметрыРасчета.ДокументСсылка) = Тип("ДокументСсылка.ЗаказКлиента")
Или ТипЗнч(ПараметрыРасчета.ДокументСсылка) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
// Для оптовых документов скидка не применяется
Результат = Ложь;
КонецЕсли;
Такую обработку регистрируем в разделе НСИ и администрирование — Печатные формы, отчеты и обработки — Дополнительные отчеты и обработки, после чего выбираем ее в качестве условия в карточке скидки. Конфигурация остается на полной поддержке.
Если требуется модифицировать общий модуль СкидкиНаценкиСервер или переопределить логику расчета, не следует менять типовую конфигурацию напрямую. Создадим Расширение конфигурации:
СкидкиНаценкиСервер с аннотацией &Вместо, &Перед или &После.Таким образом, основная база остается на типовой поддержке и без проблем обновляется вендором, а требуемое разделение оптовых и розничных скидок работает корректно.