Как массово добавить регистры сведений в расширение 1С и настроить права доступа

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

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

Анализ проблемы: почему ручное добавление — это путь в никуда

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

Проанализируем основные способы решения этой задачи, от стандартных инструментов до продвинутой автоматизации.

Способ 1. Использование Enterprise Development Tools (EDT)

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

  1. Импортируем проект основной конфигурации и расширения в рабочую область EDT.
  2. В панели «Навигатор» или «Дерево конфигурации» переходим к списку регистров сведений основной конфигурации.
  3. Используя клавишу Shift или Ctrl, выделяем все необходимые регистры (или сразу всю ветку РегистрыСведений).
  4. Нажимаем правую кнопку мыши и выбираем команду «Добавить в расширение».

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

Способ 2. Программное управление правами через БСП

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

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

Для добавления прав на новые объекты, которые появляются после обновлений, можно написать небольшую обработку, которая будет выполняться при обновлении информационной базы:


Процедура ДобавитьПраваНаРегистры(ИмяПрофиля)
    ПрофильОбъект = Справочники.ПрофилиГруппДоступа.НайтиПоНаименованию(ИмяПрофиля).ПолучитьОбъект();
    // Логика добавления ролей, содержащих права на чтение всех регистров
    // Например, добавление типовой роли "ЧтениеДанныхБухгалтерии"
    НоваяСтрока = ПрофильОбъект.Роли.Добавить();
    НоваяСтрока.Роль = Метаданные.Роли.ЧтениеНизкоуровневыхОбъектов;
    ПрофильОбъект.Записать();
КонецПроцедуры

Способ 3. Автоматизация через выгрузку в XML

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

  1. Выгружаем расширение в файлы через Конфигуратор (команда Конфигурация — Выгрузить конфигурацию в файлы).
  2. Пишем скрипт (на языке 1С или любом другом), который читает файлы основной конфигурации и формирует XML-описания для расширения.
  3. Добавляем записи о регистрах сведений в файл ConfigDumpInfo.xml и создаем соответствующие папки в структуре выгрузки расширения.
  4. Загружаем расширение обратно из файлов.

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

Важные нюансы работы с расширениями и ролями

Рассмотрим несколько критических моментов, которые влияют на стабильность системы:

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

Рекомендация по архитектуре решения

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

Шаг 1: Создайте в расширении роль, которая дает права только на специфические объекты, добавленные вами лично.

Шаг 2: Для доступа к типовым регистрам используйте стандартные роли основной конфигурации (например, роли группы Чтение...), объединяя их в одном Профиле групп доступа с вашей новой ролью из расширения.

Шаг 3: Если вы все же решили добавлять объекты массово — используйте EDT как наиболее быстрый и современный инструмент визуального проектирования метаданных.

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

← На главную