Как настроить ККТ АТОЛ через Сервер удаленного подключения в 1С при работе по RDP?

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

При организации работы кассиров в терминальном режиме (RDP) технические специалисты часто сталкиваются с крайне медленной печатью чеков. Классический проброс COM-портов средствами RDP работает побайтово, из-за чего отправка команд на ККТ происходит с огромными задержками. Печать одного чека может занимать от 15 до 40 секунд, что полностью останавливает работу торговой точки. Если нужен готовый способ уйти от медленного проброса COM-портов и организовать сетевую печать на ККТ через RDP, VPN или интернет, можно использовать «Сервер ККМ» для удаленной многопользовательской печати чеков.

Для решения этой проблемы компания АТОЛ разработала технологию Сервера удаленного подключения (RPC-сервер) в составе Драйвера ККТ 10.х. Она позволяет передавать команды на кассу по сети TCP/IP, сокращая время печати чека до 1–2 секунд. Однако при попытке связать эту службу со старыми конфигурациями 1С (например, 1С:Управление торговлей 10.3) разработчики сталкиваются с тем, что 1С «не видит» удаленную кассу или выдает ошибку о недоступности порта. В этой статье мы подробно разберем, как решить данную проблему стандартными методами и с помощью доработки кода 1С.

В чем суть технологии RPC-сервера АТОЛ?

Сервер удаленного подключения (служба ATOL Fiscal Printer Remote Server или процесс atol-fptr-rpc-server) устанавливается на локальном компьютере, к которому физически (по USB или COM) подключена онлайн-касса. Эта служба открывает на компьютере порт 19524 и слушает входящие сетевые запросы. Драйвер АТОЛ, установленный на удаленном сервере RDP, отправляет команды на печать не в виртуальный COM-порт, а напрямую в виде TCP-пакетов на IP-адрес локального компьютера кассира. Локальная служба принимает пакеты и мгновенно перенаправляет их на кассу. Это полностью исключает медленные механизмы проброса портов RDP.

Способ 1. Настройка в современных конфигурациях 1С (без доработки кода)

Если мы работаем в современных конфигурациях на управляемых формах (например, УТ 11, Розница 2.3/3.0, УНФ) со свежими версиями интеграционных компонент АТОЛ, то поддержка удаленного сервера уже встроена в интерфейс. Давайте по шагам разберем процесс настройки этой связки.

Шаг 1. Настройка на локальном компьютере кассира (где касса подключена физически)

  1. Установим Драйвер ККТ АТОЛ версии 10.8 или выше. При установке обязательно отметим галочкой пункт «Сервер удаленного подключения ККТ».
  2. Перейдем в список служб Windows и убедимся, что служба ATOL Fiscal Printer Remote Server запущена и работает в автоматическом режиме.
  3. Откроем Брандмауэр Windows (файрвол) на локальной машине и создадим разрешающее правило для входящих подключений по TCP-порту 19524. Это критически важно, иначе сервер RDP не сможет достучаться до службы.
  4. Определим IP-адрес этого компьютера в локальной сети (или VPN-сети, если касса находится в удаленном офисе). Адрес должен быть статическим, чтобы настройки не сбивались.

Шаг 2. Настройка на стороне сервера 1С (в сеансе RDP)

  1. На терминальном сервере установим Драйвер ККТ АТОЛ той же версии (10.8+). При этом разрядность устанавливаемого драйвера должна соответствовать разрядности платформы 1С (обычно x32/x86 для старых версий или x64 для современных).
  2. Запустим 1С, перейдем в раздел «Подключаемое оборудование» и создадим новое устройство с драйвером «АТОЛ:ККТ с передачей данных в ОФД (54-ФЗ) 10.х».
  3. Откроем параметры подключения устройства.
  4. В поле «Компьютер» (в некоторых версиях оно называется «Адрес ПК» или «IP-адрес») укажем IP-адрес локального компьютера кассира, который мы определили на Шаге 1.
  5. В поле «Порт» укажем способ подключения (например, COM-порт или USB) и выберем конкретный номер порта, под которым касса определяется на ЛОКАЛЬНОМ компьютере кассира (например, COM3).
  6. Нажмем кнопку «Тест подключения». При успешном соединении драйвер вернет информацию о модели кассы и ее заводском номере.

