Как подключить фискальный регистратор Мария 304Т к 1С напрямую через COM-объект?

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

При автоматизации розничной торговли часто возникает необходимость отправлять чеки на печать непосредственно из документов 1С (например, из документа «Реализация товаров и услуг» или «Чек ККМ»). Стандартные механизмы БСП (Библиотеки стандартных подсистем) не всегда удовлетворяют специфическим требованиям бизнеса, особенно когда нужно реализовать сложную логику распределения налогов, вывода дополнительных текстовых полей или нестандартных скидок. В таких случаях программисты принимают решение подключаться к фискальному регистратору напрямую через механизм OLE/COM.

В этой статье мы подробно разберем, как подключить популярный фискальный регистратор Мария 304Т (производства ООО «Завод Резонанс») к платформе 1С без использования стороннего платного программного обеспечения. Мы выясним, какие именно драйверы необходимы для работы, как узнать правильное имя COM-объекта (ProgID) и как написать рабочий код инициализации устройства.

Типичная ошибка: путаница между системным драйвером и OLE-сервером

Анализируя обсуждения разработчиков, мы часто сталкиваемся с ситуацией, когда при попытке подключения устройства возникает ошибка создания COM-объекта. Выясним причину этой проблемы. Зачастую на рабочий компьютер устанавливают лишь системный драйвер кабеля-переходника (программный эмулятор USB-to-COM, например, Profiler или FTDI). Этот драйвер лишь создает в диспетчере устройств Windows виртуальный порт (например, COM3), но он не предоставляет программного интерфейса для управления фискальными операциями.

Для того чтобы 1С могла отправлять команды на печать, нам необходим специализированный драйвер от производителя — Resonance OLE Manager (или OLEManagerPlus). Именно эта библиотека регистрируется в операционной системе как COM-сервер и предоставляет разработчику набор методов и свойств.

Определяем имя COM-объекта (ProgID) для Марии 304Т

Для обращения к фискальному регистратору из кода 1С с помощью функции Новый COMОбъект() нам нужно знать точное имя зарегистрированного в системе класса (ProgID). В зависимости от используемого программного обеспечения рассмотрим два основных варианта:

  1. Официальный драйвер от завода «Резонанс» (Рекомендуемый бесплатный вариант):

    Производитель поставляет OLE-сервер, который поддерживает всю линейку аппаратов «Мария». Для создания объекта в коде 1С используются следующие идентификаторы:

    • M304Manager.Application — актуальное имя COM-объекта, предназначенное специально для фискальных регистраторов серии Мария-304Т. Используйте его по умолчанию.
    • M301Manager.Application — имя объекта для обратной совместимости со старыми моделями (например, Мария-301). Его также можно использовать, но некоторые новые специфические функции аппарата 304Т в нем могут быть недоступны.
  2. Универсальный драйвер от сторонних разработчиков (например, «АртСофт»):

    Если на вашем предприятии внедрено платное универсальное решение от компании АртСофт, имя COM-объекта в системе будет другим. Проанализируем документацию к данному драйверу и найдем соответствующий ProgID:

    • ArtSoft.FiscalPrinter — имя COM-объекта для работы через драйвер АртСофт.

Подключение и инициализация устройства в коде 1С

Рассмотрим по шагам процесс инициализации связи с фискальным регистратором через официальный OLE-драйвер Resonance. Нам понадобится создать объект, вызвать метод инициализации и проверить результат соединения.

Обратите внимание на важную деталь: при вызове любых финансовых методов (проведение строки чека, оплата, выплата) все денежные суммы должны передаваться в копейках в виде целых чисел. Например, сумму 150 гривен 50 копеек нужно передавать как 15050. Это исключает ошибки округления, связанные с представлением чисел с плавающей точкой.

Посмотрим на пример реализации подключения в коде 1С:


// Определим параметры подключения
ПортПодключения = 3; // Соответствует COM3 в системе
ИмяКассира = "Администратор";
ПарольУстройства = "0000"; // Дефолтный пароль доступа к эквайрингу/ЭККА

// Попробуем создать COM-объект драйвера
Попытка
    ФП = Новый COMОбъект("M304Manager.Application");
Исключение
    Предупреждение("Не удалось создать COM-объект M304Manager.Application. Проверьте, зарегистрирована ли библиотека Resonance OLE Manager в Windows!");
    Возврат;
КонецПопытки;

// Инициализируем соединение с физическим устройством
// Метод Init возвращает 1 в случае успеха и 0 или отрицательное число в случае ошибки
РезультатСоединения = ФП.Init(ПортПодключения, ИмяКассира, ПарольУстройства);

Если РезультатСоединения = 1 Тогда
    Сообщить("Фискальный регистратор Мария 304Т успешно подключен!");
    
    // Здесь мы можем выполнять необходимые фискальные операции
    // Например, запрос состояния аппарата, печать нулевого чека или X-отчета
    
    // По окончании работы обязательно корректно закрываем сессию связи
    ФП.Done();
    Сообщить("Сеанс работы с фискальным регистратором успешно завершен.");
Иначе
    КодОшибки = ФП.LastError;
    ОписаниеОшибки = ФП.LastErrorChar; // Получаем текстовое описание ошибки от драйвера
    ВызватьИсключение "Ошибка подключения к ФР: " + ОписаниеОшибки + " (Код: " + Строка(КодОшибки) + ")";
КонецЕсли;

Где найти готовые примеры интеграции и шаблоны обработок?

Разработчикам не требуется программировать каждый чих с нуля. При установке официального пакета программного обеспечения Resonance OLE Manager в каталог установки утилиты (как правило, в папку C:\Program Files (x86)\Resonance\OLE Manager\Samples\) копируются готовые шаблоны внешних обработок для 1С.

Обычно эти файлы имеют имена вида Resonance_Maria304_v1.2.epf или аналогичные, в зависимости от версии релиза. Открыв эту обработку в конфигураторе, мы сможем детально изучить готовые функции для выполнения следующих операций:

Дополнительные возможности: подключение по сети TCP/IP

Современные модели фискальных регистраторов Мария 304Т оснащены сетевым интерфейсом Ethernet. Это позволяет отказаться от привязки оборудования к конкретному рабочему месту по USB-кабелю. Драйвер M304Manager.Application поддерживает передачу команд по протоколу TCP/IP.

Для реализации сетевого подключения в методе Init вместо номера COM-порта передаются сетевые параметры устройства (IP-адрес и порт сокета). Это особенно удобно при работе в терминальном режиме (RDP), так как отпадает необходимость пробрасывать локальные COM-порты клиента на удаленный сервер, что часто работает нестабильно.

← На главную