В июне 2021 года пользователи 1С:УПП 1.3 столкнулись с необходимостью перехода на новые требования законодательства, касающиеся системы прослеживаемости товаров. Обновление до релиза 1.3.162.1 вызвало критическую ошибку при проведении документов у тех компаний, где учет прослеживаемости фактически не ведется. Давайте разберем, почему это происходит и как устранить данную проблему.
При анализе ошибки в модуле объекта документа (например, СписаниеТоваров) выяснилось, что при выполнении процедуры ДвиженияПоРегистрамПрослеживаемыхТоваров происходит обращение к полю ПрослеживаемыеТовары структуры ПараметрыПроведения. Ошибка возникает из-за того, что если функциональная опция ВестиУчетПрослеживаемыхТоваров отключена, структура ПараметрыПроведения остается пустой, а код пытается обратиться к несуществующему ключу.
Рассмотрим проблемный фрагмент кода:
// Фрагмент кода с ошибкой
ПрослеживаемостьБП.СформироватьДвиженияРеализацияТоваров(
ПараметрыПроведения.ПрослеживаемыеТовары,
ПараметрыПроведения.ПрослеживаемыеОперации,
ТаблицаРеквизиты,
Движения);
Существует несколько подходов к исправлению ситуации. Рассмотрим их по порядку, учитывая ограничения конфигурации 1С:УПП 1.3 (режим совместимости 8.2.13).
Самый надежный способ — это обернуть вызов процедуры формирования движений в условие, проверяющее заполненность структуры данных или наличие текста запроса. Необходимо убедиться, что обращение к полям ПараметрыПроведения происходит только тогда, когда данные были успешно получены.
Разберем доработанный код:
Если НЕ ПустаяСтрока(Запрос.Текст) Тогда
Результат = Запрос.ВыполнитьПакет();
Для Каждого НомерТаблицы Из НомераТаблиц Цикл
ПараметрыПроведения.Вставить(НомерТаблицы.Ключ, Результат[НомерТаблицы.Значение].Выгрузить());
КонецЦикла;
ТаблицаРеквизиты = ПрослеживаемостьБП.СтруктуруВТаблицуЗначений(СтруктураШапкиДокумента);
ПрослеживаемостьБП.СформироватьДвиженияРеализацияТоваров(
ПараметрыПроведения.ПрослеживаемыеТовары,
ПараметрыПроведения.ПрослеживаемыеОперации,
ТаблицаРеквизиты,
Движения);
КонецЕсли;
Такой подход исключает попытку обращения к пустым полям структуры, если функционал прослеживаемости не задействован в конкретной транзакции.
Если в вашей организации учет прослеживаемых товаров не ведется, убедитесь, что соответствующие константы установлены верно. Выяснить текущее состояние можно через проверку функциональной опции ВестиУчетПрослеживаемыхТоваров.
Константы.ВестиУчетПрослеживаемыхТоваров.Истина, а вы не ведете учет, можно попробовать установить её в Ложь с помощью внешней обработки.ДвиженияПоРегистрам документа вы можете временно закомментировать вызов ДвиженияПоРегистрамПрослеживаемыхТоваров, если планируете обновление конфигурации на более стабильные релизы в ближайшее время.Поскольку конфигурация 1С:УПП находится на этапе ограниченной поддержки, при внесении правок в типовой код следуйте этим правилам:
Диадок), учитывайте, что обновления модулей интеграции должны соответствовать текущему релизу конфигурации для корректной передачи новых форматов УПД и СФ.Надеемся, эти рекомендации помогут вам стабилизировать работу системы после обновления. Работа с кодом УПП требует внимательности, но при системном подходе все технические ошибки успешно решаются.