При переходе на новые релизы 1С:Управление торговлей 11.5 (начиная с 11.5.17 и выше) многие пользователи столкнулись с неприятной ситуацией: документы ПриходныйКассовыйЧек или РеализацияТоваровУслуг исправно фиксируют начисление бонусных баллов с учётом оплаты,, движения в регистре накопления БонусныеБаллы присутствуют, однако в отчете «Остатки бонусных баллов» (проверить которые поможет отчет Движение бонусных баллов) и в рабочем месте кассира (РМК) у клиента отображается «0» — для удобства работы в РМК пригодится панель быстрого поиска карты лояльности в РМК.
Это делает невозможным оплату покупок бонусами и вызывает недовольство покупателей.
Проанализируем ситуацию и разберем по шагам, почему так происходит и как восстановить справедливый расчет баллов.
В современных редакциях УТ 11.5 (начиная с версии 11.5.12) была радикально изменена архитектура учета бонусов. Если раньше остаток баллов определялся простым суммированием приходов и расходов по регистру, то в Механизме 2.5 баллы делятся на «начисленные» и «доступные». Для того чтобы начисленные баллы стали доступными для использования, система должна их распределить.
Рассмотрим основной фактор: за этот процесс отвечает регламентное задание РаспределениеСрочныхБонусныхБаллов. Если это задание не выполняется, баллы будут числиться в базе как «сырые» записи, но отчеты по остаткам будут показывать ноль.
Выясним, как проверить и активировать этот механизм:
Распределение срочных бонусных баллов.При обновлении с версии 11.4 на 11.5 система автоматически инициализирует переход на новую схему учета бонусов (в этот момент важно проконтролировать выполнение отложенного обновления информационной базы). За это отвечает специальная константа, которая фиксирует дату, с которой баллы начинают обрабатываться по правилам версии 2.5.
Проанализируем ситуацию: если эта дата установлена некорректно (например, числом более поздним, чем реальные начисления), то старые баллы могут «потеряться» для системы, так как они еще не подлежат распределению по новой логике, а старая логика уже отключена.
Для проверки выполним следующие действия:
ДатаНачалаПримененияНовогоМеханизмаБонусныхБаллов (или схожую по смыслу в вашем релизе).Рассмотрим еще одну техническую проблему, связанную с тем, как система интерпретирует сроки действия баллов. В регистре накопления БонусныеБаллы при начислении фиксируются две даты: дата начала действия и дата окончания (сгорания).
Проблема возникает, когда клиент частично тратит баллы. В Механизме 2.5 логика списания иногда дает сбой: система может «забыть» уменьшить остаток к списанию по конкретной записи регистра, даже если баллы уже были потрачены в другом чеке. В результате в регистре висит запись о том, что баллы должны сгореть (например, через месяц), и система блокирует их доступность сегодня, считая, что их остаток равен нулю из-за будущих списаний.
В этом случае эффективным решением (как показывает практика коллег) является исправление бонусных баллов через использование документа Начисление и списание бонусных баллов с видом операции Списание (исправление остатков). Это позволяет принудительно скорректировать регистры, если автоматика отработала неверно.
Посмотрим на технический аспект перехода на версию 11.5.17.227. Иногда штатное обновление оставляет «хвосты» в итогах регистров. Разберем не очевидное, но работающее решение, предложенное на профессиональных форумах: выгрузка и загрузка базы через формат .dt.
Если вы работаете в файловом варианте, выполните следующее:
Этот процесс принудительно пересчитывает все индексы и итоги регистров накопления. Как показывает практика, после этой процедуры в ряде случаев баллы начинают отображаться корректно без дополнительных настроек.
Если вы программист и вам нужно выяснить, почему остаток нулевой, проанализируйте запросы, которыми отчеты получают данные. Система 11.5 часто обращается не только к РегистрНакопления.БонусныеБаллы, но и к вспомогательным данным распределения.
Посмотрим на пример кода, который поможет вам программно проверить текущий остаток по конкретному партнеру (клиенту) и бонусной программе:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| БонусныеБаллыОстатки.БонуснаяПрограммаЛояльности КАК Программа,
| БонусныеБаллыОстатки.Партнер КАК Клиент,
| БонусныеБаллыОстатки.НачисленоОстаток КАК ВсегоНачислено,
| БонусныеБаллыОстатки.КСписаниюОстаток КАК ОжидаетСписания
|ИЗ
| РегистрНакопления.БонусныеБаллы.Остатки(&Период, Партнер = &Партнер) КАК БонусныеБаллыОстатки";
Запрос.УстановитьПараметр("Период", ТекущаяДата());
Запрос.УстановитьПараметр("Партнер", ВыбранныйПартнер);
РезультатЗапроса = Запрос.Выполнить();
Если этот запрос возвращает данные, а типовой отчет — нет, значит, проблема именно в Механизме 2.5 (не отработало распределение или не наступила дата начала применения механизма).
Для исправления проблемы с бонусными баллами в УТ 11.5 придерживайтесь следующего алгоритма:
Распределение срочных бонусных баллов. Это причина №1 в 90% случаев..dt.Помните, что в версии 2.5 баллы — это не просто числа, а «срочные» записи, которые требуют постоянной фоновой обработки сервером 1С.