Почему в новом РМК 1С:Розница не работают скидки и как это исправить

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

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

Разбор архитектурных изменений: Сервер лояльности

Для начала проанализируем ситуацию с технической точки зрения. Новое РМК — это не просто обновленный интерфейс, а попытка компании 1С создать универсальный модуль (библиотеку), который будет работать одинаково во всех решениях: Розница, УНФ, ERP и УТ. В старом РМК расчет скидок происходил непосредственно в коде формы или модулях конфигурации, жестко привязанных к объектам базы данных.

В новом РМК реализована иная модель. Для расчета сложных скидок, бонусов и подарков программа обращается к специальному механизму — Серверу лояльности. Это HTTP-сервис, который выступает посредником между кассовым интерфейсом и маркетинговым движком базы данных. Если этот сервис не опубликован или не настроен, новое РМК просто "не знает", как рассчитать скидку, даже если дисконтная карта успешно считана и добавлена в чек.

Шаг 1. Публикация и настройка HTTP-сервиса

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

  1. Перейдем в раздел АдминистрированиеПубликация на веб-сервере.
  2. В списке доступных сервисов необходимо найти и отметить флажком LoyaltyService (Сервер лояльности).
  3. Выполним публикацию базы на веб-сервере (Apache или IIS).
  4. После этого в настройках РМК (раздел ПродажиНастройки РМК) нужно указать адрес опубликованного сервиса в поле настроек лояльности.

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

Шаг 2. Проверка функциональных опций и флагов расчета

Проанализируем настройки внутри самой программы. В новом интерфейсе появились специфические триггеры, которые определяют момент расчета. Например, можно настроить проверку дисконтной карты при оплате. Посмотрим на важные параметры в справочнике "Настройки РМК":

Шаг 3. Проблема заполнения табличной части «Скидки»

Рассмотрим ситуацию, когда сумма в чеке уменьшается (скидка вроде бы применилась), но в самом документе ЧекККМ табличная часть СкидкиНаценки остается пустой. Это известная проблема версий 2.3.11 и 2.3.12. В новом РМК данные передаются в упрощенном виде, и при записи документа стандартные механизмы "Розницы" не всегда подхватывают детализацию наценок.

Если для вашей отчетности критично видеть детализацию скидок в каждом чеке, проанализируем возможные решения:

  1. Обновление конфигурации до версии 2.3.15 и выше, где разработчики внесли исправления в механизмы интеграции РМК с документами чеков.
  2. Использование расширений для дозаполнения ТЧ СкидкиНаценки при проведении чека, созданного через новое РМК.

Шаг 4. Особенности идентификации дисконтных карт

В новом интерфейсе изменен алгоритм поиска дисконтных карт. Если в старом РМК поиск шел по всем доступным полям (телефон, штрихкод, магнитный код), то в новом РМК важно правильно настроить "Шаблоны штрихкодов". Выясним причину: если штрихкод карты не попадает под настроенный шаблон "Дисконтная карта", система может воспринять его как обычный текст или товар. Карта при этом отобразится в интерфейсе как информационная панель, но условия лояльности, привязанные к Владельцу карты, не подтянутся.

Пример настройки логики расчета (псевдокод)

Для программистов важно понимать, как система инициализирует расчет. В новом РМК вызов происходит примерно по следующей схеме (упрощенно):


Процедура РассчитатьСкидкиНаСервере(ДанныеЧека)
    // РМК формирует JSON-запрос к LoyaltyService
    Запрос = Новый HTTPЗапрос("/hs/LoyaltyService/calculate");
    Запрос.УстановитьТелоИзСтроки(ПреобразоватьВJSON(ДанныеЧека));
    
    Ответ = HTTPСоединение.ОтправитьЗапрос(Запрос);
    Если Ответ.КодСостояния = 200 Тогда
        // Применяем полученные скидки к табличной части РМК
        ОбновитьДанныеКорзины(Ответ.ПолучитьТелоКакСтроку());
    КонецЕсли;
КонецПроцедуры

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

Когда стоит отказаться от нового РМК?

Несмотря на современный дизайн и удобство работы "в одном окне", новое РМК на текущий момент имеет ряд ограничений, которые могут быть критичны для розничной торговли:

Рекомендация: Если ваша маркетинговая система построена на сложных условиях, бонусах и требует интерактивного взаимодействия кассира со скидками, на текущем этапе (редакция 2.3) более стабильным решением остается использование старого РМК. Отключить новый интерфейс можно, сняв галочку "Использовать новое РМК" в настройках продаж.

Таким образом, мы разобрали основные причины неработоспособности скидок. Главный ключ к решению проблемы — публикация HTTP-сервиса и проверка версии конфигурации на наличие патчей, исправляющих запись данных о скидках в документы.

← На главную