После обновления популярных конфигураций 1С, таких как ERP Управление предприятием 2.5.17, Комплексная автоматизация 2.5.17 или Управление торговлей 11.5.17, многие пользователи и разработчики столкнулись с неприятной ошибкой при попытке открыть форму проверки и подбора маркируемой продукции. Система выдает критическое оповещение: Поле объекта не обнаружено (ДатаВводаВОборот). Давайте разберем природу этого сбоя и найдем эффективные способы его устранения.
Проанализируем ситуацию: ошибка проявляется в механизмах интеграции с информационной системой маркировки (ИС МП, «Честный Знак»). В последних релизах фирма «1С» существенно переработала логику работы с кодами маркировки, в частности, для товарных групп, где требуется контроль даты ввода в оборот (например, молочная продукция или упакованная вода).
Суть проблемы заключается в том, что при открытии ранее созданных документов (Реализация товаров и услуг, Приобретение товаров и услуг и др.) форма проверки пытается прочитать структуру данных, сохраненную в кэше или переданную из модуля менеджера. В этой структуре (часто это ДеревоЗначений или Соответствие) отсутствует ключ ДатаВводаВОборот, так как документ был создан или начал обрабатываться до того, как это поле стало обязательным в коде. Прямое обращение через точку к несуществующему полю и вызывает аварийное завершение работы формы.
Рассмотрим важный технический нюанс: стандартная остановка по ошибке в конфигураторе часто не срабатывает. Это происходит потому, что формирование дерева маркированной продукции нередко выполняется в фоновых заданиях на стороне сервера. Чтобы локализовать ошибку, выполним следующие шаги:
Обычно отладчик останавливается в модуле менеджера обработки ПроверкаИПодборПродукцииИСМП. Именно здесь сосредоточена логика формирования структуры данных для фронтенда формы.
Фирма «1С» оперативно выпустила исправление для этой ошибки. Если ваша система подключена к интернет-поддержке, это самый быстрый и безопасный путь. Проанализируем порядок действий:
Если вы не можете ждать официального обновления или патч по каким-то причинам не подходит, разберем программный метод решения. Нам потребуется внести изменения в модуль менеджера обработки ПроверкаИПодборПродукцииИСМП. Основная задача — обеспечить наличие поля ДатаВводаВОборот в структуре, даже если оно пустое.
Посмотрим на пример реализации в функции ДеревоМаркированнойПродукции. Нам нужно найти место, где инициализируется строка дерева или структура данных, и добавить безопасную инициализацию:
// В месте формирования структуры данных для строки дерева
НоваяСтрока = СтруктураДанных.Добавить();
// ... заполнение других полей ...
НоваяСтрока.ДатаВводаВОборот = '00010101'; // Инициализируем пустой датой
Также рекомендуется заменить прямое обращение к свойству на безопасное чтение. Вместо конструкции Значение = Данные.ДатаВводаВОборот; используем метод Свойство():
ДатаВвода = '00010101';
Если Данные.Свойство("ДатаВводаВОборот", ДатаВвода) Тогда
// Поле найдено, используем полученное значение
Иначе
// Поле отсутствует в структуре, используем дефолтное значение
КонецЕсли;
Такой подход гарантирует, что даже при работе со старыми документами система не «упадет» с ошибкой отсутствия поля.
Если у вас нет доступа к конфигуратору (например, работа в 1С:Фреш) и патч еще не применен администраторами сервиса, попробуем решить проблему административными методами:
Реализация товаров и услуг путем копирования или заново. Часто при создании «с нуля» кэш формы очищается, и структура данных формируется корректно в соответствии с новым кодом.Мы проанализировали критическую ошибку ДатаВводаВОборот, которая стала следствием рассинхронизации данных старых документов и обновленного программного кода ИС МП. Наилучшим решением является установка патча EF_00_00723052. Если же вы разработчик, обязательно используйте безопасные методы обращения к свойствам структур (Свойство()) и не забывайте включать отладку фоновых заданий для поиска подобных проблем в серверных модулях.