При переходе на требования 54-ФЗ в конфигурациях на обычных формах (например, 1С:Управление производственным предприятием 1.3) типовой сценарий взаимодействия с торговым оборудованием нередко усложняется серверной архитектурой. Классическая схема работы предполагает, что база 1С развернута на удаленном сервере и пользователи подключаются к ней через терминальную сессию (RDP), в то время как фискальный регистратор физически установлен на рабочем месте кассира под управлением локальной операционной системы (например, Windows 7 x64).
В такой конфигурации разработчики и системные администраторы часто сталкиваются с дилеммой: пробрасывать виртуальные COM-порты через RDP-сессию или выводить фискальный аппарат напрямую в локальную сеть по протоколу TCP/IP. Разберем по шагам особенности каждого подхода, выявим подводные камни и реализуем надежное подключение.
Рассмотрим подробнее два основных метода подключения контрольно-кассовой техники к удаленному терминальному серверу:
Для небольшого объема операций (10–20 чеков в день) также допустимо использовать более бюджетные модели (например, АТОЛ 30Ф), однако при наличии физического интерфейса Ethernet использование TCP/IP всегда предпочтительнее классического проброса через RDP.
Проанализируем распространенную проблему: касса подключена в локальную сеть, физически доступна по IP-адресу, но в стандартной форме настройки торгового оборудования в 1С:УПП 1.3 в выпадающем списке доступных каналов связи присутствует только UDP/IP или стандартные COM-порты, а нужный протокол TCP/IP отсутствует.
Выясним причину такого поведения. Список поддерживаемых интерфейсов формируется на основе XML-манифеста, который возвращает внешняя компонента драйвера торгового оборудования при инициализации параметров. В ряде релизов драйверов АТОЛ протокол TCP/IP скрыт из интерфейса настройки по умолчанию. Чтобы принудительно добавить возможность выбора подключения по TCP/IP, выполним корректировку в коде обработки обслуживания торгового оборудования.
Найдем в коде обработки процедуру получения настроек драйвера и добавим замену возвращаемой XML-строки:
// В обработке обслуживания кассы выполняем подмену доступных протоколов связи:
ДанныеИзДрайвера = СтрЗаменить(ДанныеИзДрайвера,
"<Item Value=""110"">UDP/IP</Item>",
"<Item Value=""110"">UDP/IP</Item><Item Value=""99"">TCP/IP</Item>");
После внесения этого изменения в параметрах торгового оборудования в интерфейсе 1С появится пункт TCP/IP с системным идентификатором 99. Далее остается указать сетевой IP-адрес аппарата и порт обмена (по умолчанию для драйверов торгового оборудования АТОЛ используется порт 5555), после чего выполнить тест устройства.
Если для конкретного аппарата все же выбран вариант подключения через локальный ПК по USB, разберем ключевые технические нюансы, с которыми предстоит столкнуться на операционной системе Windows 7 x64:
Важно помнить: фискальный регистратор является устройством монопольного доступа. При подключении кассы напрямую по TCP/IP из нескольких независимых терминальных сессий RDP отправка одновременных команд приведет к ошибке «Устройство занято» или «Порт недоступен» со стороны драйвера.
Для предотвращения подобных коллизий при многопользовательской работе рекомендуется либо жестко закреплять физическую кассу за одной конкретной терминальной сессией кассира, либо реализовать очередь печати чеков на стороне 1С (например, через регламентное фоновое задание на сервере, которое последовательно обрабатывает очередь сформированных документов и отправляет их на кассу без блокировки интерфейса пользователей).