Рассмотрим распространенную и крайне неприятную проблему: периодические сбои программы 1С:Розница 2.3 в момент пробития чека с оплатой по банковской карте. Ситуация проявляется в виде аварийного завершения работы 1С с ошибкой приложения 1cv8.exe, где в качестве сбойного модуля указываются системные библиотеки dialog_forms.dll или ntdll.dll. Последствия могут быть разными: печатается только слип-чек, а фискальный — нет; чек ККМ зависает в очереди; или же после перезапуска 1С проведенный документ и вовсе исчезает. Проблема носит плавающий характер и может возникать от одного до нескольких раз в день, вызывая простои на кассе.
Проанализируем ситуацию на конкретном примере и разберем надежный способ ее решения, который заключается в смене способа подключения эквайрингового терминала Сбербанка.
Причина нестабильной работы часто кроется не в "железе" или ошибках конфигурации 1С, а в драйвере, который обеспечивает взаимодействие программы с пин-падом. Для подключения терминалов Сбербанка в 1С исторически существует два основных подхода, которые условно можно разделить на две версии.
1. Драйвер "1С:Эквайринговые терминалы Сбербанк 1.Х"
Это наиболее распространенный вариант, который использует библиотеки sbrf.dll и gate.dll из папки sc552. Его главная отличительная черта — при оплате на экране появляется фирменное зеленое графическое окно Сбербанка для ввода пин-кода и взаимодействия с картой. Именно эта тесная интеграция графического интерфейса драйвера с платформой 1С, по-видимому, и вызывает конфликты с системными библиотеками, приводя к аварийному завершению работы.
2. Драйвер "1С:Эквайринговые терминалы Сбербанк 2.Х"
Этот драйвер работает по другому принципу. Он не имеет собственного графического интерфейса, а взаимодействует с терминалом через внешнюю утилиту-посредник — pilot_nt.exe или ее более современный аналог sb_pilot.exe. При оплате вместо зеленого окна на экране появляется черное консольное окно (как в командной строке), где текстом отображаются все этапы операции: "Приложите карту", "Связь с банком", "Операция одобрена" и т.д. Такой подход более стабилен, так как процесс обмена данными с терминалом вынесен за пределы основного процесса 1cv8.exe, что исключает прямые конфликты, приводящие к сбою.
Решение проблемы заключается в переходе с нестабильного драйвера версии 1.Х на более надежный консольный драйвер версии 2.Х.
Разберем по шагам, как выполнить переход и настроить оборудование для стабильной работы.
Получение необходимых файлов от Сбербанка
Ключевой момент — получение комплекта файлов для работы через pilot_nt.exe. Эти файлы должны предоставляться технической поддержкой Сбербанка. При обращении будьте настойчивы. Возможно, инженеры на первой линии не сразу поймут, о чем речь, и будут предлагать стандартные решения. Четко сформулируйте задачу: "Необходим комплект драйверов для подключения терминала к 1С через pilot_nt.exe (или sb_pilot.exe)". Иногда они называют этот способ "старым" или "консольным". Вам должны предоставить архив с утилитой и сопутствующими файлами, включая pinpad.ini.
Настройка подключаемого оборудования в 1С
После того как файлы получены и распакованы в отдельную папку (например, C:\SC552_pilot), необходимо перенастроить оборудование в 1С:
1С:Эквайринговые терминалы Сбербанк 1.Х на 1С:Эквайринговые терминалы Сбербанк 2.Х.pilot_nt.exe).Проверка и нюансы работы
Теперь при проведении оплаты через карту вместо привычного зеленого окна будет появляться черная консоль. Не пугайтесь, это нормальное поведение нового драйвера.
Важный момент: часто после такой настройки при нажатии на кнопку "Тест устройства" в параметрах оборудования 1С может выдавать ошибку. Не обращайте на это внимания. Несмотря на ошибку теста, основные операции (оплата, отмена, сверка итогов) в 99% случаев будут работать корректно непосредственно из Рабочего места кассира (РМК). Проверьте работу, пробив тестовый чек.
Даже после перехода на новый драйвер могут возникнуть некоторые сложности. Рассмотрим, как с ними справиться.
pinpad.ini. Убедитесь, что в конфигурационном файле pinpad.ini, который идет в комплекте с драйвером, корректно указан COM-порт, к которому подключен ваш терминал Verifone или PAX. Неправильный порт — частая причина, по которой терминал не отвечает.dialog_forms.dll и ntdll.dll могут быть также спровоцированы поврежденным кэшем. Регулярная очистка кэша платформы 1С является хорошей профилактической мерой.Таким образом, переход на консольный драйвер Сбербанка версии 2.Х является проверенным и эффективным методом решения проблемы с аварийным завершением работы 1С:Розницы при эквайринговых операциях. Этот способ повышает общую стабильность кассового узла и избавляет от простоев в работе.