При обновлении платформы «1С:Предприятие» до версии 8.3.11.2899 в конфигурации «Управление производственным предприятием» (УПП) пользователи часто сталкиваются с ситуацией, когда торговое оборудование (в частности, ККТ «ШТРИХ-ЛАЙТ-01Ф» или другие фискальные регистраторы) прекращает работать. При попытке инициализации драйвера или открытия формы настройки система выдает ошибку:
{ОбщаяФорма.ФормаНастройкиУниверсальныйДрайвер.Форма(371)}: Значение не является значением объектного типа (Драйвер)
РезультатВыполнения = ПодключаемоеОборудованиеУниверсальныйДрайверКлиент.ВыполнитьКоманду("ПолучитьОписаниеДрайвера", ...
В этой статье мы подробно проанализируем причины возникновения данной проблемы и разберем по шагам, как восстановить работоспособность подключенного оборудования.
Рассмотрим, почему возникает ошибка обращения к свойству Драйвер. В подсистеме подключаемого оборудования метод ПолучитьОписаниеДрайвера пытается создать объект внешней компоненты или COM-сервера. Если загрузить библиотеку не удается, функция возвращает значение Неопределено вместо структуры с объектом драйвера. В результате последующая попытка обращения к полю Драйвер вызывает фатальное исключение.
Разберем основные причины, почему платформе 1С не удается загрузить внешнюю компоненту после обновления:
1cv8.exe не сможет загрузить 32-битную DLL-библиотеку напрямую.regsvr32 библиотеки с COM-сервером может нарушиться.Проанализируем разрядность запущенного приложения. Перейдем в меню Справка — О программе и проверим, какой клиент 1С используется на рабочем месте кассира:
Если запущен 64-битный клиент 1С, а драйвер ККТ поставляется только в виде 32-битной библиотеки, загрузить компоненту NativeAPI или COM-объект не удастся.
Для решения этой проблемы перейдем к одному из вариантов:
C:\Program Files (x86)\1cv8\8.3.11.2899\bin\1cv8.exe.Если разрядность совпадает, но платформа все равно выводит сообщение «Не удалось загрузить драйвер торгового оборудования», выполним повторную регистрацию библиотеки внешнего драйвера вручную.
regsvr32:
regsvr32 "C:\Program Files (x86)\32Bit-Path\DrvFR.dll"
Пройдемся отладчиком по коду конфигурации, чтобы точно определить место сбоя. Для этого откроем конфигуратор под полными правами и установим точку останова в точке вызова функции обработки оборудования:
РезультатВыполнения = ПодключаемоеОборудованиеУниверсальныйДрайверКлиент.ВыполнитьКоманду("ПолучитьОписаниеДрайвера", ...);
Если РезультатВыполнения = Неопределено Тогда
// Здесь происходит сбой при обращении к РезультатВыполнения.Драйвер
КонецЕсли;
Проверим в отладчике значение переменной РезультатВыполнения. Если возвращается Неопределено или структура с ошибкой, проанализируем внутренние свойства:
Рассмотрим дополнительные действия, если драйвер зарегистрирован, но платформа 8.3.11 блокирует его загрузку:
%LOCALAPPDATA%\1C\1cv8\ и %APPDATA%\1C\1cv8\.