При обновлении конфигурации 1С:Предприятие 8.3 пользователи нередко сталкиваются с ситуацией, когда после загрузки нового файла конфигурации (.cf) или применения обновлений через поддержку, система отказывается выполнять финальную часть — обновление информационной базы. Вместо привычного индикатора прогресса на экране появляется критическая ошибка: «Поле объекта не обнаружено (АвторизованныйПользователь)». Рассмотрим подробно, почему возникает эта проблема и как её решить за несколько шагов.
Для начала проанализируем ситуацию. Данная ошибка чаще всего связана с работой Библиотеки стандартных подсистем (БСП). В современных конфигурациях (таких как БП 3.0, ЗУП 3.1, УТ 11) механизмы обновления прописаны в общих модулях, которые вызываются при старте системы.
Суть проблемы заключается в контексте выполнения кода. В 1С существует два основных типа клиентских приложений для управляемого интерфейса: Тонкий клиент и Толстый клиент (управляемое приложение).
Проанализируем механизм: при запуске в режиме «Автоматически», платформа часто выбирает Тонкий клиент. В этом режиме многие параметры сеанса (например, ПараметрыСеанса.ТекущийПользователь) или специализированные свойства программных объектов БСП, к которым относится АвторизованныйПользователь, могут быть еще не инициализированы или попросту недоступны на том этапе, когда система пытается инициировать процедуру ОбновлениеИнформационнойБазы.ВыполнитьОбновление().
Разберем, почему это происходит именно «вдруг»:
Как показывает практика, это самый быстрый и эффективный способ обойти проблему. Поскольку обновление информационной базы — это административная процедура, требующая монопольного доступа и полных прав, Толстый клиент подходит для этого лучше всего, так как он обладает полным набором инструментов для работы с объектами базы данных.
Разберем по шагам, как изменить настройки запуска:
После этих действий система запустит процесс обновления в контексте Толстого клиента, где все параметры сеанса и объекты метаданных будут доступны в полном объеме, и ошибка АвторизованныйПользователь исчезнет.
Если смена клиента не помогла или вы хотите разобраться, почему ошибка возникла именно сейчас, следует исключить фактор «мусорных» данных в кэше. Посмотрим на алгоритм очистки:
Способ А: Удаление и добавление базы в список. Это самый простой метод. Просто удалите базу из списка (запомнив путь к ней) и добавьте её заново. При этом создастся новый идентификатор базы в локальной файловой системе, и старый кэш перестанет влиять на работу.
Способ Б: Ручная очистка. Перейдите в папки:
%AppData%\1C\1Cv8\ и %LocalAppData%\1C\1Cv8\
Там вы увидите папки с именами-идентификаторами (например, 5b7a1d...). Проанализируем их содержимое: это и есть кэш. Удаление этих папок (при закрытой 1С) часто решает проблемы с «необнаруженными полями объектов».
Если вы разрабатываете собственную конфигурацию или вносите изменения в типовую, давайте проанализируем, где именно может скрываться ошибка в коде. Скорее всего, обращение к пользователю происходит в одном из обработчиков обновления.
Посмотрим на пример кода, который может вызывать ошибку в Тонком клиенте:
// Ошибочный код в модуле обновления
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
// Если это Тонкий клиент, свойство может быть недоступно
ТекПользователь = ПараметрыСеанса.ТекущийПользователь.АвторизованныйПользователь;
// ... логика обновления
КонецПроцедуры
Для исправления ситуации мы должны использовать проверку контекста или безопасные методы получения данных. Рассмотрим более надежный вариант реализации:
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ТолстыйКлиентУправляемоеПриложение Тогда
// На стороне сервера или в толстом клиенте параметры сеанса доступны
ТекПользователь = ОбщегоНазначения.ИдентификаторПользователяСеанса();
#КонецЕсли
КонецПроцедуры
В типовых конфигурациях на базе БСП рекомендуется использовать метод Пользователи.АвторизованныйПользователь() вместо прямого обращения к параметрам сеанса. Это позволяет избежать ошибок инициализации.
Многих пользователей беспокоит вопрос: почему раньше режим «Автоматически» запускал обновление без проблем, а теперь — нет?
Проанализируем ситуацию: платформа 1С:Предприятие хранит настройки в файле ibases.v8i. Иногда после аварийного завершения или некорректного обновления платформы, параметр Connect или ClientMode может принудительно переключиться. Также, если база серверная, версия сервера 1С может диктовать клиенту преимущественный режим работы. Если сервер «считает», что для данной версии платформы Тонкий клиент является приоритетным, он будет навязывать его при каждом запуске.
Мы выяснили, что ошибка «Поле объекта не обнаружено (АвторизованныйПользователь)» — это следствие несовместимости контекста Тонкого клиента с требованиями процедур обновления БСП.
Подведем итог:
#Если Сервер) для кода, который обращается к параметрам сеанса в момент старта системы.Используя эти инструкции, вы сможете быстро вернуть систему в рабочее состояние и успешно завершить обновление информационной базы.