Всем, у кого не проходит возврат через пластиковую карту в 1С:Рознице, посвящается…

Решение проблемы с возвратом денежных средств в режиме РМК через POS терминал

В статье infostart.ru/public/259667 я делился  опытом подключения POS терминала Hypercom Optimum T4220 К Рознице 1.0 Финальным аккордом являлась успешная интеграция. Да не тут то было! при тестировании было выявлено, что возврат по кассе не проходил, но по пос терминалу он был успешно авторизован. Оставалось разобраться в чем дело. на стороне терминала проблем нет — сумма возврата успешно уходила на карту. Пришла в голову идея проверить как отрабатывает возврат при оплате наличными. Анализ ТИПОВОГО исходного кода показал странные моменты в коде. Расскажу по подробнее.

В модуле объекта документа ЧекККМ присутствует Функция ПолучитьСтрокиРасхожденияПоОплатеСЧекомПродажи(ДанныеДокумента) Экспорт

Данный код отрабатывает при возврате. Не могу детально рассказать что она делает, но меня смутил вот этот код:

Если Не ЗначениеЗаполнено(СтрокаТаблицыЗначений.ВидОплаты)
 ИЛИ СтрокаТаблицыЗначений.ВидОплаты.ТипОплаты = Перечисления.ТипыОплатЧекаККМ.Наличные
 ИЛИ СтрокаТаблицыЗначений.ВидОплаты = Справочники.ВидыОплатЧекаККМ.ОплатаПодарочнымСертификатом Тогда
ТаблицаОплат.Удалить(СтрокаТаблицыЗначений);
КонецЕсли;

Как мы видим, в проверке возврата видно что имеются перечисления возврата ч/з наличные и подарочный сертификат. Помимо этого, чуть ниже этого кода есть запрос, в котором указаны точно такие же условия(отрывок запроса):

| ГДЕ
| ЧекККМОплата.Ссылка = &ДокументОснование
| И ЧекККМОплата.ВидОплаты.ТипОплаты <> ЗНАЧЕНИЕ(Перечисление.ТипыОплатЧекаККМ.Наличные)
| И (НЕ ЧекККМОплата.ВидОплаты = ЗНАЧЕНИЕ(Справочник.ВидыОплатЧекаККМ.ОплатаПодарочнымСертификатом))

Как мы видим ни про какое перечисление платежной картой здесь нет..ради интереса добавим его:

Если Не ЗначениеЗаполнено(СтрокаТаблицыЗначений.ВидОплаты)
 ИЛИ СтрокаТаблицыЗначений.ВидОплаты.ТипОплаты = Перечисления.ТипыОплатЧекаККМ.Наличные
 ИЛИ СтрокаТаблицыЗначений.ВидОплаты.ТипОплаты = Перечисления.ТипыОплатЧекаККМ.ПлатежнаяКарта
 ИЛИ СтрокаТаблицыЗначений.ВидОплаты = Справочники.ВидыОплатЧекаККМ.ОплатаПодарочнымСертификатом Тогда
ТаблицаОплат.Удалить(СтрокаТаблицыЗначений);
КонецЕсли;
И в запрос:
| ГДЕ
| ЧекККМОплата.Ссылка = &ДокументОснование
| И ЧекККМОплата.ВидОплаты.ТипОплаты <> ЗНАЧЕНИЕ(Перечисление.ТипыОплатЧекаККМ.Наличные)
| И ЧекККМОплата.ВидОплаты.ТипОплаты <> ЗНАЧЕНИЕ(Перечисление.ТипыОплатЧекаККМ.ПлатежнаяКарта)
| И (НЕ ЧекККМОплата.ВидОплаты = ЗНАЧЕНИЕ(Справочник.ВидыОплатЧекаККМ.ОплатаПодарочнымСертификатом))

и вуаля! возврат успешно прошел! Не могу с уверенностью сказать нашел ли я изъян в рознице или просто что то не понял, но сейчас возврат заработал. Возможно, точно такая же проблема присутствует в Рознице 2.0, а быть может и в УТ..надо смотреть

13 Comments

  1. wolfsoft

    Не знаю, в чём проблема была у вас, но у одного клиента чей-то терминал оплаты подключал к Рознице 1.0, и возврат нормально работал. Не помню, чтоб я что-то допиливал в этой части. Подозреваю, что дело в конкретном релизе конфигурации.

    Reply
  2. rayastar

    (1) wolfsoft, спасибо за инфу. я все таки искал у кого все нормально прошло, а не как у нас. Релиз конфигурации: Розница, редакция 1.0 (1.0.14.3), 1С:Предприятие 8.1 (8.1.15.14)

    Я бы не против посмотреть в будущих релизах, быть может вы и правы — дело в релизе..

    А какой у вас был терминал?

    Reply
  3. rayastar
  4. orehova123

    На 8.1… Да вы маньяк, батенька!!! 🙂 Хотя дело, конечно, не в платформе. Только вот я не помню, чтоб я исправляла такое именно в конфигурации. Я бы сослалась на обработку подключения самого оборудования

    Reply
  5. saiten

    Это не ошибка. С тем же успехом можно закомментировать всё содержимое этой функции и всегда возвращать из неё пустой массив. Эффект будет почти такой же. Суть этой проверки — чтобы оплата проведённая картой не возвращалась налом. Защита от мошенничества и раздолбайства продавцов такая.

    Reply
  6. rayastar

    (5) saiten, а как тогда поступить более правильнее? то есть моя доработка будет являться ошибкой? я кстати, не тестировал возврат в случае если оплата была картой, а кассир выбрал нал. и наоборот

    Reply
  7. saiten

    (6) Хм… Если оплата одним видом оплаты, тогда ошибка возникать не должна…

    Reply
  8. rayastar

    (7) saiten, эх, если бы все было так…

    Reply
  9. saiten

    (8) Т.е. вид оплаты и сумма чека продажи совпадает с видом оплаты и суммой чека возврата и всё равно пишет ошибку?

    Reply
  10. rayastar

    (9) saiten, Да, http://prntscr.com/2y2t6z скриншот

    Reply
  11. KillHunter

    Добрый день! Подскажите пожалуйста,правильно делает мой клиент или нет. У клиента магазин,там стоит программа Розница 8 (релиз не уточняла),работают с оплатой по банковским картам, в бухгалтерии стоит программа Бухгалтерия 2.0,каждый день магазин скидывает им «Отчет по розничным продажам». Вопрос: от покупателя был сделан возврат товара через карту, не в тот же день (допустим,через 3 дня). В магазине оформили возврат товара по документам (все как надо) и корректировку долга по карте клиента,это все загружается в Бухгалтерию 2.0. Следовательно,в бухгалтерии 2.0 мы имеем «Возврат товара» и «Корректировку долга» ( Корректировка долга идет,как я понимаю, «списание задолженности», т.к. остальное не подходит). Это правильно будет или еще что-то надо сделать в программе?

    Reply
  12. orehova123

    (11) В рознице 1.0 есть документ Оплата платежной картой от покупателя, его можно использовать с видом операции Возврат денежных средств покупателю.

    В КД посмотрите правила обмена, как этот документ грузится в бухгалтерию. Если он используется в этом обмене, тогда однозначно никаких корректировок долга!!!

    Reply
  13. jobkostya1c8

    Замечено, что с операцией возврата везде всегда проблемы. Хорошо если простая ошибка с желтым окошком.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *