Почему не работает касса в 1С:УПП после обновления платформы до версии 8.3.11 и как исправить ошибку «Значение не является значением объектного типа (Драйвер)»?

Программист 1С v8.3 (Обычные формы) Торговля и дистрибуция
← На главную

При обновлении платформы «1С:Предприятие» до версии 8.3.11.2899 в конфигурации «Управление производственным предприятием» (УПП) пользователи часто сталкиваются с ситуацией, когда торговое оборудование (в частности, ККТ «ШТРИХ-ЛАЙТ-01Ф» или другие фискальные регистраторы) прекращает работать. При попытке инициализации драйвера или открытия формы настройки система выдает ошибку:


{ОбщаяФорма.ФормаНастройкиУниверсальныйДрайвер.Форма(371)}: Значение не является значением объектного типа (Драйвер)
РезультатВыполнения = ПодключаемоеОборудованиеУниверсальныйДрайверКлиент.ВыполнитьКоманду("ПолучитьОписаниеДрайвера", ...

В этой статье мы подробно проанализируем причины возникновения данной проблемы и разберем по шагам, как восстановить работоспособность подключенного оборудования.

Выясним причину возникновения ошибки

Рассмотрим, почему возникает ошибка обращения к свойству Драйвер. В подсистеме подключаемого оборудования метод ПолучитьОписаниеДрайвера пытается создать объект внешней компоненты или COM-сервера. Если загрузить библиотеку не удается, функция возвращает значение Неопределено вместо структуры с объектом драйвера. В результате последующая попытка обращения к полю Драйвер вызывает фатальное исключение.

Разберем основные причины, почему платформе 1С не удается загрузить внешнюю компоненту после обновления:

  1. Несовпадение разрядности (битности) клиента 1С и драйвера: При обновлении сервера и клиентов 1С могла быть установлена 64-битная версия платформы (x86-64). Если используемый драйвер торгового оборудования является 32-битным (x86), 64-битный процесс 1cv8.exe не сможет загрузить 32-битную DLL-библиотеку напрямую.
  2. Слет регистрации внешней компоненты/COM-объекта в Windows: При смене каталогов платформы или обновлении системы связь зарегистрированной через regsvr32 библиотеки с COM-сервером может нарушиться.
  3. Ограничения безопасности платформы 8.3.11: Начиная с версий 8.3.10 и 8.3.11 в платформе усилены механизмы безопасности (включая защиту от опасных действий и правила работы профилей безопасности), что может блокировать подключение внешних компонент.
  4. Очистка или повреждение локального кэша: При смене версии платформы сбрасываются кешированные файлы компонент в профиле пользователя, а для повторной автоматической распаковки и регистрации DLL могут потребоваться повышенные права в ОС.

Шаг 1: Проверка разрядности клиента 1С и драйвера

Проанализируем разрядность запущенного приложения. Перейдем в меню Справка — О программе и проверим, какой клиент 1С используется на рабочем месте кассира:

Если запущен 64-битный клиент 1С, а драйвер ККТ поставляется только в виде 32-битной библиотеки, загрузить компоненту NativeAPI или COM-объект не удастся.

Для решения этой проблемы перейдем к одному из вариантов:

  1. Установим и запустим 32-битный клиент 1С из каталога C:\Program Files (x86)\1cv8\8.3.11.2899\bin\1cv8.exe.
  2. Либо обновим драйвер кассового аппарата на ПК до актуальной версии, содержащей 64-битную интеграционную компоненту (NativeAPI).

Шаг 2: Повторная регистрация DLL-библиотеки в операционной системе

Если разрядность совпадает, но платформа все равно выводит сообщение «Не удалось загрузить драйвер торгового оборудования», выполним повторную регистрацию библиотеки внешнего драйвера вручную.

  1. Откроем командную строку Windows от имени Администратора.
  2. Перейдем в каталог с установленным драйвером ККТ (например, для оборудования ШТРИХ-М).
  3. Выполним команду регистрации компоненты с помощью утилиты regsvr32: regsvr32 "C:\Program Files (x86)\32Bit-Path\DrvFR.dll"
  4. После появления сообщения об успешной регистрации перезапустим сеанс «1С:Предприятие».

Шаг 3: Диагностика отладчиком и проверка портов

Пройдемся отладчиком по коду конфигурации, чтобы точно определить место сбоя. Для этого откроем конфигуратор под полными правами и установим точку останова в точке вызова функции обработки оборудования:


РезультатВыполнения = ПодключаемоеОборудованиеУниверсальныйДрайверКлиент.ВыполнитьКоманду("ПолучитьОписаниеДрайвера", ...);
Если РезультатВыполнения = Неопределено Тогда
    // Здесь происходит сбой при обращении к РезультатВыполнения.Драйвер
КонецЕсли;

Проверим в отладчике значение переменной РезультатВыполнения. Если возвращается Неопределено или структура с ошибкой, проанализируем внутренние свойства:

  1. Проверим, не слетели ли настройки COM-портов и скорости подключения в справочнике «Подключаемое оборудование».
  2. Убедимся, что COM-порт кассы не занят сторонней утилитой или драйвером моноблока.

Шаг 4: Проверка настроек безопасности и очистка кэша

Рассмотрим дополнительные действия, если драйвер зарегистрирован, но платформа 8.3.11 блокирует его загрузку:

  1. Очистка кэша: Завершим работы всех сеансов 1С и очистим локальный кэш пользователя в каталогах %LOCALAPPDATA%\1C\1cv8\ и %APPDATA%\1C\1cv8\.
  2. Защита от опасных действий: Если платформа блокирует выполнение внешних модулей, отключим опцию «Защита от опасных действий» для пользователя 1С через конфигуратор (в свойствах пользователя) или перезапустим распаковку внешней компоненты от имени администратора системы.
← На главную