При настройке торгового оборудования нередко возникает ситуация, когда на одном компьютере развернуто несколько информационных баз, но одна из них успешно взаимодействует с онлайн-кассой или сканером, а вторая выдает ошибки или сообщает о несоответствии версии драйвера. При этом версия, отображаемая в окне настроек 1С, может совершенно не совпадать с версией установленного в операционной системе пакета драйверов (например, ДТО АТОЛ). Разберем подробно внутренние механизмы платформы 1С, выясним все возможные источники загрузки библиотек и рассмотрим пошаговые методы точной диагностики.
Проанализируем архитектуру работы современных конфигураций на базе Библиотеки подключаемого оборудования (БПО). Главная причина путаницы заключается в разнице между двумя компонентами:
Установка свежего дистрибутива драйвера в операционную систему не обновляет автоматически интеграционную компоненту, уже сохраненную внутри конкретной информационной базы. Каждая база использует тот модуль, который был в нее загружен.
Рассмотрим по порядку все места, где платформа 1С ищет и откуда загружает файлы драйверов:
ПодключитьВнешнююКомпоненту() выгружает DLL во временный каталог текущего пользователя (%TEMP%\v8_*.tmp) и загружает ее в память.Макет_ДрайверАТОЛККТ54ФЗ). Если конфигурации баз отличаются по релизам, версии встроенных макетов также будут разными.%APPDATA%\1C\1cv8\ExtCompT или в системном каталоге ExtCompT.C:\Program Files\1cv8\8.3.X.X\bin\ или в корневом каталоге файловой информационной базы.ProgID. Путь к физическому файлу определяется записями в реестре (HKEY_CLASSES_ROOT\CLSID\ или HKEY_CLASSES_ROOT\WOW6432Node\CLSID\ для 32-битного клиента).Обратим внимание на разрядность клиентского приложения. 32-битный клиент 1С (1cv8.exe) может загружать исключительно 32-битные библиотеки DLL, а 64-битный клиент (1cv8c.exe) — только 64-битные. Если одна база на рабочем месте запущена под 32-битной платформой, а вторая под 64-битной, они будут использовать совершенно разные ветки реестра и разные файлы драйверов в каталогах System32 и SysWOW64.
Разберем по шагам, как с абсолютной точностью выяснить, какой именно файл DLL использует конкретный процесс 1С в реальном времени:
1cv8.exe или 1cv8c.exe.fptr10.dll, fptr.dll, FprnM1C.dll). В колонке Path увидим точный каталог на диске, из которого 1С подгрузила библиотеку.Для устранения расхождений выполним следующие практические действия:
%LOCALAPPDATA%\Temp\ (папки v8_*) и %APPDATA%\1C\1cv8\ExtCompT, чтобы исключить подхват зависших старых сборок из кэша.PATH указан корректный путь к рабочему каталогу с системными библиотеками драйвера ККТ.