В статье infostart.ru/public/259667 я делился опытом подключения POS терминала Hypercom Optimum T4220 К Рознице 1.0 Финальным аккордом являлась успешная интеграция. Да не тут то было! при тестировании было выявлено, что возврат по кассе не проходил, но по пос терминалу он был успешно авторизован. Оставалось разобраться в чем дело. на стороне терминала проблем нет — сумма возврата успешно уходила на карту. Пришла в голову идея проверить как отрабатывает возврат при оплате наличными. Анализ ТИПОВОГО исходного кода показал странные моменты в коде. Расскажу по подробнее.
В модуле объекта документа ЧекККМ присутствует Функция ПолучитьСтрокиРасхожденияПоОплатеСЧекомПродажи(ДанныеДокумента) Экспорт
Данный код отрабатывает при возврате. Не могу детально рассказать что она делает, но меня смутил вот этот код:
Если Не ЗначениеЗаполнено(СтрокаТаблицыЗначений.ВидОплаты) ИЛИ СтрокаТаблицыЗначений.ВидОплаты.ТипОплаты = Перечисления.ТипыОплатЧекаККМ.Наличные ИЛИ СтрокаТаблицыЗначений.ВидОплаты = Справочники.ВидыОплатЧекаККМ.ОплатаПодарочнымСертификатом Тогда ТаблицаОплат.Удалить(СтрокаТаблицыЗначений); КонецЕсли;
Как мы видим, в проверке возврата видно что имеются перечисления возврата ч/з наличные и подарочный сертификат. Помимо этого, чуть ниже этого кода есть запрос, в котором указаны точно такие же условия(отрывок запроса):
| ГДЕ | ЧекККМОплата.Ссылка = &ДокументОснование | И ЧекККМОплата.ВидОплаты.ТипОплаты <> ЗНАЧЕНИЕ(Перечисление.ТипыОплатЧекаККМ.Наличные) | И (НЕ ЧекККМОплата.ВидОплаты = ЗНАЧЕНИЕ(Справочник.ВидыОплатЧекаККМ.ОплатаПодарочнымСертификатом))
Как мы видим ни про какое перечисление платежной картой здесь нет..ради интереса добавим его:
Если Не ЗначениеЗаполнено(СтрокаТаблицыЗначений.ВидОплаты) ИЛИ СтрокаТаблицыЗначений.ВидОплаты.ТипОплаты = Перечисления.ТипыОплатЧекаККМ.Наличные ИЛИ СтрокаТаблицыЗначений.ВидОплаты.ТипОплаты = Перечисления.ТипыОплатЧекаККМ.ПлатежнаяКарта ИЛИ СтрокаТаблицыЗначений.ВидОплаты = Справочники.ВидыОплатЧекаККМ.ОплатаПодарочнымСертификатом Тогда ТаблицаОплат.Удалить(СтрокаТаблицыЗначений); КонецЕсли;
И в запрос:
| ГДЕ | ЧекККМОплата.Ссылка = &ДокументОснование | И ЧекККМОплата.ВидОплаты.ТипОплаты <> ЗНАЧЕНИЕ(Перечисление.ТипыОплатЧекаККМ.Наличные) | И ЧекККМОплата.ВидОплаты.ТипОплаты <> ЗНАЧЕНИЕ(Перечисление.ТипыОплатЧекаККМ.ПлатежнаяКарта) | И (НЕ ЧекККМОплата.ВидОплаты = ЗНАЧЕНИЕ(Справочник.ВидыОплатЧекаККМ.ОплатаПодарочнымСертификатом))
и вуаля! возврат успешно прошел! Не могу с уверенностью сказать нашел ли я изъян в рознице или просто что то не понял, но сейчас возврат заработал. Возможно, точно такая же проблема присутствует в Рознице 2.0, а быть может и в УТ..надо смотреть
Не знаю, в чём проблема была у вас, но у одного клиента чей-то терминал оплаты подключал к Рознице 1.0, и возврат нормально работал. Не помню, чтоб я что-то допиливал в этой части. Подозреваю, что дело в конкретном релизе конфигурации.
(1) wolfsoft, спасибо за инфу. я все таки искал у кого все нормально прошло, а не как у нас. Релиз конфигурации: Розница, редакция 1.0 (1.0.14.3), 1С:Предприятие 8.1 (8.1.15.14)
Я бы не против посмотреть в будущих релизах, быть может вы и правы — дело в релизе..
А какой у вас был терминал?
На 8.1… Да вы маньяк, батенька!!! 🙂 Хотя дело, конечно, не в платформе. Только вот я не помню, чтоб я исправляла такое именно в конфигурации. Я бы сослалась на обработку подключения самого оборудования
Это не ошибка. С тем же успехом можно закомментировать всё содержимое этой функции и всегда возвращать из неё пустой массив. Эффект будет почти такой же. Суть этой проверки — чтобы оплата проведённая картой не возвращалась налом. Защита от мошенничества и раздолбайства продавцов такая.
(5) saiten, а как тогда поступить более правильнее? то есть моя доработка будет являться ошибкой? я кстати, не тестировал возврат в случае если оплата была картой, а кассир выбрал нал. и наоборот
(6) Хм… Если оплата одним видом оплаты, тогда ошибка возникать не должна…
(7) saiten, эх, если бы все было так…
(8) Т.е. вид оплаты и сумма чека продажи совпадает с видом оплаты и суммой чека возврата и всё равно пишет ошибку?
(9) saiten, Да,http://prntscr.com/2y2t6z скриншот
Добрый день! Подскажите пожалуйста,правильно делает мой клиент или нет. У клиента магазин,там стоит программа Розница 8 (релиз не уточняла),работают с оплатой по банковским картам, в бухгалтерии стоит программа Бухгалтерия 2.0,каждый день магазин скидывает им «Отчет по розничным продажам». Вопрос: от покупателя был сделан возврат товара через карту, не в тот же день (допустим,через 3 дня). В магазине оформили возврат товара по документам (все как надо) и корректировку долга по карте клиента,это все загружается в Бухгалтерию 2.0. Следовательно,в бухгалтерии 2.0 мы имеем «Возврат товара» и «Корректировку долга» ( Корректировка долга идет,как я понимаю, «списание задолженности», т.к. остальное не подходит). Это правильно будет или еще что-то надо сделать в программе?
(11) В рознице 1.0 есть документ Оплата платежной картой от покупателя, его можно использовать с видом операции Возврат денежных средств покупателю.
В КД посмотрите правила обмена, как этот документ грузится в бухгалтерию. Если он используется в этом обмене, тогда однозначно никаких корректировок долга!!!
Замечено, что с операцией возврата везде всегда проблемы. Хорошо если простая ошибка с желтым окошком.