Как исправить ошибку «Поле объекта не обнаружено (ПрослеживаемыеТовары)» в 1С:УПП 1.3 после обновления?

Программист 1С v8.3 (Обычные формы) Управленческий учет Промышленность, строительство и АПК
← На главную

В июне 2021 года пользователи 1С:УПП 1.3 столкнулись с необходимостью перехода на новые требования законодательства, касающиеся системы прослеживаемости товаров. Обновление до релиза 1.3.162.1 вызвало критическую ошибку при проведении документов у тех компаний, где учет прослеживаемости фактически не ведется. Давайте разберем, почему это происходит и как устранить данную проблему.

Выявление причины ошибки

При анализе ошибки в модуле объекта документа (например, СписаниеТоваров) выяснилось, что при выполнении процедуры ДвиженияПоРегистрамПрослеживаемыхТоваров происходит обращение к полю ПрослеживаемыеТовары структуры ПараметрыПроведения. Ошибка возникает из-за того, что если функциональная опция ВестиУчетПрослеживаемыхТоваров отключена, структура ПараметрыПроведения остается пустой, а код пытается обратиться к несуществующему ключу.

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


// Фрагмент кода с ошибкой
ПрослеживаемостьБП.СформироватьДвиженияРеализацияТоваров(
    ПараметрыПроведения.ПрослеживаемыеТовары,
    ПараметрыПроведения.ПрослеживаемыеОперации,
    ТаблицаРеквизиты,
    Движения);

Способы решения проблемы

Существует несколько подходов к исправлению ситуации. Рассмотрим их по порядку, учитывая ограничения конфигурации 1С:УПП 1.3 (режим совместимости 8.2.13).

Вариант 1: Исправление логики вызова в модуле объекта

Самый надежный способ — это обернуть вызов процедуры формирования движений в условие, проверяющее заполненность структуры данных или наличие текста запроса. Необходимо убедиться, что обращение к полям ПараметрыПроведения происходит только тогда, когда данные были успешно получены.

Разберем доработанный код:


Если НЕ ПустаяСтрока(Запрос.Текст) Тогда
    Результат = Запрос.ВыполнитьПакет();
    Для Каждого НомерТаблицы Из НомераТаблиц Цикл
        ПараметрыПроведения.Вставить(НомерТаблицы.Ключ, Результат[НомерТаблицы.Значение].Выгрузить());
    КонецЦикла;

    ТаблицаРеквизиты = ПрослеживаемостьБП.СтруктуруВТаблицуЗначений(СтруктураШапкиДокумента);

    ПрослеживаемостьБП.СформироватьДвиженияРеализацияТоваров(
        ПараметрыПроведения.ПрослеживаемыеТовары,
        ПараметрыПроведения.ПрослеживаемыеОперации,
        ТаблицаРеквизиты,
        Движения);
КонецЕсли;

Такой подход исключает попытку обращения к пустым полям структуры, если функционал прослеживаемости не задействован в конкретной транзакции.

Вариант 2: Отключение функциональной опции

Если в вашей организации учет прослеживаемых товаров не ведется, убедитесь, что соответствующие константы установлены верно. Выяснить текущее состояние можно через проверку функциональной опции ВестиУчетПрослеживаемыхТоваров.

  1. Проверьте значение константы Константы.ВестиУчетПрослеживаемыхТоваров.
  2. Если она установлена в Истина, а вы не ведете учет, можно попробовать установить её в Ложь с помощью внешней обработки.
  3. В процедуре ДвиженияПоРегистрам документа вы можете временно закомментировать вызов ДвиженияПоРегистрамПрослеживаемыхТоваров, если планируете обновление конфигурации на более стабильные релизы в ближайшее время.

Важные рекомендации при обновлении

Поскольку конфигурация 1С:УПП находится на этапе ограниченной поддержки, при внесении правок в типовой код следуйте этим правилам:

Надеемся, эти рекомендации помогут вам стабилизировать работу системы после обновления. Работа с кодом УПП требует внимательности, но при системном подходе все технические ошибки успешно решаются.

← На главную