При работе с торговым оборудованием в отраслевом решении «Альфа-Авто» от компании «Рарус» пользователи и администраторы часто сталкиваются со следующей проблемой: ККТ (например, популярная модель АТОЛ-11Ф) стабильно работает в тесте драйвера, но при попытке пробить чек из программы 1С возникает критическая ошибка:
При подключении предоставляемого: 'АТОЛ-11Ф' произошла ошибка: Не удалось создать COM объект Addin.FprnM45. Ошибка создания объекта драйвера АТОЛ. На рабочую станцию необходимо установить драйвер ККМ...
Одновременно с этим в системных сообщениях или окне настроек драйвера появляется предупреждение о том, что версия драйвера ККТ сменилась на «полную» (платную), требующую покупки лицензии, хотя ранее все прекрасно работало в бесплатном режиме. Давайте подробно разберем, почему возникает этот конфликт, как устроена архитектура интеграции «Альфа-Авто» с драйверами АТОЛ 8.х (DTO 8), и как вернуть стабильную работу ККТ без лишних затрат.
Для понимания сути проблемы проанализируем структуру поставки драйверов АТОЛ 8-й версии. Исторически компания АТОЛ поставляла единый дистрибутив, который разделен на два режима работы:
Технически при установке драйвера в системе создаются два подкаталога в папке установки (по умолчанию C:\Program Files (x86)\ATOL\Drivers8\):
Bin — здесь содержатся библиотеки полнофункциональной (платной) версии.Bin_Free — здесь расположены файлы бесплатной версии драйвера.Если «Альфа-Авто» принудительно обращается к библиотекам из папки Bin, драйвер переходит в платный режим и блокирует работу, сообщая об отсутствии ключа защиты.
Ошибка Не удалось создать COM объект Addin.FprnM45 напрямую указывает на то, что операционная система Windows не смогла инициализировать 32-разрядный COM-класс драйвера. Рассмотрим основные причины этого поведения:
FprnM1C.dll или специализированная библиотека для работы по 54-ФЗ (например, FprnM1C82_54FZ.dll) не зарегистрирована в реестре операционной системы.Почему же настройки переключаются «сами по себе»? Виновником этого часто становится встроенная система защиты и лицензирования торгового оборудования «Рарус». Рассмотрим механизм ее работы:
Система защиты «Альфа-Авто» кэширует компоненты торгового оборудования во временных папках пользователя или в каталоге защиты (LocalProtect). При запуске программы система проверяет соответствие используемых библиотек и может принудительно перезаписать зарегистрированную в операционной системе библиотеку FprnM1C.dll версией из своего внутреннего кэша. Если в кэш защиты попал файл из каталога Bin (платного), программа будет заменять им рабочую бесплатную библиотеку при каждом старте.
Кроме того, в терминальных средах (RDP) при каждом новом подключении пользователя операционная система может генерировать новый уникальный идентификатор рабочего места (Workstation ID). «Альфа-Авто» привязывает настройки ККТ к этому ID. Как только идентификатор меняется, программа считает рабочее место новым, сбрасывает настройки подключения кассы на значения «по умолчанию» и пытается инициализировать драйвер в платном режиме.
---
Разберем последовательность действий, которая позволит устранить ошибку инициализации и зафиксировать использование бесплатной версии драйвера.
Убедимся, что для запуска «Альфа-Авто» используется 32-разрядный клиент «1С:Предприятие». Проверить это можно в диспетчере задач Windows (процесс должен иметь суффикс *32 или (32 бита)) либо в окне «О программе» в самой 1С.
Нам необходимо принудительно зарегистрировать в системе библиотеку из папки Bin_Free. Для этого выполним следующие действия:
regsvr32 "C:\Program Files (x86)\ATOL\Drivers8\Bin_Free\FprnM1C.dll"
Если в вашей версии интеграции используется библиотека для 54-ФЗ, команда будет выглядеть так:
regsvr32 "C:\Program Files (x86)\ATOL\Drivers8\Bin_Free\FprnM1C82_54FZ.dll"
В случае успешной регистрации на экране появится системное сообщение Успешное выполнение DllRegisterServer....
Чтобы предотвратить ситуацию, когда система защиты «Альфа-Авто» перезаписывает зарегистрированную DLL, выполним «подмену» файлов на уровне файловой системы:
C:\Program Files (x86)\ATOL\Drivers8\Bin\.FprnM1C.dll (или FprnM1C82_54FZ.dll) и переименуем их, например, добавив к расширению суффикс .bak.Bin_Free и вставим их в каталог Bin. Таким образом, даже если система защиты попытается подтянуть библиотеку из стандартного каталога Bin, она физически получит бесплатную версию драйвера, которая успешно определит кассу АТОЛ и продолжит работу без требования лицензии.Запустим «Альфа-Авто» и перейдем в форму настройки параметров ККТ:
АТОЛ-11Ф), а не обобщенное значение «ККТ стороннего производителя». Выбор сторонней модели автоматически принуждает драйвер активировать платные функции.Пример программного кода, который выполняется в недрах «Альфа-Авто» для проверки инициализации драйвера, можно представить следующим образом. Мы можем использовать его в отладчике для локализации проблемы:
Попытка
// Попытка создания COM-объекта драйвера АТОЛ 8.х
ДрайверККТ = Новый COMОбъект("AddIn.FprnM45");
Сообщить("COM-объект AddIn.FprnM45 успешно создан!");
// Проверка версии драйвера
ВерсияДрайвера = ДрайверККТ.DriverVersion;
Сообщить("Версия установленного драйвера: " + ВерсияДрайвера);
Исключение
Предупреждение("Ошибка создания объекта драйвера! Проверьте регистрацию DLL. " + ОписаниеОшибки());
КонецПопытки;
---
Рассмотренный метод решает проблему в рамках архитектуры ДТО 8. Однако важно понимать, что линейка драйверов АТОЛ 8.х полностью устарела и снята с поддержки производителем. Рассмотрим причины, по которым вашей организации в ближайшее время все же придется задуматься об обновлении программного обеспечения:
Для долгосрочного решения проблем рекомендуется выполнить переход на ДТО 10. В современных релизах «Альфа-Авто» интеграция с ДТО 10 уже реализована разработчиками «Рарус». Переход на 10-ю версию драйвера полностью исключает использование устаревших COM-объектов типа AddIn.FprnM45, заменяя их на современную Native-компоненту AddIn.Fptr10, которая стабильно работает как на 32-разрядных, так и на 64-разрядных платформах 1С.