Почему не видно справочник, созданный в расширении, и как настроить к нему доступ?

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

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

Проблема видимости в режиме «Все функции»

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

  1. Право «Просмотр». Часто разработчики ограничиваются правом Чтение. Однако для отображения в списках интерфейса и дереве «Все функции» (Функции для технического специалиста) объекту метаданных в соответствующей роли должно быть назначено право Просмотр. Без него объект существует, к нему можно обратиться программно, но визуально он скрыт.
  2. Безопасный режим. Проанализируем настройки самого расширения в конфигураторе. Если в свойствах расширения установлен флаг Безопасный режим, платформа накладывает жесткие ограничения. В некоторых случаях это блокирует отображение новых метаданных. Попробуем снять этот флаг и флаг Защита от опасных действий для тестирования.
  3. Подсистемы. Если мы хотим видеть справочник не только в тех-режиме, но и в обычном интерфейсе, необходимо создать подсистему в расширении (или заимствовать существующую) и включить в нее наш справочник.

Особенности работы с ролями в расширениях

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

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


Пользователь = ПользователиИнформационнойБазы.ТекущийПользователь();
НоваяРоль = Метаданные.Роли.Найти("ИмяВашейРолиИзРасширения");

Если Не Пользователь.Роли.Содержит(НоваяРоль) Тогда
    Пользователь.Роли.Добавить(НоваяРоль);
    Пользователь.Записать();
    Сообщить("Роль успешно добавлена. Пожалуйста, перезапустите сеанс.");
КонецЕсли;

Важно помнить: изменения в составе ролей ПользователяИнформационнойБазы вступают в силу только после перезапуска программы. Если вы используете современную платформу (начиная с 8.3.15.1779 и выше), роли расширений должны корректно подтягиваться в стандартные профили групп доступа БСП.

Взаимодействие с Библиотекой стандартных подсистем (БСП)

Если ваша конфигурация построена на БСП (как большинство современных решений: ERP, УТ 11, БП 3.0), то простого добавления объекта и роли в расширение недостаточно. Система использует справочник Идентификаторы объектов метаданных для управления правами. Если БСП «не знает» о вашем новом справочнике из расширения, она не позволит назначить на него права через интерфейс «Группы доступа».

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

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

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

Режим совместимости и наследование прав

Проанализируем еще один критический момент — режим совместимости. Если режим совместимости расширения установлен ниже, чем 8.3.11, создание новых объектов, имеющих собственные таблицы в СУБД (справочники, документы), будет невозможно или ограничено. Рекомендуется всегда устанавливать режим совместимости расширения равным режиму совместимости основной конфигурации.

Наследование прав администратора: Важно понимать, что типовая роль ПолныеПрава из основной конфигурации ничего не знает о вашем новом объекте. Чтобы администратор увидел справочник, вам нужно выполнить одно из двух действий:

  1. Создать свою роль в расширении (например, Администратор_Расширение) и дать в ней полные права на новый справочник, после чего назначить эту роль администратору.
  2. Заимствовать роль ПолныеПрава в расширение и в самом расширении проставить галочки прав на ваш справочник.

Итоги и рекомендации

Подводя итог, если вы столкнулись с «невидимостью» справочника, пройдите по следующему чек-листу:

Рассмотренные методы позволяют решить большинство проблем с видимостью и доступом к данным в расширениях 1С, обеспечивая стабильную работу ваших доработок.

← На главную