Как правильно создать пользователя в РИБ и исправить ошибку отсутствия предопределенного элемента

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При развертывании распределенной информационной базы (РИБ) и попытке завести нового пользователя в подчиненном (периферийном) узле часто возникает системная ошибка: «Справочники.НаборыДополнительныхРеквизитовиСведений.Справочник_Пользователи. Предопределенный элемент отсутствует в данных». Разберем архитектурные особенности работы с пользователями в распределенных базах, выясним причину сбоя и рассмотрим пошаговые варианты решения проблемы.

Архитектура работы с пользователями в распределенной базе

Для понимания логики работы необходимо разделять две сущности в платформе 1С:

  1. Пользователи информационной базы: системный список учетных записей платформы, используемый для авторизации, назначения прав и ролей. Данный список платформенно не переносится через стандартные каналы миграции РИБ.
  2. Справочник «Пользователи»: прикладной объект метаданных конфигурации, хранящий персональные данные, настройки и реквизиты. Элементы этого справочника штатно мигрируют между центральным и подчиненными узлами через обмен данными.

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

Штатный порядок создания пользователя для подчиненного узла

Разберем стандартный регламент добавления новой учетной записи для работы в филиале:

  1. В центральном узле информационной базы создаем нового пользователя в справочнике Пользователи и настраиваем для него профили групп доступа.
  2. Выполняем сеанс обмена данными с центральной стороны для выгрузки изменений.
  3. В периферийной базе выполняем прием сообщения обмена. В результате в подчиненный узел загружается элемент справочника Пользователи.
  4. Входим в периферийную базу под учетной записью с полными административными правами, открываем загруженную карточку пользователя и создаем связанного локального пользователя информационной базы (задаем пароль, способ аутентификации и сопоставление).

Устранение ошибки «Предопределенный элемент отсутствует в данных»

Если при открытии или записи справочника возникает ошибка обращения к Справочники.НаборыДополнительныхРеквизитовиСведений.Справочник_Пользователи, это означает, что в подчиненном узле элемент не связался с системным реквизитом ИмяПредопределенныхДанных либо служебные обработчики обновления БСП не завершили работу. Рассмотрим методы исправления ситуации.

Способ 1. Принудительное обновление предопределенных данных

Проанализируем ситуацию: в платформе 1С:Предприятие 8.3 автоматическое создание предопределенных элементов в подчиненных узлах может быть отключено. Включим его принудительно через внешнюю обработку или консоль кода:


УстановитьОбновлениеПредопределенныхДанныхИнформационнойБазы(ОбновлениеПредопределенныхДанных.Авто);
Справочники.НаборыДополнительныхРеквизитовИСведений.УстановитьОбновлениеПредопределенныхДанных(ОбновлениеПредопределенныхДанных.Авто);

После выполнения данного кода необходимо перезапустить сеанс «1С:Предприятие».

Способ 2. Программная привязка предопределенного имени

Если элемент справочника физически присутствует в таблице, но потерял связь с метаданными, восстановим значение системного реквизита ИмяПредопределенныхДанных:


ЭлементОбъект = Справочники.НаборыДополнительныхРеквизитовИСведений.НайтиПоНаименованию("Пользователи").ПолучитьОбъект();

Если ЭлементОбъект = Неопределено Тогда
    ЭлементОбъект = Справочники.НаборыДополнительныхРеквизитовИСведений.СоздатьЭлемент();
    ЭлементОбъект.Наименование = "Пользователи";
КонецЕсли;

ЭлементОбъект.ИмяПредопределенныхДанных = "Справочник_Пользователи";
ЭлементОбъект.Записать();

Способ 3. Запуск процедур обновления информационной базы

В конфигурациях на базе БСП структура служебных наборов свойств формируется регламентными процедурами. Запустим периферийную базу в режиме «1С:Предприятие» с параметром командной строки:

/C ЗапуститьОбновлениеИнформационнойБазы

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

Способ 4. Тестирование и исправление базы данных

Если ошибка сохраняется, выполним регламентное обслуживание в режиме «Конфигуратор» подчиненного узла через меню Администрирование — Тестирование и исправление со следующими обязательными опциями:

  1. Проверка логической целостности информационной базы.
  2. Реструктуризация таблиц информационной базы.
  3. При проверке ссылочной целостности (наличии ссылок на несуществующие элементы) выбрать режим «Создавать объекты».

Временное отключение главного узла для сервисных работ

Если в подчиненном узле заблокировано интерактивное изменение системных справочников, выполним временное снятие признака подчиненности узла РИБ:


// Отключение подчиненности узла
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);

После внесения необходимых корректировок и инициализации данных обязательно восстановим связь с центральным узлом:


// Восстановление привязки к главному узлу
ГлавныйУзелСсылка = ПланыОбмена.Полный.НайтиПоКоду("ЦБ"); // Укажите имя вашего плана обмена и код центрального узла
ПланыОбмена.УстановитьГлавныйУзел(ГлавныйУзелСсылка);
← На главную