Как исправить ошибку «Недостаточно прав для просмотра» при добавлении нового документа в расширение 1С

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

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

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

Причина 1. Особенность работы платформы 1С с ролями внутри расширений

Прежде всего, разберем важное и неочевидное правило платформы 1С:Предприятие 8.3, определяющее поведение прав доступа к объектам расширения:

  1. Если в расширении нет ни одной роли, то все новые объекты метаданных (документы, справочники, регистры), добавленные через это расширение, автоматически становятся доступными для чтения, просмотра и изменения всем пользователям информационной базы.
  2. Как только в расширении создается или заимствуется хотя бы одна роль, это автоматическое правило отключается. С этого момента платформа требует, чтобы права на все новые объекты расширения были явно прописаны в ролях этого расширения.

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

Решение проблемы:

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

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

Причина 2. Конфликт свойства «Основные роли» в расширении

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

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

Пошаговое решение по отключению основной роли:

  1. Откройте конфигуратор вашей базы данных и перейдите в окно работы с расширениями (меню Конфигурация -> Расширения конфигурации).
  2. Выделите ваше рабочее расширение и нажмите правой кнопкой мыши, выбрав пункт «Свойства».
  3. В открывшейся палитре свойств найдите строку «Основные роли».
  4. Очистите это поле полностью (оно должно остаться незаполненным).
  5. Перейдите в дерево метаданных вашего расширения, найдите автоматически созданную роль ИмяРасширения_ОсновнаяРоль и удалите её.
  6. Сохраните изменения в расширении и обновите конфигурацию базы данных.

Причина 3. Специфика интеграции с БСП (Библиотекой стандартных подсистем)

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

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

Решение по интеграции роли расширения в БСП:

Для того чтобы система зарегистрировала новые метаданные и позволила настроить права в режиме «1С:Предприятие», выполните следующие шаги:

  1. Запустите информационную базу в режиме «Предприятие» под пользователем с административными правами.
  2. Вызовите процедуру обновления идентификаторов объектов расширения. Это можно сделать программно через консоль кода или создав простейшую внешнюю обработку со следующим кодом: Справочники.ИдентификаторыОбъектовРасширений.ОбновитьДанныеСправочника(Истина); Также можно запустить базу из командной строки с параметром /С ЗапуститьОбновлениеИнформационнойБазы (обратите внимание, что символ «С» должен быть набран в латинской раскладке клавиатуры).
  3. После обновления идентификаторов перейдите в раздел Администрирование -> Настройки пользователей и прав -> Профили групп доступа.
  4. Создайте новый профиль групп доступа или откройте существующий профиль, которым пользуется ваш сотрудник.
  5. В списке разрешенных ролей найдите вашу роль, созданную в расширении, отметьте её флажком и сохраните профиль.
  6. Убедитесь, что пользователь включен в соответствующую Группу доступа, использующую данный профиль.

Причина 4. Необходимость программного назначения роли (альтернативный быстрый метод)

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

Для этого воспользуемся возможностями встроенного языка 1С. Создайте внешнюю обработку и выполните следующий код в модуле (например, по нажатию кнопки на форме):


ИмяПользователяИБ = "ИвановИИ"; // Укажите имя вашего тестируемого пользователя
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователяИБ);

Если ПользовательИБ <> Неопределено Тогда
    ИмяРолиРасширения = "ИмяВашейРолиИзРасширения"; 
    
    // Проверим, добавлена ли уже роль пользователю
    Если Не ПользовательИБ.Роли.Содержит(Метаданные.Роли[ИмяРолиРасширения]) Тогда
        ПользовательИБ.Роли.Добавить(Метаданные.Роли[ИмяРолиРасширения]);
        ПользовательИБ.Записать();
        Сообщить("Роль успешно добавлена пользователю " + ИмяПользователяИБ);
    Иначе
        Сообщить("У пользователя уже есть данная роль!");
    КонецЕсли;
КонецЕсли;

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

Резюме и чеклист для проверки

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

  1. В свойствах вашего расширения очищено поле «Основные роли».
  2. Автоматически созданная роль ИмяРасширения_ОсновнаяРоль удалена.
  3. Вы заимствовали роль ПолныеПрава (или административную роль) из основной конфигурации в расширение и проставили в ней все флажки прав на ваш новый документ.
  4. Вы обновили справочник идентификаторов метаданных расширений в режиме «1С:Предприятие» с помощью метода Справочники.ИдентификаторыОбъектовРасширений.ОбновитьДанныеСправочника(Истина).
  5. Ваша роль из расширения явно добавлена пользователю через стандартный интерфейс БСП (Профили и Группы доступа).

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

← На главную