Почему в 1С:Управление торговлей 11.5 бонусные баллы начисляются, но отчеты показывают нулевой остаток?

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

При переходе на новые релизы 1С:Управление торговлей 11.5 (начиная с 11.5.17 и выше) многие пользователи столкнулись с неприятной ситуацией: документы ПриходныйКассовыйЧек или РеализацияТоваровУслуг исправно фиксируют начисление бонусных баллов с учётом оплаты,, движения в регистре накопления БонусныеБаллы присутствуют, однако в отчете «Остатки бонусных баллов» (проверить которые поможет отчет Движение бонусных баллов) и в рабочем месте кассира (РМК) у клиента отображается «0» — для удобства работы в РМК пригодится панель быстрого поиска карты лояльности в РМК. Это делает невозможным оплату покупок бонусами и вызывает недовольство покупателей.

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

Причина 1: Особенности «Механизма 2.5» и регламентное задание

В современных редакциях УТ 11.5 (начиная с версии 11.5.12) была радикально изменена архитектура учета бонусов. Если раньше остаток баллов определялся простым суммированием приходов и расходов по регистру, то в Механизме 2.5 баллы делятся на «начисленные» и «доступные». Для того чтобы начисленные баллы стали доступными для использования, система должна их распределить.

Рассмотрим основной фактор: за этот процесс отвечает регламентное задание РаспределениеСрочныхБонусныхБаллов. Если это задание не выполняется, баллы будут числиться в базе как «сырые» записи, но отчеты по остаткам будут показывать ноль.

Выясним, как проверить и активировать этот механизм:

  1. Перейдем в раздел НСИ и администрирование — Обслуживание — Регламентные операции — Регламентные и фоновые задания.
  2. Найдем в списке задание с наименованием Распределение срочных бонусных баллов.
  3. Проверим его состояние. Если оно выключено — включим и настроим расписание (рекомендуется выполнять раз в несколько минут или хотя бы раз в час, в зависимости от интенсивности продаж).
  4. Выполним задание принудительно, нажав кнопку Выполнить сейчас, и проверим результат в отчете по бонусам.

Причина 2: Константа даты начала работы нового механизма

При обновлении с версии 11.4 на 11.5 система автоматически инициализирует переход на новую схему учета бонусов (в этот момент важно проконтролировать выполнение отложенного обновления информационной базы). За это отвечает специальная константа, которая фиксирует дату, с которой баллы начинают обрабатываться по правилам версии 2.5.

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

Для проверки выполним следующие действия:

  1. Откроем Функции для технического специалиста (через главное меню).
  2. Найдем константу ДатаНачалаПримененияНовогоМеханизмаБонусныхБаллов (или схожую по смыслу в вашем релизе).
  3. Проверим установленное значение. Если оно не соответствует реальности, дату необходимо скорректировать на момент начала ведения бонусной программы или на дату обновления конфигурации.

Причина 3: Некорректная логика «сгорания» и списания баллов

Рассмотрим еще одну техническую проблему, связанную с тем, как система интерпретирует сроки действия баллов. В регистре накопления БонусныеБаллы при начислении фиксируются две даты: дата начала действия и дата окончания (сгорания).

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

В этом случае эффективным решением (как показывает практика коллег) является исправление бонусных баллов через использование документа Начисление и списание бонусных баллов с видом операции Списание (исправление остатков). Это позволяет принудительно скорректировать регистры, если автоматика отработала неверно.

Причина 4: Ошибки кэширования и целостности данных при обновлении

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

Если вы работаете в файловом варианте, выполните следующее:

  1. Создайте резервную копию базы.
  2. В режиме Конфигуратор выполните Администрирование — Выгрузить информационную базу.
  3. Затем выполните Администрирование — Загрузить информационную базу в чистую папку или поверх текущей.

Этот процесс принудительно пересчитывает все индексы и итоги регистров накопления. Как показывает практика, после этой процедуры в ряде случаев баллы начинают отображаться корректно без дополнительных настроек.

Как проверить движения в регистрах программно?

Если вы программист и вам нужно выяснить, почему остаток нулевой, проанализируйте запросы, которыми отчеты получают данные. Система 11.5 часто обращается не только к РегистрНакопления.БонусныеБаллы, но и к вспомогательным данным распределения.

Посмотрим на пример кода, который поможет вам программно проверить текущий остаток по конкретному партнеру (клиенту) и бонусной программе:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	БонусныеБаллыОстатки.БонуснаяПрограммаЛояльности КАК Программа,
    |	БонусныеБаллыОстатки.Партнер КАК Клиент,
    |	БонусныеБаллыОстатки.НачисленоОстаток КАК ВсегоНачислено,
    |	БонусныеБаллыОстатки.КСписаниюОстаток КАК ОжидаетСписания
    |ИЗ
    |	РегистрНакопления.БонусныеБаллы.Остатки(&Период, Партнер = &Партнер) КАК БонусныеБаллыОстатки";

Запрос.УстановитьПараметр("Период", ТекущаяДата());
Запрос.УстановитьПараметр("Партнер", ВыбранныйПартнер);

РезультатЗапроса = Запрос.Выполнить();

Если этот запрос возвращает данные, а типовой отчет — нет, значит, проблема именно в Механизме 2.5 (не отработало распределение или не наступила дата начала применения механизма).

Резюме и рекомендации

Для исправления проблемы с бонусными баллами в УТ 11.5 придерживайтесь следующего алгоритма:

  1. Проверьте регламентное задание Распределение срочных бонусных баллов. Это причина №1 в 90% случаев.
  2. Убедитесь, что константа даты перехода на новую версию бонусов установлена в прошлое (до момента возникновения проблемных начислений).
  3. Проанализируйте настройки бонусной программы (срок действия баллов) — для расширения возможностей учёта есть готовая программа лояльности для 1С:УТ 11. Попробуйте временно убрать ограничение «Бонусы действуют 12 месяцев», чтобы проверить, не вызван ли «нулевой остаток» ошибочным расчетом даты сгорания.
  4. Если ничего не помогает, выполните Тестирование и исправление (ТиИ) или пересоздайте базу через выгрузку/загрузку .dt.

Помните, что в версии 2.5 баллы — это не просто числа, а «срочные» записи, которые требуют постоянной фоновой обработки сервером 1С.

← На главную