Как подключить онлайн-кассу АТОЛ fprint 22ПТК к 1С на удаленном сервере и решить проблему медленной печати

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

При работе в клиент-серверном режиме или при размещении базы 1С на удаленном VPS/VDS-сервере системные администраторы часто сталкиваются с проблемой подключения торгового оборудования. Типичная ситуация: база 1С находится «в облаке» или на удаленном сервере в терминальном режиме (RDP), а онлайн-касса (фискальный регистратор, например, АТОЛ fprint 22ПТК) подключена к локальному компьютеру кассира через USB.

В этой статье мы подробно разберем, почему старые методы сетевого подключения касс перестают работать на современных драйверах, как правильно настроить подключение ККТ по сетевому протоколу Ethernet (TCP/IP), и как решить проблему медленной печати чеков, возникающую из-за сетевых задержек (пинга).

Различие в архитектуре драйверов АТОЛ 8.х и 9.х/10.х

Чтобы понять суть проблемы, проанализируем поведение драйверов разных версий. В старой линейке драйверов АТОЛ ДТО 8.х существовала специализированная служба FDSVC, которая позволяла расшарить COM-порт локального компьютера, к которому подключена касса, в сеть по порту 6220. Это позволяло удаленному серверу 1С обращаться к кассе по IP-адресу хоста.

Однако при переходе на новые форматы фискальных данных (ФФД 1.05 и ФФД 1.2) использование драйвера версии 8.х стало невозможным по следующим причинам:

  1. Компонента интеграции 1С для работы с АТОЛ под ФФД 1.05 разработана по технологии Native API и ориентирована на работу исключительно с драйверами 9.х (а в современных реалиях — 10.х).
  2. Старая COM-компонента для драйверов 8-й версии не поддерживает новую ревизию интерфейса требований 1С к подключаемому оборудованию, из-за чего передавать теги для ФФД 1.05 в рамках стандартной интеграции невозможно.
  3. Разработчики АТОЛ полностью изменили архитектуру ДТО 9.х и ДТО 10.х, отказавшись от службы FDSVC. Попытка подключиться к удаленной кассе через порт 6220 с помощью 9-й версии драйвера завершится ошибкой связи, поскольку данный функционал в новой архитектуре не поддерживается.

Для решения этой проблемы необходимо отказаться от трансляции USB-порта через локальную службу и перевести саму кассу на работу по сетевому интерфейсу.

Решение проблемы: Переключение ККТ АТОЛ на канал обмена Ethernet (TCP/IP)

Для того чтобы кассу видели новые драйверы (9.х и 10.х), установленные как на сервере, так и на клиентской машине, переведем фискальный регистратор на работу по интерфейсу TCP/IP (клиент-серверный режим работы кассы). Рассмотрим процесс по шагам.

Шаг 1. Переключение канала связи в ККТ

Для смены интерфейса с USB на Ethernet необходимо войти в сервисный режим кассы АТОЛ fprint 22ПТК:

  1. Выключите ККТ.
  2. Зажмите кнопку промотки ленты и, не отпуская ее, включите ККТ.
  3. Дождитесь четвертого звукового сигнала (писка) и отпустите кнопку. Касса распечатает сервисное меню.
  4. Короткими нажатиями на кнопку промотки выберите пункт «Канал связи» (обычно это требует 2-х или 3-х нажатий в зависимости от версии прошивки, ориентируйтесь на чек сервисного меню).
  5. Подтвердите выбор длинным нажатием кнопки промотки ленты.
  6. Выберите интерфейс Ethernet (или Wi-Fi, если планируется беспроводное подключение) и сохраните настройки.

Шаг 2. Настройка сетевых параметров в Драйвере

После переключения физического канала подключите кассу сетевым кабелем (LAN) к локальному роутеру или коммутатору. Нам необходимо назначить ККТ статический IP-адрес в локальной сети кассира.

Запустите утилиту «Тест драйвера ККТ» (версии 9.х или 10.х) на локальном компьютере и выполните настройку свойств соединения:

После успешной проверки связи на локальном компьютере перейдите к настройке на удаленном сервере 1С.

Шаг 3. Подключение ККТ в базе 1С на сервере

В базе 1С (например, УПП 1.3, УТ 10.3 или ERP) перейдите в справочник «Подключаемое оборудование» и добавьте новое устройство:

