Как подключить ККТ Меркурий 115Ф к нетиповой 1С без использования БПО?

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

Многие разработчики, работающие с нетиповыми конфигурациями 1С, сталкиваются с проблемой интеграции кассового оборудования, когда встроенные механизмы Библиотеки подключаемого оборудования (БПО) недоступны или их использование избыточно. Рассмотрим, как организовать прямое взаимодействие с ККТ Меркурий 115Ф, минуя посредников.

Понимание принципа работы

Традиционный подход к интеграции касс предполагает использование COM-объектов или Внешних компонент (DLL). Однако производитель Инкотекс предоставляет возможность работы через встроенный веб-интерфейс устройства. Суть метода заключается в отправке POST-запросов с JSON-командами на локальный адрес кассы.

Для взаимодействия с ККТ нам потребуется знать IP-адрес и порт, на котором «слушает» устройство. Обычно это localhost и порт 50009 или 50010. Первым делом, при подключении по USB, убедитесь, что касса определилась в системе и доступна по сети.

Реализация взаимодействия на языке 1С

Вместо сложных нативных драйверов мы будем использовать штатный объект HTTPСоединение. Это позволяет писать лаконичный и переносимый код.

Разберем по шагам создание процедуры отправки команды:

  1. Создаем HTTPСоединение для обращения к локальному порту кассы.
  2. Формируем JSON-структуру с командой, которую необходимо выполнить.
  3. Отправляем POST-запрос с указанием заголовка Content-Type: application/json; charset=utf-8.

Посмотрим на пример структуры запроса:


// Пример формирования JSON-команды
Команда = Новый Структура;
Команда.Вставить("sessionKey", "ВАШ_КЛЮЧ_СЕССИИ");
Команда.Вставить("command", "GetCommonInfo");

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

Отправка данных на кассу

Теперь проанализируем реализацию самого HTTP-запроса в 1С:


// Настройка соединения
Соединение = Новый HTTPСоединение("127.0.0.1", 50010);
Запрос = Новый HTTPЗапрос("/");
Запрос.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
Запрос.УстановитьТелоИзСтроки(ТелоЗапроса);

// Отправка
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Результат = Ответ.ПолучитьТелоКакСтроку();

Преимущества и нюансы подхода

Использование REST API кассы имеет ряд неоспоримых преимуществ:

Однако стоит учитывать, что кассы Меркурий крайне чувствительны к версии прошивки. Если ваш код возвращает ошибки, первым делом проверьте актуальность прошивки устройства — производитель часто дополняет JSON-интерфейс в новых версиях.

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

Для удобства дальнейшей поддержки рекомендуем вынести логику работы с кассой в отдельный Модуль. Создайте методы ОткрытьЧек(), ДобавитьПозицию() и ЗакрытьЧек(), которые будут инкапсулировать формирование JSON-пакетов. Это позволит вам легко изменять логику работы, не затрагивая основной код документа реализации.

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

Таким образом, прямой HTTP-обмен является наиболее надежным и быстрым способом интеграции Меркурий 115Ф в нетиповые системы, обеспечивая стабильную работу без «тяжеловесных» библиотек.

← На главную