При работе в программе 1С:Управление нашей фирмой (редакция 3.0), особенно на релизах версии 3.0.11.169, пользователи часто сталкиваются с неприятной ситуацией в Рабочем месте кассира (РМК). Суть проблемы заключается в том, что после некоторого периода бездействия системы первое же сканирование кода маркировки (DataMatrix) приводит к аварийному завершению работы модуля с ошибкой: Значение не является значением объектного типа (ЭтоНеФормализованныйКодМаркировки). Перезагрузка программы временно помогает, но через некоторое время ошибка возвращается снова.
В этой статье мы подробно разберем причины возникновения этой ошибки, проанализируем техническую сторону вопроса и рассмотрим пошаговый алгоритм решения, который поможет стабилизировать работу системы маркировки «Честный Знак».
Давайте проанализируем ситуацию с точки зрения внутреннего кода конфигурации. Ошибка возникает в общем модуле РазборКодаМаркировкиИССлужебныйКлиентСервер. Исходя из текста ошибки, система пытается обратиться к функции ЭтоНеФормализованныйКодМаркировки, используя объект, который на момент вызова не инициализирован (имеет значение Неопределено).
Рассмотрим фрагмент кода, где происходит сбой:
Если ОбщийМодуль.ЭтоНеФормализованныйКодМаркировки(ПараметрыРазбораКодаМаркировки, Настройки, ДанныеРезультата, РезультатБезФильтра) Тогда
// Логика обработки неформализованного кода
КонецЕсли;
Проблема кроется в механизме «ленивой инициализации» параметров в подсистеме интеграции с ИС МП. Когда программа простаивает, кэш данных или контекст формы может быть частично сброшен. При поступлении внешнего события от сканера штрихкода через COM-порт, система пытается быстро восстановить процесс разбора, но переменная ПараметрыРазбораКодаМаркировки.МодульКонтекста оказывается пустой. Это программная недоработка конкретных релизов, где не предусмотрена проверка на существование объекта перед вызовом метода.
Также важно отметить взаимосвязь с ФФД 1.2. Если кассовое оборудование при простое теряет связь с сервером проверки кодов (ОИС М), драйвер может вернуть пустой или некорректный ответ, который некорректно обрабатывается библиотекой подключаемого оборудования (БПО), вызывая цепочку исключений.
Первым делом нам необходимо установить официальные исправления (патчи), выпущенные компанией 1С для устранения ошибок в модулях интеграции. Проанализировав опыт решения подобных проблем, мы выделили список критически важных патчей для УНФ 3.0:
Для установки патчей выполним следующие действия:
Часто проблема усугубляется использованием устаревших версий драйверов сканера, которые некорректно передают данные в управляемые формы после «пробуждения» устройства. Рассмотрим процесс обновления драйвера:
Выясним, какая версия компоненты используется сейчас. В настройках подключаемого оборудования для сканера штрихкода рекомендуется использовать драйвер «1С:Сканеры штрихкода (Native Api)». Для стабильной работы версии УНФ 3.0 требуется версия драйвера не ниже 10.6.2.1 (с поддержкой требований версии 4.3).
Чтобы обновить компоненту:
Поскольку сканеры подключены через COM-порт (или эмуляцию USB-COM), операционная система Windows может отключать питание порта в целях экономии энергии после периода простоя. Это приводит к тому, что первый пакет данных от сканера приходит «битым» или с задержкой, что и провоцирует ошибку в 1С.
Проделаем следующие шаги в ОС:
В самой 1С в настройках сканера также увеличим параметр Таймаут до 500-1000 мс, чтобы система успевала обработать событие от оборудования.
Если после установки патчей ошибка меняется на текст «Настройки адреса сервера не заданы», это означает проблему взаимодействия кассы с сервером «Честного Знака». При ФФД 1.2 касса сама проверяет код перед продажей.
Посмотрим на настройки ККТ:
Если вышеуказанные меры не помогли немедленно, а торговля не может ждать, можно временно отключить обязательную проверку кодов средствами ККТ в настройках РМК. Это исключит лишнее звено в цепочке вызовов ЭтоНеФормализованныйКодМаркировки.
Важно: Это допустимо только в том случае, если ваша товарная группа и учетная политика позволяют проводить проверку кода постфактум через ОФД, не нарушая требования законодательства.
Для этого в 1С перейдем в Настройки РМК — Продажи и найдем опции управления проверкой маркировки. Отключение локальной проверки снизит нагрузку на модуль разбора при первом сканировании.
Подводя итог, можно сказать, что данная проблема является комплексной. Совместное применение патчей EF_00_00728808, обновление драйвера до 10.6.2.1 и настройка электропитания COM-портов в 99% случаев полностью устраняют ошибку в 1С:УНФ 3.0.