Как исправить ошибку «Объект не найден» при настройке прав в расширении 1С?

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

При активной разработке в расширениях «1С:Предприятие 8» программисты часто сталкиваются с ситуацией, когда после добавления новых объектов и создания сопутствующих ролей пользователи начинают видеть малоприятную надпись «<Объект не найден...>» вместо наименований элементов. Ситуация становится еще более запутанной, когда права, казалось бы, настроены корректно: на чтение и просмотр справочника в расширении установлены все необходимые галочки, но платформа упорно отказывается выводить представление объекта на формах других документов или справочников.

В этой статье мы подробно разберем, почему возникает эта проблема, как на нее влияют механизмы ограничения доступа на уровне записей (RLS), почему попытки программного обхода этой ошибки ведут к конфликтам с Библиотекой стандартных подсистем (БСП), и как решить проблему правильно и красиво в соответствии со стандартами разработки фирмы «1С».

Выясняем причины: почему платформа пишет «Объект не найден»?

Для начала проанализируем ситуацию изнутри платформы. Наличие строки «<Объект не найден (УИД_объекта)>» в интерфейсе означает, что ссылка на элемент существует в базе данных (база хранит его уникальный идентификатор), однако текущий сеанс пользователя по какой-то причине не может получить данные этого объекта для отображения. В контексте работы с расширениями и правами доступа здесь кроются две основные причины.

  1. Отсутствие прав на реквизиты представления. Мало просто дать права на чтение самого справочника. Чтобы платформа могла построить текстовое представление ссылки на форме (например, вывести наименование элемента в поле ввода), у роли пользователя должны быть права на чтение ключевых полей, которые участвуют в формировании этого представления. Обычно это стандартные реквизиты Код и Наименование. Если у роли в расширении нет галочек «Чтение» и «Просмотр» на эти конкретные реквизиты, система выдаст ошибку «Объект не найден», защищая конфиденциальные данные поля.
  2. Ограничение доступа на уровне записей (RLS). В системе «1С» права доступа суммируются по принципу логического «ИЛИ». Если у пользователя есть несколько ролей, и хотя бы одна из них разрешает чтение объекта без ограничений, то ограничения RLS из других ролей перестают действовать. И наоборот: если у пользователя настроена роль с жестким RLS (например, видеть только документы своей организации), а новая роль из расширения не дает прав на этот объект вообще, или настроена некорректно, то СУБД вернет пустой результат при попытке прочитать связанные данные, что приведет к отображению «Объект не найден».

Опасные «костыли»: почему нельзя назначать роли кодом при старте системы

Иногда разработчики, устав бороться с «глюками» ролей в конфигураторе, выбирают обходной путь — программное добавление ролей пользователю при начале работы системы. Рассмотрим пример такого подхода:


Процедура ПриНачалеРаботыСистемы()
    // Проверяем наличие определенной роли у пользователя
    Если РольДоступна("ОсновнаяРольПользователя") Тогда
        // Программно подключаем роль из расширения
        // (Требует привилегированного режима или прав администратора)
        УстановитьПривилегированныйРежим(Истина);
        // Код принудительного добавления роли в сеанс...
    КонецЕсли;
КонецПроцедуры

Рассмотрим подробнее, почему этот способ крайне не рекомендуется использовать в современных конфигурациях, работающих на базе БСП (Библиотека стандартных подсистем):

Разберем по шагам правильные решения проблемы

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

Решение 1. Правильное расширение роли для администраторов (Полные Права)

Если проблема «Объект не найден» возникает у пользователей с административными правами, не нужно создавать для них отдельные роли в расширении и пытаться их назначать. Правильный путь — заимствовать типовую роль в расширение.

Выполним следующие шаги:

  1. Откройте конфигуратор и найдите основную роль вашей конфигурации, отвечающую за полные права (обычно она называется ПолныеПрава).
  2. Нажмите по ней правой кнопкой мыши и выберите пункт «Добавить в расширение».
  3. В окне расширения перейдите к заимствованной роли ПолныеПрава.
  4. Найдите ваш новый справочник (или другой объект), добавленный в расширение.
  5. Установите для роли ПолныеПрава в расширении полные права на этот объект (Чтение, Просмотр, Изменение, Интерактивное добавление и т.д.). Также не забудьте отметить аналогичные права на все реквизиты этого объекта.

Поскольку роль ПолныеПрава является базовой и системной, БСП никогда не сбросит ее настройки, и у всех администраторов доступ к новому объекту заработает автоматически и без ошибок.

Решение 2. Назначение ролей обычным пользователям через Профили групп доступа

Для обычных (неполноправных) пользователей назначение новых ролей из расширения должно происходить исключительно штатными средствами БСП в режиме «1С:Предприятие». Проанализируем этот процесс:

  1. Убедитесь, что в вашем расширении создана роль (например, ДобавленныеОбъектыЧтение), в которой настроены права на чтение и просмотр как самого справочника, так и его реквизитов (Код, Наименование).
  2. Запустите информационную базу в режиме «1С:Предприятие» под учетной записью администратора.
  3. Перейдите в раздел Администрирование — Настройки пользователей и прав — Профили групп доступа.
  4. Создайте новый профиль (или откройте существующий профиль ваших пользователей для редактирования).
  5. В списке доступных ролей найдите роль из вашего расширения. БСП автоматически сканирует активные расширения и выводит их роли в общий список (они будут помечены именем вашего расширения в скобках). Установите флаг напротив этой роли.
  6. Сохраните профиль. Если пользователи уже включены в группу доступа с этим профилем, их права обновятся автоматически при следующем входе в систему.

Этот метод гарантирует, что при любых обновлениях конфигурации или реструктуризации базы данных права пользователей останутся на месте и не будут перезаписаны механизмами очистки БСП.

Решение 3. Проверка настройки реквизитов и режима совместимости

Если права назначены верно, но ошибка сохраняется, проанализируем настройки свойств самого расширения. Обратите внимание на следующие параметры в свойствах расширения в конфигураторе:

Применяя данные подходы, вы навсегда избавитесь от ошибок «Объект не найден» при внедрении новых объектов через механизм расширений и обеспечите стабильную и безопасную работу вашей информационной системы.

← На главную