Перевод сильно доработанных и устаревших конфигураций, таких как Управление торговлей 10.3, на требования 54-ФЗ при работе пользователей через терминальный сервер (RDP) — частая задача при автоматизации торговых точек. Разберем по шагам, как выстроить архитектуру подключения оборудования, доработать конфигурацию и избежать типичных сбоев драйвера.
Варианты подключения ККТ к терминальному серверу
Проанализируем основные способы физического и логического подключения контрольно-кассовой техники к сеансу 1С на сервере:
Проброс локального COM-порта через RDP. Стандартный способ: локальный порт ПК (физический COM или виртуальный через USB) пробрасывается в терминальную сессию. На сервере устанавливается драйвер ККТ, настраивается опрос соответствующего порта. При узком канале связи рекомендуется снизить скорость порта в свойствах оборудования. Минус подхода — при обрыве RDP-сессии соединение с портом может не восстановиться автоматически.
Прямое подключение ККТ по Ethernet / IP. Если модель кассы оснащена сетевым интерфейсом (например, Атол 22Ф, 55Ф или Штрих-М с сетевой картой), аппарат подключается напрямую в локальную сеть магазина или связывается с сервером через защищенный туннель (VPN). Программа 1С обращается к кассе по фиксированному IP-адресу без использования механизмов проброса портов RDP.
Сетевой драйвер производителя или специализированные службы (FDSVC). Для моделей без Ethernet-порта можно использовать службы сетевой печати (например, входящие в состав драйверов ККТ или сервис FDSVC). Служба запускается на локальном компьютере с подключенной кассой и предоставляет сетевой доступ к устройству для терминального сервера.
Подключение через RNDIS / Ethernet-over-USB. Позволяет аппарату использовать сетевой интерфейс USB для прямой передачи фискальных данных оператору (ОФД) и одновременного обмена с учетной системой.
Доработка конфигурации УТ 10.3 под требования 54-ФЗ
Рассмотрим порядок обновления программного кода, если типовая поддержка 54-ФЗ в вашей базе отсутствует из-за сильных доработок конфигурации:
Перенос механизмов из актуальной типовой конфигурации. Возьмем релиз типовой УТ 10.3 с поддержкой 54-ФЗ или последнюю версию библиотеки подключаемого оборудования (БПО). Переносим общие модули интеграции с драйверами (включая ПодключаемоеОборудованиеУниверсальныйДрайверКлиент), макеты внешних компонент и формы настройки торгового оборудования.
Разделение настроек оборудования по пользователям и рабочим местам. Важнейший этап для многопользовательского режима в RDP. Обязательно настраиваем хранение параметров касс с привязкой не только к компьютеру, но и к конкретному пользователю или сетевому клиенту. В противном случае при старте программы или открытии списков документов система попытается опросить и заблокировать все зарегистрированные кассы сразу, вызвав блокировки портов и ошибки доступа у остальных кассиров.
Сценарий оформления документов. Стандартная логика работы продавца выглядит следующим образом:
В начале смены выполняется команда открытия кассовой смены на ККТ.
При приеме наличных создается документ Приходный кассовый ордер и инициируется фискализация чека.
При безналичной оплате оформляется документ Оплата от покупателя платежной картой с последующей печатью чека.
В конце дня выполняется закрытие смены с формированием отчета с гашением (Z-отчет).
Анализ и устранение ошибки метода ОткрытьСмену
При адаптации кода интеграции разработчики часто сталкиваются с исключением внешней компоненты при попытке открыть смену:
Результат = ОбъектДрайвера.ОткрытьСмену(ПараметрыПодключения.ИДУстройства, Кассир, НомерСмены, НомерДокумента);
Выясним возможные причины возникновения ошибки Ошибка вызова метода внешней компоненты:
Неинициализированные переменные параметров. В стандарте разработки драйверов 1С параметры НомерСмены и НомерДокумента являются выходными (передаются по ссылке). Перед вызовом метода переменные должны быть объявлены и обязательно инициализированы числовым значением 0, а не иметь тип Неопределено.
Формат данных кассира. В зависимости от версии стандарта и формата фискальных данных (ФФД), драйвер может требовать передачи не только строкового наименования кассира, но и структуры с ИНН кассира. Убедимся, что параметр Кассир заполнен корректно.
Предварительный захват устройства. Перед вызовом фискальной операции драйвер требует предварительного успешного подключения и блокировки порта. Если процедура подключения вернула Ложь или порт занят другим процессом, метод завершается ошибкой.
Разрядность платформы и компонентов. Клиент 1С в терминальном сеансе работает как 32-разрядное приложение. Убедимся, что зарегистрированы и используются именно 32-битные версии внешних компонент и драйверов ККТ.
Посмотрим на пример корректной подготовки параметров и безопасного вызова метода:
НомерСмены = 0;
НомерДокумента = 0;
Кассир = "Иванов И.И.";
Попытка
Результат = ОбъектДрайвера.ОткрытьСмену(ПараметрыПодключения.ИДУстройства, Кассир, НомерСмены, НомерДокумента);
Исключение
Результат = Ложь;
ВыходныеПараметры.Очистить();
ВыходныеПараметры.Добавить(999);
ВыходныеПараметры.Добавить(НСтр("ru='Ошибка вызова метода ОткрытьСмену:'") + Символы.ПС + ОписаниеОшибки());
КонецПопытки;
Правильная организация архитектуры подключения и аккуратный перенос модулей БПО позволяют стабильно использовать онлайн-кассы по 54-ФЗ в терминальной среде УТ 10.3 без сбоев и конфликтов оборудования.