Почему в журнале регистрации появляются ошибки при обновлении ролей со знаком '?' и как их исправить?

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

В конфигурациях 1С (например, 1С:Управление торговлей 11), использующих подсистемы Библиотеки Стандартных Подсистем (БСП), в журнале регистрации могут регулярно возникать пачки сообщений с ошибками обновления ролей. При этом в названии роли фигурирует символ вопросительного знака, например: ? ЧтениеКорректировокРеализаций.

Рассмотрим подробно причины возникновения этой проблемы и разберем по шагам действенные способы её устранения.

Причины возникновения ошибки в журнале регистрации

Проанализируем механику работы подсистемы «Управление доступом» БСП:

  1. Периодический перерасчет прав: Каждый час регламентное или фоновое задание сверяет состав групп доступа и профили пользователей. При обнаружении некорректных ролей система генерирует записи об ошибках для каждого пользователя.
  2. Использование префикса «?»: Символ ? автоматически добавляется подсистемой БСП в тех случаях, когда внутри элемента справочника ПрофилиГруппДоступа осталась ссылка на роль, которой физически больше нет в конфигурации с таким идентификатором (она была переименована, удалена или пересоздана заново).
  3. Неэффективность стандартного обновления: Запуск 1С с параметром ключа /C ЗапуститьОбновлениеИнформационнойБазы выполняет глобальные обработчики обновления, но не очищает устаревшие текстовые строки ролей внутри уже созданных пользователями профилей групп доступа.

Способ 1. Исправление профилей групп доступа в режиме «1С:Предприятие»

Разберем самый простой и быстрый способ решения проблемы без написания специализированного кода:

  1. Перейдем в раздел администрирования и откроем справочник ПрофилиГруппДоступа (или Профили групп доступа).
  2. Найдем профиль, указанный в тексте ошибки (в примере — «Кассир»).
  3. Откроем элемент справочника и проанализируем табличную часть со списком ролей.
  4. Найдем роли, перед наименованием которых стоит знак ?. Это означает, что система не может найти соответствие роли в метаданных.
  5. Снимем флажки с этих некорректных ролей и сохраним изменения.
  6. Если данная роль должна присутствовать в профиле, найдем её актуальную версию в этом же списке и отметьте её заново.

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

Если визуально в профиле ролей с ошибками не видно или изменение флажков не дает результата, требуется принудительно обновить служебные данные БСП. Выполним вызов методов подсистемы с помощью внешней обработки или консоли кода:


// Обновляем данные в справочнике идентификаторов объектов метаданных
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника();

// Выполняем полное заполнение состава групп доступа
УправлениеДоступом.ЗаполнитьСоставГруппДоступа();

Метод ОбновитьДанныеСправочника() сопоставит физические роли из дерева метаданных конфигуратора с записями в справочнике ИдентификаторыОбъектовМетаданных, а метод ЗаполнитьСоставГруппДоступа() актуализирует права пользователей.

Способ 3. Диагностика через глобальный поиск и отладку

Выясним причину возникновения ошибки в конфигураторе, если стандартные методы не помогают:

  1. Выполним глобальный поиск в конфигурации по строке Управление доступом.Роль не найдена в метаданных.
  2. Установим точку останова в найденной процедуре модуля подсистемы управления доступом.
  3. Запустим сеанс «1С:Предприятие» и проанализируем в отладчике, из какого именно элемента справочника считывается некорректное имя роли.
  4. Проверим имя роли в дереве метаданных на наличие невидимых спецсимволов или пробелов, которые могли попасть в название при копировании.

Способ 4. Пересоздание поврежденного профиля

В случаях, когда профиль групп доступа поврежден и содержит множественные битые ссылки:

  1. Вменно исключим данный профиль из всех активных групп доступа и снимите его с пользователей.
  2. Создадим новый профиль групп доступа с аналогичным набором актуальных ролей.
  3. Укажем новый профиль в нужных группах доступа и удалим старый проблемный элемент.
← На главную