Вопрос оформления возвратов, особенно частичных и совершенных не в день покупки, часто вызывает затруднения у пользователей и администраторов системы 1С:Розница 2.3. В этой статье мы подробно разберем, как реализован этот механизм в актуальных версиях программы, проанализируем технические ограничения и выясним, какие данные необходимы для успешного проведения транзакции через эквайринговый терминал.
Для начала проанализируем ситуацию с точки зрения банковских протоколов. Важно понимать, что для банковского терминала существует две принципиально разные операции, которые зависят от того, была ли произведена сверка итогов (закрытие смены на терминале):
Отмена (Void). В этом случае транзакция просто аннулируется, и деньги на карте покупателя «размораживаются». Долгое время программное обеспечение многих банков поддерживало только полную отмену чека.Возврат (Refund). Это полноценное движение денежных средств, инициируемое продавцом. Сумма списывается с расчетного счета организации и зачисляется на счет покупателя.В современных релизах 1С:Розница 2.3 (начиная с ветки 2.3.6.17 и выше) реализована полноценная поддержка частичных возвратов для обоих сценариев. Однако успех операции во многом зависит от версии используемого драйвера эквайринга.
Рассмотрим условия, без которых частичный возврат может завершиться ошибкой. Для проведения операции после закрытия смены системе критически важно наличие следующих данных исходной продажи:
В старых релизах 1С эти данные могли сохраняться некорректно, что вынуждало пользователей делать полный возврат и новую продажу. В актуальных версиях 1С:Розница эти реквизиты автоматически подтягиваются из документа ЭквайринговаяОперация, связанного с чеком продажи. Если данные отсутствуют, терминал может выдать ошибку «Операция не поддерживается».
Этот способ наиболее привычен для кассиров. Рассмотрим алгоритм действий:
Оплатить 1С отправит на терминал команду на выполнение операции Refund именно на частичную сумму.Важный момент: Если терминал подключен в режиме «без оборудования» (автономно), кассиру придется вручную ввести сумму возврата на терминале и подтвердить выполнение в 1С. Если же терминал интегрирован, программа сама передаст нужные параметры.
Методически более правильным для возвратов «не день в день» считается использование административной части программы. Это позволяет избежать лишней нагрузки на кассовую смену и корректно оформить все сопроводительные документы (заявление на возврат и т.д.).
Разберем этот процесс по шагам:
Чек или ОтчетОРозничныхПродажах).Сумма соответствует стоимости возвращаемого товара.В этот момент программа обратится к драйверу эквайринга. Рассмотрим пример логики, которая срабатывает «под капотом»:
// Пример логики обработки возврата
Если СменаЗакрыта На Терминале Тогда
Результат = ЭквайринговаяСистема.ВыполнитьОперацию("Refund", СуммаВозврата, ДанныеПервичногоЧека.RRN);
Иначе
Результат = ЭквайринговаяСистема.ВыполнитьОперацию("Void", СуммаВозврата, ДанныеПервичногоЧека.ИдентификаторТранзакции);
КонецЕсли;
Проанализируем ситуацию, если покупка была совершена по QR-коду через СБП. В 1С:Розница 2.3 частичный возврат через СБП реализован максимально гибко. Так как API банков для СБП изначально проектировалось под онлайн-взаимодействие, частичные возвраты проходят без проблем в любой день. Вам достаточно лишь указать сумму к возврату, и система мгновенно проведет транзакцию через банковский сервис.
Если при попытке частичного возврата вы видите сообщение об ошибке, выполним диагностику по следующему чек-листу:
Администрирование — Подключаемое оборудование. Проверьте версию драйвера вашего терминала (Сбербанк, ВТБ, Ingenico и др.). Если драйвер устарел, он может не знать команду на частичный возврат после сверки итогов.Эквайринговые терминалы установлена галочка «Использовать без подключения оборудования», если вы проводите операции на терминале вручную. Если же терминал подключен, убедитесь, что в настройках РМК разрешены возвраты.Таким образом, мы выяснили, что 1С:Розница 2.3 полностью поддерживает частичные возвраты на карту не в день покупки. Главное — использовать актуальный релиз программы и следить за корректностью данных в документе продажи.