Как обеспечить стабильную работу АТОЛ ДТО 10 в среде RDP для 1С 7.7 при переходе на Платформу 5.0?

Программист 1С v7.7 Управленческий учет Торговля и дистрибуция
← На главную

Переход на современную Платформу 5.0 для контрольно-кассовой техники АТОЛ часто становится вызовом для систем, работающих на базе 1С:Предприятие 7.7. Основная сложность заключается в том, что старые методы работы (через ДТО 8 и простой проброс COM-портов) в терминальной среде RDP могут демонстрировать крайне низкую производительность или нестабильность. Рассмотрим подробно, как правильно организовать архитектуру подключения, чтобы избежать "зависаний" при печати чеков и обеспечить корректную работу драйверов.

Анализ совместимости и параллельная установка драйверов

Первым делом проанализируем возможность сосуществования разных версий драйверов. В процессе миграции часто возникает ситуация, когда часть магазинов уже переведена на новые кассы, а часть продолжает работать на старых. Разберем основные моменты:

  1. Параллельная работа: Драйверы ДТО 8 и ДТО 10 могут быть установлены на одном сервере одновременно. Они используют разные программные идентификаторы (ProgID) и не конфликтуют на уровне системных библиотек.
  2. Обновление на клиентах: Если планируется использовать ДТО 10, его необходимо установить как на сервере, где запущена 1С, так и на локальных рабочих местах, к которым физически подключены кассы.
  3. Поддержка 1С 7.7: Прямая работа с ДТО 10 в 1С 7.7 возможна через COM-объект AddIn.AtolDevice10. Однако старые обработки обслуживания придется заменить, чтобы реализовать полноценную поддержку ФФД 1.05 с драйверами Атол v10 или адаптировать систему под новые требования законодательства.

Почему Платформа 5.0 может тормозить через RDP?

Выясним причину, по которой классический проброс портов средствами RDP часто дает сбои на новой платформе. Протокол обмена Платформы 5.0 спроектирован как более "болтливый". Он отправляет большое количество мелких пакетов данных и требует подтверждения получения каждого из них. При работе через RDP каждый такой пакет инкапсулируется в протокол терминальной службы, что создает микрозадержки (latency). В сумме эти задержки приводят к тому, что печать одного чека может занимать от 30 секунд до нескольких минут.

Решение 1: Настройка Сервера удаленного подключения (RPC)

Наиболее стабильным способом работы в среде RDP является использование встроенного в ДТО 10 функционала RPC-сервера (Сервера удаленного подключения). Этот метод позволяет драйверу на сервере обращаться к кассе не через виртуальный COM-порт, а напрямую по сети TCP/IP.

Разберем процесс настройки по шагам:

  1. На локальном ПК (клиенте): При установке ДТО 10 обязательно отметьте флаг "Сервер удаленного подключения". Эта служба будет транслировать физически подключенную по USB кассу в сеть.
  2. Запуск службы: Убедитесь, что служба Atol RPC Server запущена. По умолчанию она использует порт 6220.
  3. На сервере 1С: В настройках драйвера (в тесте драйвера или программно) выберите способ связи "Сеть" или "Remote Connection".
  4. Указание адреса: Вместо номера COM-порта укажите IP-адрес локального компьютера кассира. Если у магазина динамический IP, рекомендуется использовать VPN-канал или проброс порта 6220 через роутер на сторону сервера.

Решение 2: Использование технологии Ethernet over Transport (EoT)

Если касса (например, популярная модель АТОЛ-30Ф) подключена по USB, Платформа 5.0 позволяет передавать данные по протоколу TCP/IP прямо внутри USB-кабеля. Рассмотрим, как это применить:

Проанализируем настройки: в драйвере на локальном ПК касса определяется как сетевое устройство. Мы можем настроить службу Ethernet over Transport, которая присвоит кассе внутренний IP-адрес. В терминальной сессии 1С будет обращаться к этому адресу. Это работает значительно быстрее, чем эмуляция последовательного порта, так как драйвер использует более современные механизмы буферизации данных.

