При работе в программе 1С:Розница 2.* пользователи часто сталкиваются с ситуацией, когда стандартные механизмы скидок кажутся недостаточно гибкими. Типичный пример: в базе ведется несколько типов цен (например, «Розничная» и «Цена для сотрудников»), и необходимо запустить праздничную акцию со скидкой 30%, но строго для основной розничной цены, не затрагивая специальные цены сотрудников. В этой статье мы подробно разберем, как реализовать такую задачу, проанализируем внутреннюю логику системы и рассмотрим несколько рабочих сценариев.
Прежде чем переходить к настройкам, давайте разберем важный нюанс. В отличие от конфигурации «Управление торговлей», в 1С:Розница магазин обычно привязан к конкретному Правилу ценообразования, в котором указан основной Вид цены. Все автоматические скидки по умолчанию рассчитываются от той цены, которая считается действующей для данного магазина или документа. Проблема заключается в том, что в интерфейсе настройки скидки нельзя одновременно выбрать и «Процент», и «Вид цены». Эти параметры взаимоисключающие в рамках одного элемента справочника Скидки (наценки).
Рассмотрим по шагам основные способы решения этой задачи.
Этот способ считается наиболее корректным и простым в реализации. Вместо того чтобы заставлять программу вычитать проценты «на лету», мы подготовим специальный вид цены, который уже содержит в себе нужную скидку.
Виды цен. Создадим новый элемент, назовем его, например, «Розничная (акция -30%)». В способе задания цены укажем «Рассчитывать по другим видам цен». В поле формулы пропишем зависимость от базовой цены: [Розничная] * 0.7.Маркетинг — Скидки (наценки). Создадим новую скидку. В поле «Тип скидки» выберем значение Использовать вид цены. В появившемся поле выбора укажем наш созданный ранее вид цены «Розничная (акция -30%)».Условия предоставления.Маркетинговая акция, укажем период проведения (например, с 21 по 23 февраля), выберем магазины и добавим нашу скидку.Результат: Когда кассир пробьет товар, система увидит действующую акцию и вместо математического вычисления процентов просто подставит цену из типа «Розничная (акция -30%)».
Проанализируем ситуацию, когда у нас есть «Цена сотрудников», которая выбирается в документе Реализация товаров или Чек ККМ вручную. Чтобы праздничная скидка не накладывалась на спеццену сотрудников, нам нужно настроить иерархию приоритетов.
Рассмотрим настройку группы скидок:
Скидки (наценки) новую группу с вариантом совместного применения Вытеснение.При такой настройке программа сначала проверит условия для более приоритетной скидки. Если применяется цена сотрудника, то акция 30% будет «вытеснена» и не применится. Однако стоит помнить, что в 1С:Розница автоматические скидки работают лучше всего, когда и цена сотрудника заведена не как отдельный тип цены в документе, а как скидка по дисконтной карте.
Для стабильной работы системы рекомендуется пересмотреть подход к выбору типов цен. Рассмотрим идеальную схему:
Программа работает по одной основной Розничной цене. Все отклонения (опт, сотрудники, праздники) оформляются через механизм скидок. Для сотрудников создается Информационная карта. В настройках скидок создается элемент с типом Использовать вид цены (где указан вид цены «Сотрудники»), а в условиях предоставления указывается За предъявление карты.
Теперь, объединив праздничную скидку и скидку по карте сотрудника в группу Максимум или Вытеснение, мы получим автоматизированную систему, где программа сама выберет наиболее выгодную (или приоритетную) цену без участия кассира.
Выясним причину, почему иногда скидка не срабатывает. Часто это связано с тем, что товар не входит в область действия акции. Чтобы скидка 30% применялась только к определенным товарам по розничной цене, используйте Сегменты номенклатуры.
Например, создадим сегмент «Товары к празднику». В настройках скидки укажем этот сегмент. Это позволит ограничить действие акции, даже если в документе выбраны разные типы цен для разных строк.
Проанализируем пример логики в коде (для разработчиков, создающих внешние условия):
// Пример логического условия для внешней обработки скидок
Если СтрокаДокумента.ВидЦены = Справочники.ВидыЦен.НайтиПоНаименованию("Розничная") Тогда
Результат = Истина; // Скидка применяется
Иначе
Результат = Ложь; // Скидка игнорируется
КонецЕсли;
Использование таких внешних условий через дополнительные обработки позволяет реализовать практически любую логику, которую невозможно настроить типовыми средствами интерфейса.
Мы рассмотрели несколько вариантов решения задачи. Подведем итог: наиболее надежным и простым способом в 1С:Розница 2.* является создание расчетного вида цены (базовая цена минус 30%) и использование его в скидке с типом Использовать вид цены. Это избавляет от сложных расчетов в момент продажи и минимизирует ошибки округления. Не забывайте использовать Маркетинговые акции для фиксации периода действия ваших скидок, чтобы автоматизация работала корректно и прозрачно для учета.