Хорошим тоном при разработке является создавать на каждый объект метаданных "свою роль". Создаваемые роли однотипны. Идея автоматизировать данный процесс.
Вводные данные:
Имеется конфигурация со следующим набором метаданных
Требуется для каждого справочника в конфигурации создать Роль вида:
...Чтение...
...ДобавлениеИзменение...
за основу взять уже имеющиеся роли франчЧтениеАкции и франчДобавлениеИзменениеАкции
Требуемый результат:
Реализация
Идея: Выгрузить конфигурацию в файлы. Изменить файлы, добавив необходимые записи о новых ролях в файлы. Далее загрузить конфигурацию из файлов в чистой базе. Получить сf с добавленными ролями.
Что, где, как?
С помощью git. Определяем, какие изменения происходят в выгрузке конфигурации при добавлении новой роли.
Для добавления роли требуется изменить файлы:
1)ConfigDumpInfo.xml
2)Configuration.xml
Создать файлы, в которых будут данные о правах для созданной роли:
- \Roles\ИмяРоли.xml
- \Roles\ИмяРоли\Ext\Rights.xml
Автоматизация процесса.
Создаем обработку для автоматический модификации файлов выгрузки конфигурации.
Описание обработки
- Основная команда. В "папке источник" находится выгрузка конфигурации в файлы. Папка приемник пустая папка, где после выполнения команды будет находится файлы конфигурации с добавленными новыми правами созданными по настройкам.
- Папка, куда выгружены файлы из конфигурации, которую требуется доработать
- Пустая папка, где будет новая конфигурация, с добавленными правами
- Тип метаданных, для которых настроено создание новых ролей
- Табличную часть "Настройки ролей". Перечисляются настройки для всех Шаблон-Роли.
- Указывается наименование роли как в конфигураторе, которая берется как шаблон.
- %1 - параметр имя объекта, для которого создается новая роль. Указывается шаблон, по которому будет создаваться синоним для новой роли.
- %1 - параметр имя объекта, для которого создается новая роль. Указывается шаблон, по которому будет создаваться имя для новой роли.
- Указывается префикс, который будет удален из имени объекта, для формирования нового имени роли.
Чтобы из "франчАкции" - получить "Акции", указываем франч. - Указывается префикс, который будет удален из синонима справочника для, формирования нового синонима роли.
Чтобы для "(ф) Акции" - получить "Акции", указываем (ф). - Указывается наименование объекта как в конфигураторе, для которого настроена Роль-Шаблон
- Команда заполнит табличную часть "Настройки объектов" данными всех справочников конфигурации.
- Табличную часть "Настройки объектов". Перечисляются объекты, для которых требуется создать роли по настройкам из "Настройки ролей".
- Указывается наименование объекта как в конфигураторе, для которого требуется создать роли по шаблону.
Пример работы.
- Выгружаем конфигурацию. В папку которую требуется указать в настройках обработки как "папка источник".
- Запускаем в режим предприятия. Открываем обработку делаем настройки. Есть команда которая заполнит настройки для базы из статьи.
- Выполняется команда "Создать роли". В папке приёмнике получаем модифицированные файлы с добавленными ролями.
- Загружаем в чистую базу конфигурацию из папки приемник
- Выгружаем новую конфигурацию в файл.
- Делаем сравнение объедение со старой конфигурацией
P.S. Прикрепленный .cf базы из статьи (содержимое "папки источник"), есть на github https://github.com/AHubaev/Role_source.git
Проверено на следующих конфигурациях и релизах:
- 1С:Управление холдингом 3.2 (русский и английский интерфейсы), релизы 3.2.2.5