Ошибка в бонусной системе в типовой УТ11
Учетные задачи - Розничная торговля
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Обнаружили вот такую не очень приятную ошибку в бонусной системе УТ11: при оформлении нескольких возвратов по одному клиенту по одному сменному отчету бонусные баллы не списываются, а добавляются.
Создадим бонусную программу лояльности:

Создадим вид карт лояльности:

Создадим вид скидки бонусом для нашего вида карт лояльности:

Сделаем разовое начисление баллов

Теперь оформим продажу - Чек ККМ на какую-либо позицию в количестве 2-х штук, и закроем смену

Посмотрим остатки бонусных баллов:

Теперь проведем последовательно два документа возврата:

После проведения возвратов остаток бонусных баллов должен вернуться в исходное состояние, но не тут-то было:

Две ошибки содержатся в процедуре ЗаполнитьБонусныеБаллыВозвратТоваровОтКлиента модуля БонусныеБаллыСервер.
Во-первых, в запросе к оплатам бонусными баллами - при учете уже выполненных возвратов - разработчики учитывают их со знаком "-":
| ТаблицаБонусныеБаллы.БонуснаяПрограммаЛояльности,
| ТаблицаБонусныеБаллы.ДатаОплаты,
| -ТаблицаБонусныеБаллы.СуммаБонусныхБаллов
| ИЗ
| Документ.ВозвратТоваровОтКлиента.ОплатаБонуснымиБаллами КАК ТаблицаБонусныеБаллы
Хотя по смыслу вот этого участка кода в запросе надо брать со знаком "+":
НоваяСтрока = ТекущийОбъект.ОплатаБонуснымиБаллами.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТЧ, "БонуснаяПрограммаЛояльности, ДатаОплаты");
НоваяСтрока.СуммаБонусныхБаллов = -КСписанию;
Во-вторых, для пропорционального распределения возвращаемых бонусных баллов неправильно берется база распределения - берутся все товары из отчета о розничных продажах, а надо за вычетом уже сделанных возвратов.
В итоге правильный запрос должен выглядеть так:
Для проверки таких ошибок в базе УТ 11 к публикации приложен отчет, который ищет ситуации нескольких возвратов по одному отчету о розничных продажах:

Также приложено расширение конфигурации для исправления указанной ошибки (подключать со снятым флагом "безопасный режим").
Протестировано на релизе УТ 11.4.3.144
Для дополнительного контроля движения бонусных баллов можно воспользоваться отчетом Отчет по движениям (оборотам) бонусных баллов в УТ11
Для информирования клиентов о начислении бонусных баллов по СМС можно посмотреть публикацию СМС о начислении баллов в УТ 11.4
Вступайте в нашу телеграмм-группу Инфостарт