Программная реализация в 1С 7.7

Для работы с ДТО 10 в коде 1С 7.7 мы используем объектную модель драйвера. В качестве базы для разработки можно использовать методику подключения онлайн-касс к нетиповой 1С 7.7. Важным моментом является использование метода applySingleSettings, который позволяет передать все настройки подключения одной JSON-строкой. Это решает проблему "забытых" настроек в реестре RDP-сессии.

Если вам необходимы практические примеры кода, обратите внимание на материал, где представлена демонстрация встраивания ТС ПИоТ в 1С 7.7 для работы с кассовым оборудованием Атол. Рассмотрим пример кода для подключения к удаленной кассе через RPC:


// Создаем объект драйвера
Драйвер = СоздатьОбъект("AddIn.AtolDevice10");

// Формируем настройки в формате JSON
// Для RPC указываем тип соединения 3 (Network) и параметры удаленного хоста
НастройкиJSON = "{
|  ""Model"": 500, 
|  ""ConnectionType"": 3,
|  ""Address"": ""192.168.1.50"",
|  ""Port"": 6220,
|  ""AccessPassword"": """",
|  ""UserPassword"": """"
|}";

// Применяем настройки
Драйвер.setSingleSettings(НастройкиJSON);

// Пытаемся установить соединение
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_DEVICE_ID, "KKT1");
Драйвер.open();

Если Драйвер.opened() = 0 Тогда
    Сообщить("Ошибка подключения: " + Драйвер.errorDescription());
Иначе
    Сообщить("Касса успешно подключена через RPC!");
КонецЕсли;

Решение проблемы с сохранением настроек

Часто программисты сталкиваются с тем, что в RDP-сессии настройки драйвера "слетают" после перезахода пользователя. Проанализируем причину: ДТО 10 хранит параметры в ветке реестра HKEY_CURRENT_USER. Если профили пользователей перемещаемые или временные, данные теряются.

Рекомендация: Не полагайтесь на стандартное окно настроек драйвера. Создайте в 1С 7.7 небольшой справочник "Настройки ККМ", где для каждого рабочего места (имени компьютера) будут храниться параметры (IP, порт, модель). При открытии обработки печати чека считывайте эти данные и принудительно передавайте их в драйвер методом setSingleSettings, как показано в примере выше.

Оптимизация клиентской части

Посмотрим на настройки электропитания. Платформа 5.0 крайне чувствительна к разрывам связи. Если в Windows на локальном ПК включен режим экономии энергии для USB-концентраторов, касса может "засыпать". Разберем, что нужно сделать:

  1. Зайдите в "Диспетчер устройств".
  2. Найдите "Контроллеры USB" — "Корневой USB-концентратор".
  3. В свойствах на вкладке "Управление электропитанием" снимите галочку "Разрешить отключение этого устройства для экономии энергии".
  4. Повторите это для всех концентраторов.

Это простое действие исключит внезапные отвалы порта, которые в среде RDP часто требуют полной перезагрузки терминальной сессии для восстановления видимости порта.

Альтернативные методы: KKMServer

Если штатные средства ДТО 10 кажутся слишком сложными в настройке для распределенной сети, рассмотрим использование стороннего ПО, такого как kkmserver. Это решение работает как HTTP-шлюз. На локальном компьютере ставится служба, которая принимает HTTP-запросы от 1С (через объект WinHttp.WinHttpRequest.5.1) и транслирует их в команды драйвера. По схожей логике реализовано взаимодействие с фискальными регистраторами по протоколу HTTP (JSON), что полностью избавляет от необходимости пробрасывать порты через RDP, так как обмен идет по стандартному веб-протоколу.

Заключение: Переход на ДТО 10 в связке с 7.7 и RDP вполне осуществим. Главное — отказаться от нестабильного проброса COM-портов в пользу сетевых протоколов (RPC или EoT) и управлять настройками драйвера непосредственно из кода 1С.

← На главную