В типовой конфигурации 1С:Управление торговлей 10.3 пользователи часто сталкиваются с проблемой: несмотря на включенные флаги в учетной политике «Использовать скидки по дисконтной карте» и «Использовать накопительные скидки по дисконтным картам», система применяет только один вид льготы. Разберем, почему так происходит, и как настроить программу, чтобы карта давала одновременно и фиксированный процент, и накопительный бонус.
Проанализируем алгоритм работы системы. В типовом решении заложен приоритет типов скидок. Как только программа находит подходящее условие в справочнике Виды дисконтных карт (например, заданный фиксированный процент), она может прекратить дальнейший поиск накопительной составляющей. Существует два основных сценария настройки, которые мы рассмотрим далее.
Если нам нужно, чтобы карта сразу давала базовый (фиксированный) процент, а затем увеличивала его при достижении определенных оборотов, лучше всего использовать механизм порогов. Рассмотрим пошагово, как это реализовать:
Такой подход позволяет имитировать «фиксированную» скидку внутри накопительной системы. Программа будет всегда находить актуальный порог, начиная с нулевого накопления.
Выясним причину, по которой прямое указание скидки в карточке вида дисконтной карты может блокировать другие расчеты. В УТ 10.3 механизмы скидок по картам и автоматических скидок работают параллельно, но не всегда суммируются автоматически.
Чтобы добиться суммирования, рекомендуется:
Виды дисконтных карт.Важно: для корректной работы накопительной системы карта обязательно должна иметь владельца (контрагента), так как данные берутся из регистра накопления Продажи в разрезе владельцев карт.
Часто при совместной работе нескольких скидок возникают «копейки», которые неудобны при расчетах в интерфейсе кассира. Рассмотрим пример «точечной» доработки, которая позволяет округлить итоговую сумму документа до целого рубля после применения всех скидок.
Для этого нам понадобится внести изменения в общий модуль ОбработкаТабличныхЧастей. Найдем процедуру ПроверкаМинимальнойЦены и вставим алгоритм округления в цикл обработки строк товаров.
Посмотрим на пример кода:
// Добавление округления скидок в процедуре ПроверкаМинимальнойЦены
Если СтрокаТовара.Сумма <> СтрокаТовара.СуммаБезСкидки Тогда
СтрокаТовара.Сумма = Окр(СтрокаТовара.Сумма);
КонецЕсли;
Если УчитыватьНДС Тогда
// Рассчитаем сумму НДС строки таблицы значений после округления суммы
СтрокаТовара.СуммаНДС = УчетНДС.РассчитатьСуммуНДС(
СтрокаТовара.Сумма,
УчитыватьНДС,
СуммаВключаетНДС,
УчетНДС.ПолучитьСтавкуНДС(СтрокаТовара.СтавкаНДС)
);
КонецЕсли;
Эта вставка позволяет автоматически округлять поле Сумма, если была применена любая скидка. Это гарантирует, что кассир будет видеть в чеке ККМ или в документе «Реализация товаров и услуг» ровные суммы без дробных частей, возникающих при сложных арифметических расчетах процентов.
Подведем итоги. Чтобы скидки работали корректно, проверьте следующие моменты:
Продажи должны быть актуальны (проведена последовательность документов), иначе накопительная часть не рассчитается.Виде дисконтной карты, она может иметь приоритет над автоматическими скидками.ОбработкаТабличныхЧастей.