Как настроить переход на определенный вид цен при считывании дисконтной карты в 1С?

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

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

Проверка базовых параметров маркетинговой акции

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

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

Тип скидки: «Специальная цена» против «Применения вида цен»

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

Если мы хотим, чтобы система брала готовую цену из регистра, нам нужно использовать тип «Применение вида цен». В этом случае алгоритм 1С работает следующим образом: при выполнении условия (чтение карты) система игнорирует розничную цену и обращается к регистру сведений Цены номенклатуры по указанному нами виду цен.

Рассмотрим ситуацию, когда выбрана «Специальная цена». Этот механизм чаще используется для фиксации конкретной суммы в самой настройке скидки, что неудобно, если видов товаров тысячи. Поэтому для перехода на «Золотой» или «Оптовый» прайс-лист выбираем именно «Применение вида цен». Важно помнить: если на текущую дату цена по этому виду не установлена документом Установка цен номенклатуры, скидка не сработает, так как системе нечего «подставить» вместо текущей цены.

Настройка приоритетов в группах скидок

Система 1С поддерживает иерархическую структуру скидок, и это часто становится камнем преткновения. Проанализируем справочник Группы скидок (наценок). Выясним, в какой группе находится наша скидка по дисконтной карте.

В 1С существуют различные варианты совместного применения скидок в группе:

Если наша скидка по карте находится в группе с вариантом Вытеснение, а выше нее стоит какая-то общая акция на товар (например, «Сезонная распродажа») с более высоким приоритетом, то дисконтная карта просто проигнорируется. Нам необходимо убедиться, что у скидки по карте установлен максимальный числовой приоритет, либо она вынесена в отдельную группу, которая применяется по правилу Сложение или Максимум.

Связь условий и видов дисконтных карт

Посмотрим на настройки условия предоставления. Часто программисты и администраторы совершают ошибку, привязывая условие к конкретному номеру карты, тогда как идеология 1С предполагает работу с Видами дисконтных карт. Проверим следующие моменты:

Во-первых, в условии типа За предъявление дисконтной карты должен быть выбран правильный Вид дисконтной карты (например, «Накопительная»). Если карта, которую мы считываем в РМК, принадлежит другому виду, условие не выполнится.

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

Регистры и актуальность данных

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

Попробуем выполнить следующую проверку: в документе Реализация товаров и услуг или в Чек ККМ нажмем кнопку Открыть форму подбора. Если в подборе при выборе нашего спец-вида цен остатки видны, а цена — нулевая, значит, проблема в отсутствии проведенного документа Установка цен номенклатуры для этого вида цен.

Особенности РМК: почему цена не меняется визуально?

Разберем ситуацию, которая часто путает пользователей: карта считана, но цена в колонке «Цена» осталась прежней. В некоторых настройках 1С цена в строке чека не перезаписывается. Вместо этого рассчитывается Автоматическая скидка, сумма которой в точности равна разнице между розничной ценой и ценой по спец-виду. В итоге Всего к оплате будет верным, хотя цена за единицу товара кажется неизменной.

Для проверки в РМК выделим строку с товаром и воспользуемся кнопкой Подробно о скидках. Там мы увидим список всех выполненных и невыполненных условий. Если наше условие по карте отмечено как выполненное, но скидка 0, значит, проблема в настройках самого вида цены или в минимальных ценах продажи.

Минимальные цены и сегментация

Проанализируем ограничения. В 1С есть механизм защиты от чрезмерных скидок. Выясним, не установлена ли для магазина или конкретной номенклатуры Минимальная цена продажи. Если цена по дисконтной карте ниже, чем установленный порог минимальной цены, система автоматически «обрежет» скидку до этого порога. В результате цена либо не изменится совсем, либо изменится незначительно.

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

Техническая диагностика для программиста

Если административные настройки не помогают, придется обратиться к отладчику. Разберем, в каких модулях искать проблему. Основная логика расчета скидок сосредоточена в общем модуле СкидкиНаценкиСервер (названия могут варьироваться в зависимости от версии УТ или Розницы, например, СкидкиНаценкиДвижок).

Нам стоит обратить внимание на функцию РассчитатьСкидкиНаценки. Посмотрим на содержимое таблицы УсловияПредоставления. Если в этой таблице после считывания карты наше условие не появляется или имеет статус Выполнено = Ложь, значит, проблема в идентификации карты или в структуре подчиненности дисконтных карт. Пример кода, который можно использовать для отладки в консоли:


// Пример получения структуры скидок для анализа
ПараметрыРасчета = СкидкиНаценкиСервер.ПараметрыРасчетаСкидокНаценок();
ПараметрыРасчета.Объект = СсылкаНаДокумент;
Результат = СкидкиНаценкиСервер.Рассчитать(ПараметрыРасчета);

Для Каждого СтрокаРезультата Из Результат.ПримененныеСкидки Цикл
    Сообщить("Применена скидка: " + СтрокаРезультата.СкидкаНаценка);
КонецЦикла;

Проанализировав результат выполнения этого кода, мы сможем точно сказать, видит ли система скидку в принципе. Если скидка есть в списке примененных, но сумма нулевая — проверяем наличие цен. Если скидки нет в списке — проверяем условия и маркетинговую акцию.

Подводя итог, можно сказать, что «неработающая» дисконтная карта в 90% случаев — это результат конфликта приоритетов или отсутствия цен по спец-виду в регистре. Пройдя по всем шагам нашей инструкции, мы сможем локализовать проблему и обеспечить корректную работу системы лояльности.

← На главную