Как подключить онлайн-кассу АТОЛ 55Ф по TCP/IP в 1С

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

При интеграции кассовой техники АТОЛ (например, модели АТОЛ 55Ф) разработчики часто сталкиваются с ситуацией, когда прямое подключение через COM-порт работает без нареканий, но попытка перевести ККТ на работу по сети Ethernet или Wi-Fi через вызов старого метода Open() с массивом настроек завершается ошибкой. Разберем причины такого поведения, выясним, почему массив параметров не подходит для сетевого обмена, и рассмотрим корректные способы подключения кассы по IP-адресу.

Почему не работает метод Open с передачей массива параметров

Проанализируем причину ошибки при попытке передать сетевые параметры в метод Open(МассивЗначений, ИДУстройства). Этот метод относится к устаревшему стандарту интеграции торгового оборудования (ДТО 6/8 и компоненты вида AddIn.ATOL_KKM_1C). В данной сигнатуре массив строго фиксирован и включает в себя ограниченный набор позиций:

  1. PortNumber — номер последовательного интерфейса (например, 1 для COM1, 7 для COM7).
  2. BaudRate — скорость обмена данными последовательного порта.
  3. Password — пароль для входа в рабочий режим кассы.
  4. AccessPassword — системный пароль доступа к ККМ.
  5. Model — код модели устройства.
  6. PrintTax — признак вывода ставок налогов в чеке.

Попытка подставить строку вида "192.168.11.135:5555" в элементы массива приводит к сбою, так как логика устаревшего драйвера ожидает исключительно номер физического или виртуального COM-порта. Механизм передачи IP-адреса через массив параметров в данном интерфейсе не предусмотрен.

Корректное подключение через стандартные свойства драйвера 1С

Для работы с современными онлайн-кассами по требованиям 54-ФЗ используется стандарт Библиотеки подключаемого оборудования (БПО) или обновленная внешняя компонента (например, AddIn.ATOL_KKM_1C82_54FZ). В этом случае параметры связи передаются не единым массивом, а через установку именованных свойств объекта драйвера.

Посмотрим на пример инициализации и настройки параметров подключения через метод УстановитьПараметр():


// Подключение внешней компоненты драйвера
ProgID = "AddIn.ATOL_KKM_1C82_54FZ";
Если ПодключитьВнешнююКомпоненту(ProgID) Тогда
    ОбъектДрайвера = Новый(ProgID);
Иначе
    ВызватьИсключение "Не удалось загрузить внешнюю компоненту ККТ!";
КонецЕсли;

// Установка параметров соединения по протоколу TCP/IP
ОбъектДрайвера.УстановитьПараметр("MachineName", "");
ОбъектДрайвера.УстановитьПараметр("IPAdress", "192.168.11.135");
ОбъектДрайвера.УстановитьПараметр("IPPort", 5555); // Стандартный порт ККТ АТОЛ
ОбъектДрайвера.УстановитьПараметр("Model", 62);     // Модель устройства
ОбъектДрайвера.УстановитьПараметр("AccessPassword", "");
ОбъектДрайвера.УстановитьПараметр("Password", "");
ОбъектДрайвера.УстановитьПараметр("PrintTax", Истина);
ОбъектДрайвера.УстановитьПараметр("WriteLogFile", Ложь);

// Подключение к устройству
ИДУстройства = "";
Результат = ОбъектДрайвера.Подключить(ИДУстройства);

Если Не Результат Тогда
    ОписаниеОшибки = "";
    ОбъектДрайвера.ПолучитьОшибку(ОписаниеОшибки);
    Сообщить("Ошибка подключения кассы: " + ОписаниеОшибки);
Иначе
    Сообщить("Касса успешно подключена, ID: " + ИДУстройства);
КонецЕсли;

После успешной инициализации можно вызывать стандартные команды фискализации и сервисных операций, например печать отчета без гашения (X-отчет):

РезультатОтчета = ОбъектДрайвера.НапечататьОтчетБезГашения(ИДУстройства);

Подключение через нативный драйвер АТОЛ 10-й версии (AddIn.Fptr10)

Если интеграция строится напрямую на базе современного драйвера ДТО 10 без использования прослойки БПО, настройка сетевого обмена выполняется через установку предопределенных параметров драйвера:


Попытка
    ПодключитьВнешнююКомпоненту("AddIn.Fptr10");
    ДрайверККТ = Новый("AddIn.Fptr10");
Исключение
    ВызватьИсключение "Драйвер ДТО 10 не установлен в системе.";
КонецПопытки;

// Установка типа подключения: 1 = TCP/IP (LIBFPTR_PORT_TCPIP)
ДрайверККТ.setParam(ДрайверККТ.LIBFPTR_SETTING_PORT, ДрайверККТ.LIBFPTR_PORT_TCPIP);
ДрайверККТ.setParam(ДрайверККТ.LIBFPTR_SETTING_IPADDRESS, "192.168.11.135");
ДрайверККТ.setParam(ДрайверККТ.LIBFPTR_SETTING_IPPORT, 5555);

// Применение настроек и открытие соединения
ДрайверККТ.applySingleSettings();
ДрайверККТ.open();

Если ДрайверККТ.isOpened() Тогда
    Сообщить("Связь с кассой по IP установлена успешно.");
Иначе
    Сообщить("Не удалось открыть соединение с ККТ по указанному адресу.");
КонецЕсли;

Важные аппаратные и сетевые особенности при работе по IP

Разберем ключевые моменты, которые необходимо проверить на стороне кассы и локальной сети:

  1. Переключение канала управления: ККТ АТОЛ не может одновременно обрабатывать команды управления по USB/COM и по Ethernet. В сервисных настройках кассы (через утилиту «Тест драйвера ККТ» или сервисное меню) канал связи с ПК должен быть явно переведен в режим Ethernet.
  2. Сетевой порт: Порт по умолчанию для протокола АТОЛ — 5555. Убедимся, что данный TCP-порт открыт в локальном брандмауэре и маршрутизаторах между рабочим местом 1С и кассой.
  3. Монопольный доступ к порту: Касса АТОЛ удерживает только одну активную TCP-сессию. Если порт 5555 занят фоновой утилитой настройки драйвера, другим сеансом 1С или службой EoU/EoT, новое подключение завершится ошибкой таймаута. При совместном использовании кассы с нескольких рабочих мест отправку чеков следует организовать через единый серверный сервис или очередь печати в 1С.
← На главную