Как настроить корректный возврат по платежной карте через терминал в 1С:Управление торговлей 10.3?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

В процессе работы с торговым оборудованием в конфигурации «Управление торговлей», редакция 10.3, пользователи часто сталкиваются с ситуацией, когда при оформлении возврата в режиме кассира (через интерфейс РМК) программа либо предлагает вернуть деньги наличными (игнорируя тип исходной оплаты), либо печатает чек с типом «безналичные», но сам банковский терминал не активируется. Это приводит к тому, что фискальный учет в 1С проходит, а фактического движения средств по банковскому счету клиента не происходит. Рассмотрим подробно, как устроена логика возвратов по эквайрингу и как исправить ошибки в работе системы.

Разберем логику формирования чека на возврат

Первым делом проанализируем, как 1С определяет способ возврата. В типовой конфигурации УТ 10.3 заложена жесткая зависимость: тип оплаты в чеке возврата должен соответствовать типу оплаты в исходном чеке продажи. Если в исходном документе ЧекККМ была указана «Оплата» наличными, то и возврат будет предложен наличными. Если же была «Платежная карта», программа обязана инициировать операцию по эквайрингу.

Выясним причину, по которой система может «забывать» о безналичном расчете. За заполнение данных при возврате отвечает процедура ОбработкаЗаполнения в модуле объекта документа ЧекККМ. Проанализируем фрагмент кода, который отвечает за перенос данных из основания:


Если ТипЗнч(Основание) = Тип("ДокументСсылка.ЧекККМ") Тогда
    // Копирование табличной части Оплата из чека продажи
    Оплата.Загрузить(Основание.Оплата.Выгрузить());
КонецЕсли;

Если в вашей конфигурации вносились изменения (она была «допилена»), необходимо убедиться, что этот фрагмент кода присутствует и работает корректно. Если табличная часть Оплата не заполняется из основания, программа по умолчанию подставит тип оплаты «Наличные», что и приводит к ошибке, описанной в первом сообщении темы.

Почему чек печатается как «безналичный», но терминал «молчит»?

Ситуация усложняется, когда в чеке ККМ все указано верно (безналичный расчет), но команда на банковский терминал (например, Сбербанк) не уходит. Проанализируем ситуацию по шагам. Для того чтобы 1С подала сигнал драйверу эквайринга, должны быть соблюдены следующие условия:

  1. Заполнение эквайрингового терминала: В табличной части Оплата документа ЧекККМ (на возврат) обязательно должно быть заполнено поле ЭквайринговыйТерминал. Если это поле пустое, 1С считает, что вы используете «автономный» терминал, и просто закрывает чек на фискальном регистраторе без вызова внешнего драйвера.
  2. Вид оплаты: В справочнике Виды оплат для используемого типа оплаты должен быть установлен тип «Платежная карта».
  3. Настройка торгового оборудования: В настройках обработки обслуживания (например, SberBankES_v2.epf) не должен стоять флаг «Использовать терминал без подключения к кассе».

Различие между «Отменой» и «Возвратом» (смена открыта или закрыта)

Важно понимать техническое различие в командах, которые 1С отправляет на терминал, так как это влияет на поведение системы:

Операция «Отмена» (смена еще не закрыта): Если покупатель возвращает товар в день покупки до закрытия кассовой смены, 1С должна выполнять команду «Отмена операции». В этом случае в ЧекККМ с видом «Чек на возврат» происходит обращение к терминалу, и деньги возвращаются мгновенно. Рассмотрим, что в новых версиях УТ 10.3 (начиная с 10.3.55 и выше) алгоритмы взаимодействия с драйверами были обновлены для соответствия ФФД 1.05, поэтому первым шагом к решению проблемы часто является простое обновление конфигурации до последнего актуального релиза.

Операция «Возврат» (смена закрыта): Если возврат происходит в другой день, процедура иная. Вместо ЧекККМ используется связка документов: Возврат товаров от покупателя -> Эквайринговая операция с видом «Возврат денежных средств покупателю». Именно документ Эквайринговая операция содержит кнопку «Оплатить», которая инициирует связь с терминалом после закрытия смены.

Программное исправление для «допиленных» конфигураций

Если обновление невозможно или не помогло, программисту следует проверить процедуру, отвечающую за печать чека. Посмотрим на пример логики, которую необходимо проверить в модуле формы или документа:

При проведении возврата программа ищет в таблице оплат строки, где тип оплаты совпадает с Перечисления.ВидыОплатЧекаККМ.ПлатежнаяКарта. Если такая строка найдена, вызывается функция ОплатитьКартой() из глобального модуля или модуля обработки торгового оборудования. Проверьте, что при заполнении возврата на основании в таблицу оплат переносится не только сумма, но и ссылка на договор эквайринга и эквайринговый терминал.

Чек-лист для устранения неисправности

Для окончательного решения проблемы рекомендуется выполнить следующие действия:

  1. Проверить версию конфигурации: Как отмечалось в сообщениях форума, обновление до версии 10.3.60+ часто снимает вопросы с некорректным поведением терминала при возвратах.
  2. Проверить заполнение ТЧ «Оплата»: Откройте проблемный документ ЧекККМ на возврат, перейдите на вкладку «Оплата» (если она видна в вашем интерфейсе) и убедитесь, что там указан ваш эквайринговый терминал.
  3. Отладка в коде: Поставьте точку останова в процедуре ОбработкаЗаполнения документа ЧекККМ. Посмотрите, заполняется ли переменная Оплата. Если она пустая, добавьте код принудительного копирования оплат из исходного чека.
  4. Проверка драйвера: Убедитесь, что библиотека SberBank.dll (или аналогичная для вашего банка) зарегистрирована в системе и 1С видит устройство в справочнике «Торговое оборудование». Попробуйте выполнить тест устройства из настроек.

Таким образом, основная причина того, что 1С «молчит» при возврате, заключается либо в программной ошибке заполнения реквизитов платежа в документе возврата, либо в несоответствии версии программы современным требованиям протоколов обмена с банковским ПО. Следуя приведенным шагам, вы сможете восстановить корректную цепочку действий: от нажатия кнопки «Возврат» в 1С до активации пин-пада для прикладывания карты покупателя.

← На главную