Выясним, почему этот способ работает. Когда интеграционная компонента 1С видит заполненный IP-адрес в поле «Компьютер», драйвер АТОЛ внутри себя автоматически переключается в режим клиента RPC-сервера. Он направляет запрос на указанный IP-адрес (порт 19524), просит локальный сервер открыть порт COM3 непосредственно на клиентской машине и транслирует туда команды.

Способ 2. Доработка старой обработки обслуживания (на примере Atolkkt.epf для УТ 10.3)

В старых конфигурациях 1С на обычных формах (таких как Управление торговлей 10.3, УПП 1.3) стандартная обработка обслуживания Atolkkt.epf не содержит полей для ввода IP-адреса удаленного компьютера. Она пытается инициализировать кассу строго локально, возвращая ошибку «Порт недоступен». Чтобы решить эту проблему, нам потребуется вручную доработать обработку обслуживания в Конфигураторе. Если не хочется вносить эту доработку вручную, можно использовать готовую обработку обслуживания ККТ АТОЛ для УТ 10.3 и УПП 1.3 — в ней предусмотрена отдельная настройка адреса подключения к удаленному ПК.

Проанализируем структуру интеграционной компоненты АТОЛ 10. Драйвер ожидает от 1С передачи определенных XML-параметров или вызова методов установки свойств. Для настройки удаленного подключения отвечают два ключевых параметра:

Рассмотрим, как внедрить эти параметры непосредственно в код обработки обслуживания Atolkkt.epf. Откроем обработку в конфигураторе и найдем модуль объекта.

Нам необходимо отредактировать функцию, которая подготавливает XML-строку с параметрами подключения устройства. Обычно эта функция называется ПолучитьПараметрыПодключения() или ПолучитьТаблицуПараметров(). Мы можем добавить параметры прямо в XML-описание, чтобы они появились в стандартном окне настроек 1С:


// Пример добавления параметров удаленного подключения в структуру параметров обработки
Функция ПолучитьТаблицуПараметров() Экспорт
    
    ТаблицаПараметров = Новый ТаблицаЗначений;
    ТаблицаПараметров.Колонки.Добавить("Имя", Новый ОписаниеТипов("Строка"));
    ТаблицаПараметров.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
    ТаблицаПараметров.Колонки.Добавить("Тип", Новый ОписаниеТипов("Строка"));
    ТаблицаПараметров.Колонки.Добавить("ЗначениеПоУмолчанию");
    
    // Добавляем новые строки для параметров RPC-сервера АТОЛ
    НоваяСтрока = ТаблицаПараметров.Добавить();
    НоваяСтрока.Имя = "RemoteServerAddr";
    НоваяСтрока.Наименование = "Адрес удаленного сервера RPC";
    НоваяСтрока.Тип = "Строка";
    НоваяСтрока.ЗначениеПоУмолчанию = "";
    
    НоваяСтрока = ТаблицаПараметров.Добавить();
    НоваяСтрока.Имя = "RemoteServerConnectionTimeout";
    НоваяСтрока.Наименование = "Таймаут подключения к RPC (мс)";
    НоваяСтрока.Тип = "Число";
    НоваяСтрока.ЗначениеПоУмолчанию = 5000;
    
    Возврат ТаблицаПараметров;
КонецФункции

Если мы хотим жестко прописать адрес подключения в коде (например, для конкретного рабочего места, чтобы не менять XML-структуру), мы можем перехватить процедуру инициализации устройства и передать эти параметры напрямую в объект драйвера перед вызовом метода открытия соединения open(). Найдем в модуле функцию подключения ККТ (обычно это ПодключитьУстройство()) и добавим туда следующие строки:


