Почему терминал PAX300 не делает сверку итогов при закрытии смены в 1С:Розница и как это исправить

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

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

Анализируем конфигурационные файлы терминала

Первым делом нам необходимо исключить вероятность некорректных настроек в самом ПО Сбербанка. Основным файлом конфигурации для терминалов Pilot является pinpad.ini, который обычно располагается в корневой папке драйвера (например, C:\sc552). Проанализируем ключевые параметры, которые могут влиять на печать отчетов:

  1. PrinterType: Этот параметр определяет, куда терминал должен отправлять текст для печати. Если установлено значение 00, терминал пытается использовать собственный встроенный принтер. Однако у выносных пин-падов типа PAX300 его может не быть, или он может быть заблокирован. Для того чтобы текст сверки передавался в 1С и выходил на чековой ленте фискального регистратора, установите значение 01.
  2. ComPort: Убедитесь, что номер порта совпадает с тем, который видит операционная система в диспетчере устройств.
  3. Speed: Скорость обмена данными. Различие в скорости между настройками 1С и файлом pinpad.ini может приводить к потере команд в конце сессии закрытия смены.

Важно помнить, что даже если файлы на разных торговых точках кажутся идентичными, стоит выполнить принудительное обновление параметров. Для этого в папке с драйвером найдите и запустите утилиту loadparm.exe. Она синхронизирует локальные настройки с профилем терминала на сервере банка.

Проверка работы терминала вне среды 1С

Чтобы понять, на чьей стороне проблема — 1С или драйвера Сбербанка, нам нужно выполнить операцию сверки напрямую. В папке sc552 (или аналогичной) обычно присутствуют исполняемые файлы для тестирования. Рассмотрим процесс проверки:

Вызовите командную строку и перейдите в каталог с драйвером. Попробуйте запустить команду сверки вручную через утилиту управления (название может варьироваться в зависимости от версии ПО, часто это sb_pilot.exe с определенными ключами). Если сверка прошла и чек распечатался, значит, оборудование исправно, и корень проблемы кроется во взаимодействии 1С:Розница с библиотекой SBRF.dll. Для устранения подобных проблем совместимости подойдёт инструмент для подключения предыдущей версии драйвера эквайринга Сбербанка в 1С:Розница.

Решение проблемы через внешний бат-файл (Workaround)

Как показывает практика и обсуждения на профессиональных форумах, проблема в типовой 1С:Розница может быть связана с тем, что система не дожидается освобождения COM-порта или завершения внутренних процессов драйвера перед подачей команды на закрытие смены в ФР. Самым надежным способом решения в данном случае является вынос сверки итогов за рамки автоматического цикла 1С.

Мы можем создать исполняемый файл (батник), который кассир будет запускать вручную после закрытия смены в 1С, либо мы можем интегрировать вызов этого файла в саму систему. Создадим файл settle.bat в папке с драйвером:


cd /d C:\sc552
sb_pilot.exe 7

В данном примере число 7 — это код операции сверки итогов для многих версий ПО Сбербанка. Проконсультируйтесь с технической поддержкой банка, чтобы уточнить точную команду для вашей версии драйвера.

Интеграция вызова сверки в 1С:Розница

Если мы хотим автоматизировать процесс, нам необходимо внести изменения в код программы (желательно через механизм расширений), чтобы вызов внешней программы происходил сразу после выполнения метода ЗакрытьСмену. Важный нюанс: 1С должна сначала освободить порт. Разберем примерный алгоритм действий в коде:


// Пример логики вызова внешней сверки итогов
Процедура ПослеЗакрытияСмены()
    // Даем паузу 1-2 секунды, чтобы драйвер 1С отпустил COM-порт
    ПодключитьОбработчикОжидания("ВыполнитьВнешнююСверку", 2, Истина);
КонецПроцедуры

Процедура ВыполнитьВнешнююСверку()
    // Запуск внешнего приложения
    ИмяФайлаСкрипта = "C:\sc552\settle.bat";
    ЗапуститьПриложение(ИмяФайлаСкрипта, "C:\sc552", Истина);
КонецПроцедуры

Такой подход гарантирует, что команда на сверку уйдет в драйвер тогда, когда порт гарантированно свободен, и 1С не будет блокировать поток данных.

Диагностика через лог-файлы

Если решение с батником не помогает, проанализируем файл лога p.log, который создается в папке с ПО терминала. Рассмотрим, на что обратить внимание:

Права доступа и регистрация библиотек

Иногда причина кроется в банальном отсутствии прав на запись в папку драйвера. При сверке итогов драйвер Сбербанка создает временные файлы (например, p, e, results.txt). Если у пользователя Windows, под которым запущена 1С, нет прав на создание/изменение файлов в C:\sc552, процесс сверки прервется без уведомления пользователя.

Также рекомендуем перерегистрировать основные компоненты драйвера. Выполните в командной строке от имени администратора:


regsvr32 C:\sc552\sbrfcom.dll
regsvr32 C:\sc552\sbrf.dll

Подведем итог: если штатная сверка итогов в 1С:Розница 2.2 на терминале PAX300 не работает, наиболее эффективным решением будет использование внешнего скрипта вызова сверки. Это обходит проблему конфликта портов и специфических багов в старых версиях драйверов SBRF, которые часто встречаются в типовых конфигурациях.

← На главную