При подключении онлайн-касс и торгового оборудования в программах 1С:Предприятие (например, 1C:Бухгалтерия, 1С:Розница или 1С:Управление торговлей) разработчики и администраторы нередко сталкиваются с ситуацией, когда процедура загрузки драйвера завершается ошибкой. При этом на одном рабочем месте внешняя компонента инициализируется штатно, а на другом компьютере — вызов метода НачатьПодключениеВнешнейКомпоненты или ПодключитьВнешнююКомпоненту терпит неудачу.
Разберем подробно причины возникновения этой ошибки, механизм работы платформы с внешними библиотеками и пошаговые способы восстановления работоспособности кассового оборудования.
Рассмотрим, что происходит внутри платформы, когда вызывается программный код подключения драйвера из макета конфигурации:
// Пример асинхронного подключения внешней компоненты из общего макета
ОповещениеОЗавершении = Новый ОписаниеОповещения("ПослеПодключенияКомпоненты", ЭтотОбъект);
НачатьПодключениеВнешнейКомпоненты(ОповещениеОЗавершении, "ОбщийМакет.ДрайверАТОЛККТ54ФЗ", ТипПодключенияВнешнейКомпоненты.Native);
При выполнении этого кода платформа 1С выполняет следующую цепочку действий:
%TEMP%).C:\Users\<ИмяПользователя>\AppData\Roaming\1C\1cv8\ExtCompT\.1cv8.exe с помощью системных вызовов Windows API.Если на любом из этих шагов операционная система блокирует доступ к файлам или не находит необходимые системные зависимости, вызов завершается ошибкой.
Наиболее частая причина, с которой сталкиваются пользователи, — отсутствие прав на создание, изменение или выполнение файлов в пользовательской директории хранения внешних компонент 1С.
Разберем по шагам, как исправить эту проблему:
C:\Users\<ИмяПользователя>\AppData\Roaming\1C\1cv8\.ExtCompT. Если папка отсутствует, создадим её вручную.ExtCompT, перейдем на вкладку Безопасность.ExtCompT, удалив старые версии ранее распакованных библиотек драйверов.В операционных системах Windows также стоит проверить папку виртуализации VirtualStore (расположенную в C:\Users\<ИмяПользователя>\AppData\Local\VirtualStore\). Если система ранее перенаправляла запись файлов драйвера туда из-за ограничений UAC, необходимо удалить устаревшие копии библиотек из этого каталога.
Проанализируем требования к разрядности и версиям драйверов торгового оборудования (например, АТОЛ):
Всегда проверяем разрядность запущенного приложения в окне О программе и следим за тем, чтобы используемый общий макет драйвера соответствовал разрядности клиента.
Внешние компоненты драйверов ККТ компилируются на языке C++ и требуют наличия в Windows соответствующей среды выполнения (CRT). Если на компьютере отсутствуют пакеты Microsoft Visual C++ Redistributable (версий 2008, 2010, 2012, 2013, 2015–2022), операционная система не сможет загрузить DLL-библиотеку драйвера.
Важный нюанс: если используется 32-битная платформа 1С, на 64-битную Windows необходимо обязательно установить 32-битные пакеты Visual C++ (x86), так как 64-битные библиотеки не могут использоваться 32-битным процессом платформы.
Если кассовый узел работает под управлением Windows 7, обратим внимание на следующие системные требования:
TEMP на простую папку без спецсимволов, например C:\Temp.Если стандартное подключение через макет продолжает выдавать ошибку, используем следующие методы:
ProcMon, установим фильтр по имени процесса Process Name is 1cv8.exe и повторим попытку подключения кассы. В журнале событий увидим точный статус ошибки: ACCESS DENIED (проблема прав), NAME NOT FOUND (отсутствие зависимой DLL) или SHARING VIOLATION (файл заблокирован антивирусом).bin установленной платформы 1С (например, C:\Program Files (x86)\1cv8\8.3.XX.XXXX\bin\). В этом случае поиск и загрузка зависимостей происходят непосредственно из рабочей папки платформы.
Попытка
Драйвер = Новый COMОбъект("AddIn.Fptr10");
// Дальнейшая работа с объектом драйвера
Исключение
Сообщить("Не удалось инициализировать COM-объект драйвера: " + ОписаниеОшибки());
КонецПопытки;