Как исправить ошибку «Значение не является значением объектного типа (ЭтоНеФормализованныйКодМаркировки)» в 1С:УНФ 3.0 при сканировании маркировки?

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

При работе в программе 1С:Управление нашей фирмой (редакция 3.0), особенно на релизах версии 3.0.11.169, пользователи часто сталкиваются с неприятной ситуацией в Рабочем месте кассира (РМК). Суть проблемы заключается в том, что после некоторого периода бездействия системы первое же сканирование кода маркировки (DataMatrix) приводит к аварийному завершению работы модуля с ошибкой: Значение не является значением объектного типа (ЭтоНеФормализованныйКодМаркировки). Перезагрузка программы временно помогает, но через некоторое время ошибка возвращается снова.

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

Разберем причину возникновения ошибки

Давайте проанализируем ситуацию с точки зрения внутреннего кода конфигурации. Ошибка возникает в общем модуле РазборКодаМаркировкиИССлужебныйКлиентСервер. Исходя из текста ошибки, система пытается обратиться к функции ЭтоНеФормализованныйКодМаркировки, используя объект, который на момент вызова не инициализирован (имеет значение Неопределено).

Рассмотрим фрагмент кода, где происходит сбой:


Если ОбщийМодуль.ЭтоНеФормализованныйКодМаркировки(ПараметрыРазбораКодаМаркировки, Настройки, ДанныеРезультата, РезультатБезФильтра) Тогда
    // Логика обработки неформализованного кода
КонецЕсли;

Проблема кроется в механизме «ленивой инициализации» параметров в подсистеме интеграции с ИС МП. Когда программа простаивает, кэш данных или контекст формы может быть частично сброшен. При поступлении внешнего события от сканера штрихкода через COM-порт, система пытается быстро восстановить процесс разбора, но переменная ПараметрыРазбораКодаМаркировки.МодульКонтекста оказывается пустой. Это программная недоработка конкретных релизов, где не предусмотрена проверка на существование объекта перед вызовом метода.

Также важно отметить взаимосвязь с ФФД 1.2. Если кассовое оборудование при простое теряет связь с сервером проверки кодов (ОИС М), драйвер может вернуть пустой или некорректный ответ, который некорректно обрабатывается библиотекой подключаемого оборудования (БПО), вызывая цепочку исключений.

Решение №1: Установка исправительных патчей

Первым делом нам необходимо установить официальные исправления (патчи), выпущенные компанией 1С для устранения ошибок в модулях интеграции. Проанализировав опыт решения подобных проблем, мы выделили список критически важных патчей для УНФ 3.0:

  1. EF_00_00728808 — исправляет общие ошибки разбора кодов маркировки.
  2. EF_00_00737192_5 — устраняет проблему потери контекста при проверке кодов через ККТ.
  3. EF_00_00737490 — оптимизирует работу с оборудованием в режиме РМК.

Для установки патчей выполним следующие действия:

  1. Перейдем в раздел Обслуживание — Обновление программы.
  2. Выберем пункт Установка исправлений (патчей).
  3. Если настроен автоматический поиск, система предложит их сама. Если нет — загрузим их вручную с портала ИТС и установим в систему.

Решение №2: Обновление драйверов оборудования

Часто проблема усугубляется использованием устаревших версий драйверов сканера, которые некорректно передают данные в управляемые формы после «пробуждения» устройства. Рассмотрим процесс обновления драйвера:

Выясним, какая версия компоненты используется сейчас. В настройках подключаемого оборудования для сканера штрихкода рекомендуется использовать драйвер «1С:Сканеры штрихкода (Native Api)». Для стабильной работы версии УНФ 3.0 требуется версия драйвера не ниже 10.6.2.1 (с поддержкой требований версии 4.3).

Чтобы обновить компоненту:

  1. Зайдем в Администрирование — Подключаемое оборудование.
  2. Откроем карточку вашего сканера.
  3. Нажмем кнопку Настроить и проверим текущую версию. Если она ниже указанной, нажмем Функции — Установить драйвер.

Решение №3: Настройка параметров энергосбережения и таймаутов

Поскольку сканеры подключены через COM-порт (или эмуляцию USB-COM), операционная система Windows может отключать питание порта в целях экономии энергии после периода простоя. Это приводит к тому, что первый пакет данных от сканера приходит «битым» или с задержкой, что и провоцирует ошибку в 1С.

Проделаем следующие шаги в ОС:

  1. Откроем Диспетчер устройств.
  2. Найдем раздел Контроллеры USB и Порты (COM и LPT).
  3. В свойствах USB Root Hub и вашего COM-порта перейдем на вкладку Управление электропитанием.
  4. Снимем галочку с пункта «Разрешить отключение этого устройства для экономии энергии».

В самой 1С в настройках сканера также увеличим параметр Таймаут до 500-1000 мс, чтобы система успевала обработать событие от оборудования.

Решение №4: Проверка настроек сервера ОИС М на ККТ

Если после установки патчей ошибка меняется на текст «Настройки адреса сервера не заданы», это означает проблему взаимодействия кассы с сервером «Честного Знака». При ФФД 1.2 касса сама проверяет код перед продажей.

Посмотрим на настройки ККТ:

  1. Убедимся, что в параметрах связи ККТ (через тест драйвера производителя, например, Атол или Штрих-М) правильно указаны адреса и порты сервера ОИС М.
  2. Проверим наличие связи с ОФД. Если касса не может достучаться до сервера маркировки, она возвращает ошибку, которую 1С воспринимает как сбой объекта разбора.

Рассмотрим альтернативный способ (обходной путь)

Если вышеуказанные меры не помогли немедленно, а торговля не может ждать, можно временно отключить обязательную проверку кодов средствами ККТ в настройках РМК. Это исключит лишнее звено в цепочке вызовов ЭтоНеФормализованныйКодМаркировки.

Важно: Это допустимо только в том случае, если ваша товарная группа и учетная политика позволяют проводить проверку кода постфактум через ОФД, не нарушая требования законодательства.

Для этого в 1С перейдем в Настройки РМК — Продажи и найдем опции управления проверкой маркировки. Отключение локальной проверки снизит нагрузку на модуль разбора при первом сканировании.

Подводя итог, можно сказать, что данная проблема является комплексной. Совместное применение патчей EF_00_00728808, обновление драйвера до 10.6.2.1 и настройка электропитания COM-портов в 99% случаев полностью устраняют ошибку в 1С:УНФ 3.0.

← На главную