// Программная установка параметров RPC-сервера непосредственно перед подключением
Функция ПодключитьУстройство(ОбъектДрайвера, ПараметрыПодключения) Экспорт
    
    ОчиститьОшибку();
    
    // Устанавливаем стандартные параметры (порт, скорость и т.д.)
    ОбъектДрайвера.УстановитьПараметр("Port", ПараметрыПодключения.Порт);
    ОбъектДрайвера.УстановитьПараметр("BaudRate", ПараметрыПодключения.Скорость);
    
    // Добавляем параметры для работы через Сервер удаленного подключения АТОЛ
    // Значения можно получать из сохраненных настроек пользователя или прописать программно
    IP_Адрес_Кассира = "192.168.1.105"; // Укажите реальный IP-адрес компьютера кассира
    ТаймаутПодключения = 5000;
    
    ОбъектДрайвера.УстановитьПараметр("RemoteServerAddr", IP_Адрес_Кассира);
    ОбъектДрайвера.УстановитьПараметр("RemoteServerConnectionTimeout", ТаймаутПодключения);
    
    // Выполняем попытку соединения
    Результат = ОбъектДрайвера.Подключить();
    Если Не Результат Тогда
        ОписаниеОшибки = ОбъектДрайвера.ПолучитьОшибку();
        Возврат Ложь;
    КонецЕсли;
    
    Возврат Истина;
КонецФункции

После внесения этих изменений сохраним обработку Atolkkt.epf и загрузим ее в справочник «Обработки обслуживания подключаемого оборудования» в 1С. Теперь драйвер при инициализации кассы будет обращаться по сети к локальному компьютеру, и касса успешно заработает в сеансе RDP. Если вместе с этим нужно продолжать эксплуатацию УТ 10.3 с актуальными драйверами торгового оборудования, можно использовать пакет обновлений и поддержки для УТ 10.3, в котором предусмотрены драйверы АТОЛ 10.x и обработки обслуживания ККТ и эквайринга.

Способ 3. Перенаправление COM-порта по TCP/IP (без изменения кода 1С)

Если у вас нет возможности или квалификации для изменения кода конфигурации 1С либо обработки обслуживания, можно прибегнуть к системному решению. Оно заключается в создании виртуального туннеля для COM-порта.

Для этого используется стороннее программное обеспечение (утилиты класса *COM port redirector* или *Serial to Ethernet Connector*, а также бесплатные аналоги вроде *kkmspeter* или *HW VSP*). Схема настройки выглядит следующим образом:

  1. На локальном компьютере кассира запускается серверная часть утилиты, которая захватывает реальный COM-порт кассы и транслирует его данные в сеть по определенному TCP-порту.
  2. На терминальном сервере RDP устанавливается клиентская часть утилиты. Она создает в диспетчере устройств виртуальный COM-порт (например, COM10), который перенаправляет весь трафик по сети на IP-адрес локального компьютера кассира.
  3. В настройках 1С на сервере RDP мы выбираем обычное локальное подключение через порт COM10. Программа 1С считает, что работает с локальной кассой, в то время как виртуальный порт незаметно для системы транслирует все данные по сети.

Этот способ позволяет обойти любые ограничения старых конфигураций 1С, но требует настройки дополнительного программного обеспечения на каждом рабочем месте кассира и сервере.

Особенности работы службы отправки чеков в ОФД (EoU)

Важным нюансом при работе ККТ АТОЛ в терминальном режиме является отправка чеков оператору фискальных данных (ОФД). При использовании Сервера удаленного подключения АТОЛ служба Ethernet-over-USB (EoU) должна быть запущена и настроена на локальном компьютере кассира, а не на терминальном сервере.

Поскольку физический разъем USB ККТ подключен к локальной машине, именно локальная служба EoU имеет доступ к COM-порту ККТ для передачи данных в интернет. На удаленном сервере RDP службу EoU запускать и настраивать не нужно. Убедитесь, что в локальном файле настроек службы EoU (settings.xml) прописан правильный номер COM-порта (обычно это второй виртуальный COM-порт, создаваемый драйвером АТОЛ при подключении кассы по USB).

Резюме и рекомендации

Использование Сервера удаленного подключения АТОЛ (RPC-сервера) — это наиболее современный, быстрый и стабильный способ организации работы онлайн-касс в RDP-сессиях. При возникновении проблем с подключением в 1С:

← На главную