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

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

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

В этой статье мы подробно разберем, почему стандартный механизм интеграции 1С отказывается работать с Веб-сервером напрямую, и покажем пошаговые сценарии настройки удаленного подключения — как с помощью штатного RPC-сервера без программирования, так и через HTTP-запросы (JSON).

Разберем причину: почему порт 16732 не работает в 1С «из коробки»

Давайте проанализируем ситуацию. Утилита ДТО 10 (Драйвер торгового оборудования АТОЛ) имеет встроенный компонент Web-Server. По умолчанию он действительно ожидает входящие соединения по порту 16732. Однако этот сервер предназначен исключительно для обработки HTTP-запросов, содержащих задания в формате JSON.

Типичная ошибка администратора заключается в попытке указать в стандартном интерфейсе подключения оборудования 1С параметры:

Стандартная интеграционная компонента 1С, поставляемая фирмой «1С» и сертифицированная АТОЛ, не умеет общаться с ККТ по протоколу HTTP с отправкой JSON-заданий. Она ожидает прямого бинарного соединения по сети, используя классический низкоуровневый протокол драйвера. Попытка направить бинарный поток 1С на порт Веб-сервера приводит к закономерной ошибке соединения.

Для решения этой проблемы существует два пути:

  1. Использование RPC-сервера АТОЛ (без программирования) — самый простой и надежный способ связать кассу и удаленную 1С штатными средствами.
  2. Интеграция через Web-Server / Web Requests (с программированием) — когда в 1С пишется собственный HTTP-клиент, отправляющий JSON-пакеты.

Рассмотрим каждый из этих вариантов подробнее.

Вариант 1. Настройка сетевого подключения через RPC-сервер (без программирования)

Если вам нужно настроить работу 1С на удаленном компьютере так, чтобы касса определялась стандартной обработкой обслуживания, мы должны запустить на ПК с кассой службу удаленного подключения (RPC-сервер). Этот сервер принимает стандартные бинарные команды от драйвера 1С по сети и транслирует их на кассу.

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

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

  1. Установите на данный компьютер Драйвер ККТ АТОЛ 10-й версии. При установке в списке компонентов обязательно отметьте галочкой пункт «Сервер удаленного подключения» (или Remote Connection Server).
  2. После установки в операционной системе Windows появится новая служба — ATOL Fiscal Printer Remote Server (исполняемый файл atol-fptr-rpc-server.exe). Убедитесь, что служба запущена и настроена на автоматический запуск.
  3. По умолчанию данный сервер использует TCP-порт 19524 (в некоторых старых версиях — 16710). Проверьте в брандмауэре Windows (или стороннем антивирусе), что этот порт открыт для входящих соединений из вашей локальной сети.
  4. Запустите локально утилиту «Тест драйвера ККТ» и убедитесь, что касса успешно подключается, например, по USB (проверьте связь). Закройте тест драйвера, чтобы освободить порт ККТ.

Шаг 2. Настройка на компьютере, где установлена 1С (клиентский ПК)

  1. Откройте 1С, перейдите в раздел администрирования торгового оборудования («Подключение и настройка внешнего оборудования»).
  2. Добавьте новый экземпляр ККТ с передачей данных, выберите актуальный драйвер АТОЛ (10.х).
  3. Перейдите в параметры подключения устройства и укажите следующие настройки:
    • Способ связи: Сеть (или Удаленное подключение)
    • IP-адрес: Укажите сетевой адрес компьютера, к которому подключена касса (в нашем примере — 1.1.1.1)
    • Порт: 19524
  4. Нажмите кнопку «Тест устройства». 1С успешно подключится к ККТ через запущенную службу RPC-сервера.

Вариант 2. Интеграция через Веб-сервер АТОЛ (с написанием HTTP-запросов)

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

Прежде чем приступать к разработке интеграции через порт 16732, проанализируем важные технические нюансы и современные ограничения платформы АТОЛ:

Если все требования соблюдены, вы можете отправлять JSON-задания на кассу. Рассмотрим пример программного кода на языке 1С для отправки запроса состояния ККТ на веб-сервер АТОЛ:


// Определяем параметры подключения к веб-серверу АТОЛ
АдресСервера = "1.1.1.1";
ПортСервера = 16732;

// Создаем HTTP-соединение
HTTPСоединение = Новый HTTPСоединение(АдресСервера, ПортСервера, , , , 10);

// Формируем JSON-запрос (например, получение статуса ККТ)
СтруктураЗапроса = Новый Структура;
СтруктураЗапроса.Вставить("uuid", Строка(Новый УникальныйИдентификатор));
СтруктураЗапроса.Вставить("request", Новый Массив);

// Заполняем массив команд ККТ
Команда = Новый Структура;
Команда.Вставить("type", "getDeviceStatus");
СтруктураЗапроса.request.Добавить(Команда);

// Записываем структуру в строку JSON
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, СтруктураЗапроса);
СтрокаJSON = ЗаписьJSON.Закрыть();

// Готовим HTTP-запрос к веб-серверу
HTTPЗапрос = Новый HTTPЗапрос("/api/v2/requests");
HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");

// Если настроена авторизация, добавляем заголовок авторизации Basic Auth
// ИмяПользователя и Пароль должны быть предварительно созданы в утилите АТОЛ
ИмяПользователя = "admin";
Пароль = "password";
РазделительКодирования = ИмяПользователя + ":" + Пароль;
ДвоичныеДанныеСтроки = ПолучитьДвоичныеДанныеИзСтроки(РазделительКодирования, КодировкаТекста.UTF8);
СтрокаBase64 = ПолучитьBase64СтрокуИзДвоичныхДанных(ДвоичныеДанныеСтроки);
HTTPЗапрос.Заголовки.Вставить("Authorization", "Basic " + СтрокаBase64);

HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);

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

При использовании веб-сервера важно помнить, что обмен происходит асинхронно. Веб-сервер принимает ваше JSON-задание методом POST на адрес /api/v2/requests, помещает его в очередь, возвращает статус 201 Created и начинает отправку команд физической кассе. Чтобы получить результат выполнения (например, номер пробитого чека или фискальный признак), ваша 1С должна периодически отправлять запросы методом GET по адресу /api/v2/requests/{uuid} до тех пор, пока статус задания не изменится на выполненный.

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

Выбор варианта подключения ККТ зависит от поставленных перед вами задач автоматизации:

← На главную