Как настроить работу 1С с ККТ АТОЛ через веб-сервер драйвера 10-й версии?

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

При переходе на 10-ю версию драйверов АТОЛ (DTO 10) многие специалисты сталкиваются с задачей организации удаленной печати чеков. Традиционные методы через COM-объекты или прямое проброс портов (RDP) часто работают нестабильно. Веб-сервер АТОЛ, входящий в поставку драйвера, предлагает современный подход, однако его настройка в 1С имеет свои нюансы, особенно если речь идет о ранних релизах драйвера или специфических требованиях сети. Рассмотрим подробно, как заставить эту связку работать.

Разберем различие между сетевым подключением и Веб-сервером

Прежде всего, важно не путать два принципиально разных механизма, доступных в 10-м драйвере. Первый — это прямое сетевое подключение по TCP/IP. В этом случае касса должна иметь собственный сетевой интерфейс (Ethernet или Wi-Fi). В настройках драйвера в 1С выбирается канал связи «Сеть», указывается IP-адрес кассы и порт 5555. При таком подходе касса работает как самостоятельное сетевое устройство.

Второй вариант — это Веб-сервер (fptr10web). Это специальное приложение-прослойка, которое устанавливается на компьютер, к которому ККТ подключена физически (например, по USB). Веб-сервер «слушает» входящие HTTP-запросы в формате JSON и передает их драйверу для исполнения на кассе. Именно этот вариант позволяет организовать очередь печати, когда несколько рабочих мест 1С отправляют чеки на одну кассу одновременно. Веб-сервер сам разруливает очередность, и вы не получаете ошибку «Порт занят».

Проанализируем настройку веб-сервера на стороне ПК с кассой

Для того чтобы веб-сервер стал доступен для 1С, выполним следующие шаги по настройке на компьютере, к которому подключена ККТ:

  1. Установка и запуск: Убедимся, что при установке ДТО 10 был выбран компонент «Веб-сервер». По умолчанию исполняемый файл находится в папке с драйвером. Для стабильной работы крайне рекомендуется установить его как службу Windows. Это делается через командную строку от имени администратора командой fptr10web.exe -i.
  2. Настройка конфигурации: Основные параметры хранятся в файле settings.json. Проанализируем важные поля:
    • "port": по умолчанию 16732. Убедимся, что он открыт в брандмауэре Windows.
    • "address": по умолчанию может стоять 127.0.0.1. Чтобы веб-сервер принимал запросы с других компьютеров локальной сети, необходимо изменить это значение на 0.0.0.0.
  3. Проверка связи через браузер: С удаленного компьютера введем в адресную строку браузера http://[IP_адрес_сервера]:16732. Если открывается веб-интерфейс управления АТОЛ, значит, сетевой доступ настроен верно.

Рассмотрим интеграцию с 1С через JSON-задания

Как отмечалось в обсуждении, на ранних этапах (версия 10.2) штатные обработки 1С (БПО) могли не поддерживать работу через веб-сервер в явном виде. В таких случаях, а также для реализации нестандартной логики, используется механизм прямых HTTP-запросов. Это самый гибкий и надежный способ.

Вместо обращения к методам драйвера ОбъектДрайвера.СформироватьЧек(), мы формируем текстовую строку в формате JSON, описывающую задание для кассы, и отправляем её методом POST на адрес сервера.

Посмотрим на пример формирования структуры задания в 1С:


// Пример структуры JSON-задания для веб-сервера АТОЛ
Задание = Новый Структура;
Задание.Вставить("uuid", Строка(Новый УникальныйИдентификатор()));
Задание.Вставить("request", Новый Массив);

Операция = Новый Структура;
Операция.Вставить("type", "sell"); // Тип операции: продажа
Операция.Вставить("taxationType", "osn");
Операция.Вставить("ignoreNonFiscalPrint", Истина);

// Формируем позиции чека
Позиции = Новый Массив;
Товар = Новый Структура("name, price, quantity, amount, tax", "Товар тестовый", 100, 1, 100, "none");
Позиции.Добавить(Товар);

Операция.Вставить("items", Позиции);

// Платежи
Платежи = Новый Массив;
Платеж = Новый Структура("type, amount", "cash", 100);
Платежи.Добавить(Платеж);

Операция.Вставить("payments", Платежи);
Задание.request.Добавить(Операция);

После формирования структуры её необходимо преобразовать в JSON и отправить через HTTPСоединение. Выясним причину, по которой это удобно: 1С не требует установки драйверов на клиентских местах. Достаточно того, что драйвер и веб-сервер стоят на одном «серверном» ПК с кассой.


// Отправка задания на веб-сервер
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Задание);
СтрокаJSON = ЗаписьJSON.Закрыть();

НТТР = Новый HTTPСоединение("192.168.1.10", 16732);
Запрос = Новый HTTPЗапрос("/requests");
Запрос.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8);

Попытка
    Ответ = НТТР.ОтправитьДляОбработки(Запрос);
    Если Ответ.КодСостояния = 201 Тогда
        // Задание принято в очередь
        // Нужно периодически опрашивать статус по UUID
    КонецЕсли;
Исключение
    Сообщить("Ошибка связи с веб-сервером ККТ");
КонецПопытки;

Выясним особенности работы с очередью заданий

Важно понимать, что веб-сервер работает асинхронно. Когда мы отправляем запрос POST /requests, сервер отвечает кодом 201 Created, что означает лишь то, что задание успешно помещено в очередь. Оно еще не пробито!

Разберем алгоритм получения результата:

  1. Отправляем задание и сохраняем его uuid.
  2. В цикле (или через обработчик ожидания) выполняем GET запрос по адресу http://[IP]:16732/requests/[uuid].
  3. Анализируем поле status в ответе. Значение ready означает, что чек пробит. Значение error — произошла ошибка (закончилась бумага, неверный формат данных и т.д.).

Такой подход позволяет избежать зависания интерфейса 1С у пользователя, пока касса физически печатает длинный чек или связывается с ОФД.

Проанализируем возможные проблемы и способы их решения

Если при попытке подключения вы видите сообщение «Нет связи» или «Тест не пройден», выполните следующие действия:

  1. Проверьте привязку к порту: Если на компьютере запущена «Тест драйвера ККТ» и порт занят ею, веб-сервер не сможет получить доступ к кассе. Закройте все лишние приложения, использующие драйвер АТОЛ.
  2. Авторизация: В последних версиях веб-сервера введена возможность авторизации (логин/пароль). Проверьте файл settings.json. Если параметры username и password заполнены, их необходимо передавать в заголовках HTTP-запроса.
  3. CORS: При работе из веб-клиента 1С браузер может блокировать запросы к веб-серверу из-за политики безопасности. В настройках веб-сервера АТОЛ есть возможность разрешить определенные домены или использовать * для разрешения всех источников.
  4. Версия БПО: Если вы используете типовую конфигурацию (УТ 11, Розница 2.3/3.0), убедитесь, что в справочнике «Драйверы оборудования» выбран актуальный драйвер «АТОЛ:ККТ с передачей данных в ОФД (10.х)». В настройках такого драйвера часто уже предусмотрен выбор типа подключения «Через веб-сервер», что избавляет от написания собственного кода.

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

← На главную