Разработка в расширениях 1С — это мощный инструмент, однако новички и даже опытные разработчики часто сталкиваются с ситуацией, когда новый объект (например, справочник), добавленный в расширение, упорно «не желает» появляться в интерфейсе или в списке «Функции для технического специалиста». Более того, даже если объект виден, система может выдавать ошибку отсутствия прав при попытке записи. Разберем пошагово, почему это происходит и как заставить расширение работать корректно.
Прежде всего, разберем ситуацию, когда справочник создан, но его нет в списке всех функций. Рассмотрим условия, которые должны быть соблюдены одновременно, чтобы платформа «показала» объект пользователю:
Чтение. Однако для отображения в списках интерфейса и дереве «Все функции» (Функции для технического специалиста) объекту метаданных в соответствующей роли должно быть назначено право Просмотр. Без него объект существует, к нему можно обратиться программно, но визуально он скрыт.Безопасный режим, платформа накладывает жесткие ограничения. В некоторых случаях это блокирует отображение новых метаданных. Попробуем снять этот флаг и флаг Защита от опасных действий для тестирования.Одной из самых запутанных тем является назначение прав. Выясним причину, по которой обычное создание роли в расширении может не дать результата. В версиях платформы ниже 8.3.15 роли расширений имели существенные ограничения. Рассмотрим, как можно программно назначить роль пользователю, если стандартные механизмы через «Профили групп доступа» не срабатывают.
Проанализируем пример кода, который позволяет добавить роль пользователю информационной базы. Это бывает необходимо, когда роль создана внутри расширения и мы хотим убедиться, что она реально назначена:
Пользователь = ПользователиИнформационнойБазы.ТекущийПользователь();
НоваяРоль = Метаданные.Роли.Найти("ИмяВашейРолиИзРасширения");
Если Не Пользователь.Роли.Содержит(НоваяРоль) Тогда
Пользователь.Роли.Добавить(НоваяРоль);
Пользователь.Записать();
Сообщить("Роль успешно добавлена. Пожалуйста, перезапустите сеанс.");
КонецЕсли;
Важно помнить: изменения в составе ролей ПользователяИнформационнойБазы вступают в силу только после перезапуска программы. Если вы используете современную платформу (начиная с 8.3.15.1779 и выше), роли расширений должны корректно подтягиваться в стандартные профили групп доступа БСП.
Если ваша конфигурация построена на БСП (как большинство современных решений: ERP, УТ 11, БП 3.0), то простого добавления объекта и роли в расширение недостаточно. Система использует справочник Идентификаторы объектов метаданных для управления правами. Если БСП «не знает» о вашем новом справочнике из расширения, она не позволит назначить на него права через интерфейс «Группы доступа».
Выясним, как заставить систему «увидеть» обновления. Для этого необходимо обновить идентификаторы. Рассмотрим выполнение этой операции через консоль кода или внешнюю обработку:
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанные(Истина);
Этот метод принудительно сканирует конфигурацию и расширения, добавляя новые объекты в таблицу прав. После этого ваш новый справочник должен появиться в списке доступных объектов при редактировании профилей прав доступа.
Проанализируем еще один критический момент — режим совместимости. Если режим совместимости расширения установлен ниже, чем 8.3.11, создание новых объектов, имеющих собственные таблицы в СУБД (справочники, документы), будет невозможно или ограничено. Рекомендуется всегда устанавливать режим совместимости расширения равным режиму совместимости основной конфигурации.
Наследование прав администратора: Важно понимать, что типовая роль ПолныеПрава из основной конфигурации ничего не знает о вашем новом объекте. Чтобы администратор увидел справочник, вам нужно выполнить одно из двух действий:
Администратор_Расширение) и дать в ней полные права на новый справочник, после чего назначить эту роль администратору.ПолныеПрава в расширение и в самом расширении проставить галочки прав на ваш справочник.Подводя итог, если вы столкнулись с «невидимостью» справочника, пройдите по следующему чек-листу:
Просмотр в роли.Безопасный режим в настройках расширения отключен.Область действия расширения в значение Информационная база.Рассмотренные методы позволяют решить большинство проблем с видимостью и доступом к данным в расширениях 1С, обеспечивая стабильную работу ваших доработок.