При обновлении конфигурации «Управление торговлей», например, с версии 11.4.11 на 11.4.12, можно столкнуться с ошибкой, которая прерывает процесс и не позволяет завершить обновление. Система сообщает, что переменная не определена, и ссылается на объект ПрисоединенныеФайлы. Эта ситуация, как правило, не связана с ошибками в самой типовой конфигурации или пропуском промежуточных релизов. Давайте разберем, в чем кроется истинная причина и как исправить проблему.
Основная причина возникновения такой ошибки — изменение структуры типовой конфигурации разработчиками 1С. В данном конкретном случае, при переходе на релиз УТ 11.4.12, общий модуль ПрисоединенныеФайлы был переименован и реорганизован. Теперь его функциональность находится в общем модуле РаботаСФайлами.
Проблема возникает, если в вашей базе данных установлено одно или несколько расширений, которые в своем коде обращаются к старому, уже не существующему модулю ПрисоединенныеФайлы. Во время обновления система пытается инициализировать код расширения, не находит указанный модуль и аварийно прекращает работу.
Чтобы окончательно убедиться в причине, посмотрим на записи в Журнале регистрации. Ошибка будет выглядеть примерно так:
Ошибка инициализации модуля: ЗагрузкаИзВнешнихИсточников Справочник.Номенклатура.МодульМенеджера по причине:
{ЗагрузкаИзВнешнихИсточников Справочник.Номенклатура.МодульМенеджера(844,8)}: Переменная не определена (ПрисоединенныеФайлы)
>>ПрисоединенныеФайлы.ОбновитьПрисоединенныйФайл(ЭлементСправочника.ФайлКартинки,ИнформацияОФайле);
{ЗагрузкаИзВнешнихИсточников Справочник.Номенклатура.МодульМенеджера(848,29)}: Переменная не определена (ПрисоединенныеФайлы)
ПрисоединенныйФайл = >>ПрисоединенныеФайлы.ДобавитьФайл(ЭлементСправочника.Ссылка,"Изображение1",СтрЗаменить("jpg",".",""),ТекущаяДата,ТекущаяДата,АдресВременногоХранилищаФайла,,"Изображение загружено обработкой");
Из текста ошибки видно:
ОбновитьПрисоединенныйФайл и ДобавитьФайл через несуществующий объект ПрисоединенныеФайлы.Таким образом, наша задача — устранить конфликт между обновленной конфигурацией и устаревшим кодом расширения.
Самый простой и быстрый способ завершить обновление — временно деактивировать расширение, вызывающее конфликт. Это позволит типовой конфигурации обновиться без помех. После успешного обновления вы сможете заняться адаптацией расширения.
Выполним по шагам:
Важно понимать: после выполнения этих действий основная база будет обновлена, но функционал, который предоставляло расширение, будет недоступен до тех пор, пока вы его не адаптируете и не включите обратно.
После того как основная конфигурация успешно обновлена, необходимо привести код расширения в соответствие с новой структурой. Это правильный, долгосрочный подход.
Если вы разработчик расширения:
ПрисоединенныеФайлы в модулях вашего расширения.ПрисоединенныеФайлы на новый — РаботаСФайлами.РаботаСФайлами в основной конфигурации и проверьте синтаксис вызываемых методов. Например, вместо ПрисоединенныеФайлы.ДобавитьФайл(...) может использоваться похожая по смыслу, но с другим набором параметров функция из модуля РаботаСФайлами.Если вы не являетесь разработчиком расширения:
Чтобы минимизировать риски при будущих обновлениях, придерживайтесь следующих правил:
Таким образом, ошибка «Переменная не определена» — это штатная ситуация, которая сигнализирует о необходимости адаптации дополнительного функционала (расширений) к изменениям в типовой конфигурации.