При переходе на новые версии платформы 1С:Предприятие (начиная с 8.3.11 и выше, включая 8.3.13, 8.3.15 и далее) многие разработчики сталкиваются с неприятной ситуацией. В списках документов или справочников, где настроено ограничение доступа на уровне записей (RLS), вместо привычного текстового представления объекта пользователь видит надпись <Объект не найден>. При этом сама запись в базе данных существует, и право на чтение ссылки у пользователя формально есть. Разберем подробно, почему так происходит и как вернуть корректное отображение данных.
Для начала проанализируем, как система работала раньше. В старых релизах платформы (например, в ветке 8.3.10) механизм RLS работал более «либерально». Если разработчик настраивал ограничение, при котором поле Ссылка было доступно (Истина), а Прочие поля были скрыты (Ложь), платформа все равно позволяла пользователю видеть текстовое представление объекта. Это происходило потому, что получение представления (наименования справочника или номера с датой у документа) считалось системной операцией, не требующей явного доступа к реквизитам, из которых это представление строится.
Однако, начиная с версии 8.3.11, политика безопасности 1С:Предприятие была существенно пересмотрена. Теперь представление объекта считается частью его данных. Если администратор или разработчик закрывает доступ к полям «Наименование» или «Номер», то автоматический показ этих данных в виде ссылки рассматривается системой как потенциальная утечка информации. В результате, если у пользователя нет прав на поля, формирующие представление, платформа возвращает заглушку <Объект не найден>, даже если само поле Ссылка разрешено для чтения.
Рассмотрим подробнее, какие именно поля влияют на формирование представления для разных типов объектов метаданных:
Наименование или Код. Если в настройках RLS право на «Прочие поля» установлено в значение «Ложь», то доступ к наименованию закрывается, и ссылка «ломается».Номер и Дата.ОбработкаПолученияПредставления, ситуация усложняется. В этом случае пользователю нужен доступ абсолютно ко всем полям, которые задействованы в алгоритме формирования строки представления внутри этой функции.Для того чтобы исправить отображение <Объект не найден>, нам необходимо скорректировать настройки доступа в ролях. Рассмотрим алгоритм действий:
Шаг 1: Проверка состава полей. Выясним, какие поля являются основными для представления объекта. Если это стандартный справочник, нам важны Наименование (иногда Код). Если документ — Дата и Номер.
Шаг 2: Настройка RLS для конкретных полей. Вместо того чтобы просто разрешать Ссылка = Истина и запрещать всё остальное, нам нужно явно перечислить разрешенные поля. Посмотрим на пример настройки ограничения:
// Вместо одной строки с ограничением на чтение:
// Прочие поля = Ложь
// Ссылка = Истина
// Мы должны использовать уточнение по полям представления:
// Поля: Ссылка, Наименование
// Условие: ГДЕ Истина (или ваше условие фильтрации)
Шаг 3: Обеспечение доступа к полям «Номер» и «Дата». Для документов крайне важно убедиться, что реквизиты Дата и Номер не попали под действие ограничения «Прочие поля = Ложь». В современных конфигурациях рекомендуется создавать отдельную группу прав в RLS, которая разрешает доступ к идентификационным полям (Ссылка, Номер, Дата, Наименование) без каких-либо условий, а основные данные (суммы, контрагенты, составы табличных частей) ограничивать уже по бизнес-логике.
Проанализируем ситуацию с точки зрения языка запросов. В 1С существует виртуальное поле Представление. В новых версиях платформы (8.3.13 и выше) наблюдается важная особенность: даже если вы явно разрешаете поле Ссылка, это не дает автоматического разрешения на работу с виртуальным полем Представление в запросах динамических списков, если основные поля объекта закрыты RLS.
При выполнении запроса платформа оптимизирует его для SQL. Если прав на поля наименования нет, платформа просто не включает их в SELECT или JOIN. В итоге динамический список получает пустые значения там, где должна быть строка представления. Это приводит не только к визуальной ошибке <Объект не найден>, но и к невозможности поиска или сортировки по этой колонке.
Иногда проблема возникает внезапно после обновления версии платформы или конфигурации. Разберем, почему это случается. При конвертации базы данных на новую версию платформы механизмы проверки безопасности могут ужесточаться. Если ранее роль была настроена «на грани» дозволенного, новая платформа может начать блокировать доступ, который раньше считался допустимым. Регулярное техническое обслуживание и архивирование перед такими изменениями выполняет программа для автоматического обновления и тестирования нескольких баз 1С в тихом режиме.
Важный нюанс для администраторов: Проверьте, не изменился ли состав профилей доступа. Если пользователь входит в профиль, где часть прав ограничена по полям, приоритет может отдаться наиболее строгому ограничению. Убедитесь, что у пользователя установлены галки на чтение базовых реквизитов, необходимых для идентификации объекта.
Подведем итоги нашего анализа. Для того чтобы в интерфейсе 1С на платформе 8.3.13 и выше вместо <Объект не найден> отображалась корректная ссылка, необходимо соблюдать следующие правила:
ОбработкаПолученияПредставления, предоставьте права на все реквизиты, участвующие в формировании строки в этой процедуре.Прочие поля = Ложь без явного перечисления полей-идентификаторов в разрешенном списке.Следуя этим правилам, мы обеспечим стабильную работу интерфейса и корректное отображение данных для пользователей, работающих под ограниченными правами доступа.