Как подключить ККМ Пионер 114Ф к платформе 1С 7.7 через Native API компоненту?

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

В процессе автоматизации розничной торговли на базе исторической платформы 1С 7.7 специалисты часто сталкиваются с аппаратными ограничениями современных ККМ. Производители торгового оборудования давно прекратили выпуск и поддержку старых внешних компонент по стандарту COM (ActiveX) для устаревших платформ. Все актуальное программное обеспечение ККТ разрабатывается по технологии Native API, которая изначально ориентирована на платформу 1С 8.3.

Ярким примером является популярная ККМ Пионер 114Ф. Официальная интеграционная библиотека AddInPioneer.dll поставляется именно в формате Native API. При попытке зарегистрировать её стандартным системным установщиком regsvr32 или подключить напрямую в семерке разработчик получает критическую ошибку об отсутствии точки входа в библиотеку, а в худшем случае — аварийное завершение работы (падение) платформы 1С. В данной статье мы подробно разберем, как обойти это ограничение и подружить современную кассу Пионер с платформой 1С 7.7.

Выясняем причину несовместимости технологий

Для начала проанализируем ситуацию и разберемся, почему возникает конфликт на уровне операционной системы:

  1. COM-технология (1С 7.7): Платформа 1С 7.7 умеет работать исключительно с COM-объектами. При вызове метода ЗагрузитьВнешнююКомпоненту() платформа ожидает, что библиотека зарегистрирована в системном реестре Windows, имеет уникальный идентификатор класса (CLSID) и программный идентификатор (ProgID), а сама DLL-библиотека содержит стандартную функцию саморегистрации DllRegisterServer.
  2. Native API (1С 8.3): Данная технология не привязана к реестру Windows. Компоненты Native API загружаются платформой 1С 8 динамически непосредственно в оперативную память. В таких библиотеках отсутствуют функции COM-регистрации, поэтому утилита regsvr32 выдает ошибку о невозможности найти точку входа.

Чтобы решить эту проблему, нам понадобится специальный программный «мост» — транслятор обращений из COM-среды в Native API. В качестве такого моста мы будем использовать популярную универсальную обертку UniversalNativeWrapper.dll.

Пошаговый план настройки интеграции

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

Шаг 1. Подготовка файлов и системного окружения

Для успешной реализации схемы нам понадобятся следующие компоненты:

  1. Библиотека UniversalNativeWrapper.dll (универсальный COM-клиент для Native API компонент).
  2. Официальный драйвер ККМ AddInPioneer.dll (убедитесь, что используете 32-битную версию библиотеки x86, так как платформа 1С 7.7 работает только в 32-разрядном адресном пространстве).
  3. Установленная на рабочем компьютере или сервере служба **Pioneer Service** (низкоуровневый драйвер pioneersoftware), которая будет осуществлять непосредственную передачу пакетов данных на кассу.

Разместите файлы UniversalNativeWrapper.dll и AddInPioneer.dll в каталоге исполняемых файлов вашей платформы (например, в C:\1CV77\BIN\) или непосредственно в каталоге базы данных (ИБ).

Шаг 2. Регистрация COM-обертки в операционной системе

В отличие от самой библиотеки ККМ, библиотеку-обертку необходимо обязательно зарегистрировать в операционной системе Windows. Для этого выполните следующие действия:

  1. Запустите командную строку Windows (cmd) от имени Администратора.
  2. Выполните команду регистрации, указав полный путь к файлу обертки:

regsvr32 "C:\1CV77\BIN\UniversalNativeWrapper.dll"

В случае успешной регистрации на экране появится системное сообщение: "Успешное выполнение DllRegisterServer в UniversalNativeWrapper.dll". Это означает, что в реестре Windows появился необходимый нам класс с ProgID AddIn.UniversalNativeWrapper.

Шаг 3. Настройка сетевого подключения к ККМ Пионер 114Ф

Поскольку касса «Пионер 114Ф» переходит в режим фискального регистратора при удаленном обращении к ней, нам необходимо организовать канал связи:

Шаг 4. Написание программного кода в 1С 7.7

Теперь перейдем к реализации алгоритма инициализации оборудования в кодовой базе 1С 7.7. Нам нужно сначала загрузить внешнюю компоненту-обертку, затем инициализировать ее как COM-объект, а после этого через специальный метод передать ей управление над оригинальным Native API драйвером ККМ.

Рассмотрим подробный пример программного кода для реализации этой логики:


// Определяем пути к файлам компонент
ПутьКWrapper = КаталогПрограммы() + "UniversalNativeWrapper.dll";
ПутьКДрайверуПионер = КаталогПрограммы() + "AddInPioneer.dll";

// Попытка загрузки внешней компоненты-обертки
Если ЗагрузитьВнешнююКомпоненту(ПутьКWrapper) = 0 Тогда
    Предупреждение("Не удалось загрузить компоненту-обертку UniversalNativeWrapper.dll!");
    Возврат;
КонецЕсли;

// Создаем COM-объект обертки
Попытка
    ДрайверККМ = СоздатьОбъект("AddIn.UniversalNativeWrapper");
Исключение
    Предупреждение("Не удалось создать COM-объект AddIn.UniversalNativeWrapper. Проверьте регистрацию DLL в системе.");
    Возврат;
КонецПопытки;

// Подгружаем оригинальный Native API драйвер Пионера через методы обертки
// Первый параметр - полный путь к AddInPioneer.dll
// Второй параметр - внутренний идентификатор типа оборудования
Если ДрайверККМ.УстановитьИмяДрайвера(ПутьКДрайверуПионер, "Pioneer") = 1 Тогда
    // Если драйвер успешно подгружен, мы можем обращаться к его методам
    РевизияИнтерфейса = ДрайверККМ.ПолучитьРевизиюИнтерфейса();
    Сообщить("Связь с компонентой Пионер 114Ф успешно установлена. Ревизия драйвера: " + РевизияИнтерфейса);
Иначе
    Предупреждение("Ошибка инициализации оригинального драйвера Пионер в обертке!");
КонецЕсли;

Анализ возможных трудностей и ошибок

При настройке данной схемы взаимодействия могут возникнуть некоторые нюансы, которые мы проанализируем ниже:

Применение связки из универсальной COM-обертки и оригинальной Native API библиотеки позволяет вдохнуть вторую жизнь в системы автоматизации на платформе 1С 7.7, позволяя им полноценно работать с современным фискальным оборудованием без необходимости дорогостоящей и сложной миграции всей учетной системы на новые платформы.

← На главную