Тренажёр по выработке терпения
Поймали неприятную ошибку при пробитии чека на оплату, воспроизвожу ситуацию без использования кассового оборудования, нахожу в коде предполагаемый косяк, исправляю, составляю сообщение в ТП. Далее развёрнуто:
Письмо 1:
Имеется документ на некую не круглую сумму с !несколькими! товарами / работами
// скрин
При частичной оплате данного документа %НаименованиеПродукта% пытается распределить сумму оплаты по этим товарам/работам по некоему коэффициенту.
Наглядно это можно увидеть при создании чека на оплату вручную на основании документа
// скрин
распределив сумму в 4000 мы получаем итого
// скрин, в котором показано, что итоговая сумма распределённая равна 3999.98
...что никого не устраивает (ни оборудование, которое отказывается пробивать такие чеки, ни пользователей, которым приходится корректировать вручную ТЧ, чтобы оборудование пробило такой чек, ни руководителей, которым приходится давать права на редактирование чеков, чтобы оборудование...)
Проблема в логике модуля менеджера документа "Чек на оплату" строка 51.
Идёт лишняя проверка на знак ошибки округления, которая равна
ОшибкаОкругления = СуммаДокумента - Товары.Итог("СуммаОплаты");
должно быть
СтрокаТаблицы.СуммаОплаты = СтрокаТаблицы.СуммаОплаты + ОшибкаОкругления;
а у вас вот так
СтрокаТаблицы.СуммаОплаты = СтрокаТаблицы.СуммаОплаты + ?(ОшибкаОкругления <= 0, ОшибкаОкругления, -ОшибкаОкругления);
т.е. если сумма документа меньше итоговой распределённой суммы оплаты, то ошибка округления отрицательная и из распределённой суммы некорректно ВЫЧИТАЕТСЯ ещё и недостающая сумма.
А если сумма документа больше, то мы опять ВЫЧИТАЕМ лишнюю сумму, вместо того, чтобы её добавить.
Ответ ТП 1:
Почему на прилагаемом скриншоте колонка "всего" отличается от колонки "сумма"?
Немного напрягаюсь, т.к. на скрине ясно видно колонку со скидками и пишу
Письмо 2:
Потому что в вашей программе есть скидки.
Далее N писем с уточнениямикакие такие скидки 0_0каким образом получились такие суммы, на каком оборудовании пробиваем. На что я отвечаю, что я до оборудования в своих выкладках даже не дошёл. Всё воспроизвёл ещё до пробития чека, чтобы было нагляднее. И что если сразу пытаться пробить чек, этих всех подробностей не видно, есть только ошибка, которая пользователю ни о чём не говорит и лишь слегка намекает сведущему человеку о месте, в котором возникла проблема. Получаю настойчивое требование...
Ответ ТП 2:
Уточните, пожалуйста, какое оборудование используется, версия драйвера оборудования, версия прошивки и версия офд
Начинаю напрягаться сильнее, как донести до людей, что не использую я оборудование в своём примере? Правильно - указатьфигнюих же тестовое (учебное) оборудование.
Письмо 2+N+1:
ФР Учебный/ЕНВД №1
Версия 1.2.39
Windows принтер Microsoft XPS Document Writer
ОФД не используется
Ответ ТП 2+N+1:
%Username%, можете ли Вы предоставить простой пример для воспроизведения ошибки? чтобы было в чеке 2-3 строки, понятная скидка или бонусы
Матерюсь уже вслух, рожаю скрины элементарного документа о четырёх строках и такой же ошибкой, о чём пишу Письмо 2+N+2. Получаю
Ответ ТП 2+N+2:
Добрый день, %Username%, выяснили проблему, зафиксировали ошибку, исправим в будущем релизе.
На данный момент рекомендуем разбивать чек на суммы, которые при ручном создании чека на оплату распределяются корректно, т.е. пробивать двумя чеками.
Соображаю, что для этого кассирам, которые сами в своих умственных способностях не уверены до конца, требуется решить нехилую такую систему уравнений, предварительно просчитав распределение для строк документа (которое делает 1С) и решаю предоставить ТП вариант попроще, безвозмездно, раз указанный мною вариант исправления в первом письме их не устроил:
Письмо самое последнее (по этой проблеме) ибо устал:
ага, я уже сказал кассирам, чтобы они высчитывали коэффициент распределения оплаты по строке и если видят периодическую дробь, просили у клиента денег больше на 0.01р.