Многие разработчики, работающие с нетиповыми конфигурациями 1С, сталкиваются с проблемой интеграции кассового оборудования, когда встроенные механизмы Библиотеки подключаемого оборудования (БПО) недоступны или их использование избыточно. Рассмотрим, как организовать прямое взаимодействие с ККТ Меркурий 115Ф, минуя посредников.
Традиционный подход к интеграции касс предполагает использование COM-объектов или Внешних компонент (DLL). Однако производитель Инкотекс предоставляет возможность работы через встроенный веб-интерфейс устройства. Суть метода заключается в отправке POST-запросов с JSON-командами на локальный адрес кассы.
Для взаимодействия с ККТ нам потребуется знать IP-адрес и порт, на котором «слушает» устройство. Обычно это localhost и порт 50009 или 50010. Первым делом, при подключении по USB, убедитесь, что касса определилась в системе и доступна по сети.
Вместо сложных нативных драйверов мы будем использовать штатный объект HTTPСоединение. Это позволяет писать лаконичный и переносимый код.
Разберем по шагам создание процедуры отправки команды:
HTTPСоединение для обращения к локальному порту кассы.JSON-структуру с командой, которую необходимо выполнить.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 кассы имеет ряд неоспоримых преимуществ:
БПО или совместимости DLL с вашей разрядностью 1С.Однако стоит учитывать, что кассы Меркурий крайне чувствительны к версии прошивки. Если ваш код возвращает ошибки, первым делом проверьте актуальность прошивки устройства — производитель часто дополняет JSON-интерфейс в новых версиях.
Для удобства дальнейшей поддержки рекомендуем вынести логику работы с кассой в отдельный Модуль. Создайте методы ОткрытьЧек(), ДобавитьПозицию() и ЗакрытьЧек(), которые будут инкапсулировать формирование JSON-пакетов. Это позволит вам легко изменять логику работы, не затрагивая основной код документа реализации.
Помните, что sessionKey является важным параметром для сессии связи. Его нужно получать при инициализации работы с кассой и использовать до момента закрытия чека.
Таким образом, прямой HTTP-обмен является наиболее надежным и быстрым способом интеграции Меркурий 115Ф в нетиповые системы, обеспечивая стабильную работу без «тяжеловесных» библиотек.