Нажмите кнопку «Тест устройства». Касса должна успешно определиться, выдав сообщение с указанием модели ККТ, ее заводского номера и версии прошивки.

Проблема медленной печати чеков и способы ее оптимизации

После успешного подключения ККТ по TCP/IP к удаленной базе вы можете столкнуться со следующей проблемой: печать чека происходит крайне медленно (от 5 до 15 секунд на один чек). Выясним причину этого поведения.

При прямой печати через сетевой драйвер платформа 1С не отправляет весь чек одной командой. Драйвер выполняет последовательный диалог с кассой, отправляя десятки микрокоманд:

  1. Запрос состояния ККТ.
  2. Команда открытия чека.
  3. Регистрация первой позиции (передача наименования, цены, количества, ставки НДС).
  4. Получение ответа от кассы о регистрации строки.
  5. Регистрация второй позиции... и так далее для каждого товара.
  6. Регистрация оплаты (наличные/электронные).
  7. Команда закрытия чека.
  8. Запрос фискальных признаков для сохранения в базе 1С.

Каждая из этих операций требует отправки сетевого пакета туда и обратно (Round Trip). Если пинг между удаленным сервером 1С (например, VPS в дата-центре) и локальным компьютером ККТ составляет 50–100 мс, то суммарная задержка на обработку одного чека из 10 позиций составит несколько секунд. При нестабильном интернет-канале касса может зависать, выдавая ошибки таймаута.

Рассмотрим три наиболее эффективных способа оптимизации скорости печати.

Вариант 1. Использование встроенного Веб-сервера АТОЛ (JSON API)

Этот способ является наиболее технологичным и современным. Начиная с 10-й версии драйверов, АТОЛ поставляет встроенную веб-службу. Схема работы выглядит следующим образом:

  1. На локальном ПК кассира, к которому касса подключена по USB или Ethernet, запускается локальный Веб-сервер АТОЛ.
  2. Удаленный сервер 1С при проведении документа формирует один-единственный JSON-пакет, содержащий всю структуру чека (все позиции, налоги и оплаты сразу).
  3. 1С отправляет этот JSON-пакет по протоколу HTTP (или HTTPS) на локальный веб-сервер кассира. Передача одного пакета занимает доли секунды.
  4. Локальный веб-сервер принимает пакет мгновенно, а всю цепочку мелких команд драйвера выполняет локально на клиенте с нулевым пингом. Печать чека происходит моментально.

Пример структуры JSON-запроса, отправляемого на Веб-сервер АТОЛ для печати чека:


{
  "uuid": "8bf73d52-7b56-42d3-9f87-2470949d8c9a",
  "request": [
    {
      "type": "sell",
      "taxationType": "osn",
      "operator": {
        "name": "Иванов И.И.",
        "vatin": "123456789012"
      },
      "items": [
        {
          "type": "position",
          "name": "Товарная позиция 1",
          "price": 100.00,
          "quantity": 1,
          "amount": 100.00,
          "department": 1,
          "tax": {
            "type": "vat20"
          }
        }
      ],
      "payments": [
        {
          "type": "electronically",
          "sum": 100.00
        }
      ]
    }
  ]
}

Вариант 2. Реализация локального программного агента (офлайн-печать)

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

Рассмотрим пример кода на стороне сервера 1С для выгрузки данных чека во временную папку обмена:


Процедура ЗаписатьЧекДляЛокальнойПечати(ДанныеЧека, УникальныйИдентификатор) Экспорт
    ПутьКФайлу = "\\ServerExchange\Cheques\" + УникальныйИдентификатор + ".json";
    
    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.ОткрытьФайл(ПутьКФайлу, , , Новый ПараметрыЗаписиJSON(,,, Истина));
    
    ЗаписатьJSON(ЗаписьJSON, ДанныеЧека);
    ЗаписьJSON.Закрыть();
КонецПроцедуры

Локальный скрипт на ПК кассира постоянно мониторит сетевую папку обмена \\ServerExchange\Cheques\. Как только появляется новый файл, скрипт считывает его, мгновенно отправляет команды на локально подключенный драйвер ККТ и удаляет файл из папки. Это полностью исключает влияние пинга интернет-соединения на скорость печати.

Вариант 3. Оптимизация сетевых протоколов и VPN

Если архитектура решения требует исключительно прямого TCP/IP подключения ККТ к серверу, необходимо минимизировать влияние сетевых задержек:

← На главную