mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-15 10:24:57 +03:00
314 lines
13 KiB
Markdown
314 lines
13 KiB
Markdown
# Role DSL — полная справка
|
||
|
||
Подробная справка по JSON DSL для `/role-compile`. Компактное описание — в [SKILL.md](SKILL.md).
|
||
|
||
## Структура верхнего уровня
|
||
|
||
```json
|
||
{
|
||
"name": "ИмяРоли",
|
||
"synonym": "Отображаемое имя роли",
|
||
"comment": "",
|
||
"setForNewObjects": false,
|
||
"setForAttributesByDefault": true,
|
||
"independentRightsOfChildObjects": false,
|
||
"objects": [ ... ],
|
||
"templates": [ ... ]
|
||
}
|
||
```
|
||
|
||
- `name` — программное имя роли (обязательно)
|
||
- `synonym` — отображаемое имя (по умолчанию = name)
|
||
- `comment` — комментарий (по умолчанию пусто)
|
||
- Глобальные флаги — по умолчанию `false`, `true`, `false`
|
||
|
||
## Объекты: два формата
|
||
|
||
Массив `objects` принимает строки (shorthand) и объекты (полная форма).
|
||
|
||
### Строковый shorthand
|
||
|
||
```
|
||
"ОбъектМетаданных: @пресет"
|
||
"ОбъектМетаданных: Право1, Право2"
|
||
```
|
||
|
||
Примеры:
|
||
```json
|
||
"objects": [
|
||
"Catalog.Номенклатура: @view",
|
||
"Document.Реализация: @edit",
|
||
"InformationRegister.Цены: Read, Update",
|
||
"DataProcessor.Загрузка: @view"
|
||
]
|
||
```
|
||
|
||
### Объектная форма (для RLS и переопределений)
|
||
|
||
```json
|
||
{
|
||
"name": "Document.Реализация",
|
||
"preset": "view",
|
||
"rights": { "Delete": false },
|
||
"rls": { "Read": "#ДляОбъекта(\"\")" }
|
||
}
|
||
```
|
||
|
||
- `preset` — базовый набор прав (`"view"`, `"edit"`)
|
||
- `rights` — переопределения: dict `{"Right": true/false}` или массив `["Right1", "Right2"]`
|
||
- `rls` — RLS-ограничения: `{"ИмяПрава": "текст условия"}`
|
||
|
||
## Пресеты — подробные таблицы
|
||
|
||
Пресеты обозначаются `@` в строковом формате. В объектной форме ключ `preset` без `@`.
|
||
|
||
### `@view` — просмотр
|
||
|
||
| Тип объекта | Права |
|
||
|-------------|-------|
|
||
| Catalog, ExchangePlan, Document, ChartOfAccounts, ChartOfCharacteristicTypes, ChartOfCalculationTypes, BusinessProcess, Task | Read, View, InputByString |
|
||
| InformationRegister, AccumulationRegister, AccountingRegister, CalculationRegister, Constant, DocumentJournal | Read, View |
|
||
| Sequence | Read |
|
||
| CommonForm, CommonCommand, Subsystem, FilterCriterion, CommonAttribute | View |
|
||
| DataProcessor, Report | Use, View |
|
||
| SessionParameter | Get |
|
||
| Configuration | ThinClient, WebClient, Output, SaveUserData, MainWindowModeNormal |
|
||
|
||
### `@edit` — полное редактирование
|
||
|
||
| Тип объекта | Права |
|
||
|-------------|-------|
|
||
| Catalog, ExchangePlan, ChartOfAccounts, ChartOfCharacteristicTypes, ChartOfCalculationTypes | Read, Insert, Update, Delete, View, Edit, InputByString, InteractiveInsert, InteractiveSetDeletionMark, InteractiveClearDeletionMark |
|
||
| Document | Read, Insert, Update, Delete, View, Edit, InputByString, Posting, UndoPosting, InteractiveInsert, InteractiveSetDeletionMark, InteractiveClearDeletionMark, InteractivePosting, InteractivePostingRegular, InteractiveUndoPosting, InteractiveChangeOfPosted |
|
||
| BusinessProcess | Read, Insert, Update, Delete, View, Edit, InputByString, Start, InteractiveInsert, InteractiveSetDeletionMark, InteractiveClearDeletionMark, InteractiveActivate, InteractiveStart |
|
||
| Task | Read, Insert, Update, Delete, View, Edit, InputByString, Execute, InteractiveInsert, InteractiveSetDeletionMark, InteractiveClearDeletionMark, InteractiveActivate, InteractiveExecute |
|
||
| InformationRegister, AccumulationRegister, AccountingRegister, Constant | Read, Update, View, Edit |
|
||
| DocumentJournal | Read, View |
|
||
| Sequence | Read, Update |
|
||
| SessionParameter | Get, Set |
|
||
| CommonAttribute | View, Edit |
|
||
|
||
Для сервисов (WebService, HTTPService, IntegrationService) пресеты не определены — используй явные права: `"WebService.Имя: Use"`.
|
||
|
||
Если пресет не определён для типа объекта — предупреждение с подсказкой доступных.
|
||
|
||
## Русские синонимы
|
||
|
||
Скрипт автоматически транслирует русские имена в английские. Можно смешивать: `"Справочник.Контрагенты: Чтение, View"` — работает.
|
||
|
||
### Типы объектов
|
||
|
||
| Русский | English |
|
||
|---------|---------|
|
||
| `Справочник` | Catalog |
|
||
| `Документ` | Document |
|
||
| `РегистрСведений` | InformationRegister |
|
||
| `РегистрНакопления` | AccumulationRegister |
|
||
| `РегистрБухгалтерии` | AccountingRegister |
|
||
| `РегистрРасчета` | CalculationRegister |
|
||
| `Константа` | Constant |
|
||
| `ПланСчетов` | ChartOfAccounts |
|
||
| `ПланВидовХарактеристик` | ChartOfCharacteristicTypes |
|
||
| `ПланВидовРасчета` | ChartOfCalculationTypes |
|
||
| `ПланОбмена` | ExchangePlan |
|
||
| `БизнесПроцесс` | BusinessProcess |
|
||
| `Задача` | Task |
|
||
| `Обработка` | DataProcessor |
|
||
| `Отчет` | Report |
|
||
| `ОбщаяФорма` | CommonForm |
|
||
| `ОбщаяКоманда` | CommonCommand |
|
||
| `Подсистема` | Subsystem |
|
||
| `КритерийОтбора` | FilterCriterion |
|
||
| `ЖурналДокументов` | DocumentJournal |
|
||
| `Последовательность` | Sequence |
|
||
| `ВебСервис` | WebService |
|
||
| `HTTPСервис` | HTTPService |
|
||
| `СервисИнтеграции` | IntegrationService |
|
||
| `ПараметрСеанса` | SessionParameter |
|
||
| `ОбщийРеквизит` | CommonAttribute |
|
||
| `Конфигурация` | Configuration |
|
||
| `Перечисление` | Enum |
|
||
|
||
### Вложенные типы
|
||
|
||
| Русский | English |
|
||
|---------|---------|
|
||
| `Реквизит` | Attribute |
|
||
| `СтандартныйРеквизит` | StandardAttribute |
|
||
| `ТабличнаяЧасть` | TabularSection |
|
||
| `Измерение` | Dimension |
|
||
| `Ресурс` | Resource |
|
||
| `Команда` | Command |
|
||
| `РеквизитАдресации` | AddressingAttribute |
|
||
|
||
### Права (основные)
|
||
|
||
| Русский | English |
|
||
|---------|---------|
|
||
| `Чтение` | Read |
|
||
| `Добавление` | Insert |
|
||
| `Изменение` | Update |
|
||
| `Удаление` | Delete |
|
||
| `Просмотр` | View |
|
||
| `Редактирование` | Edit |
|
||
| `ВводПоСтроке` | InputByString |
|
||
| `Проведение` | Posting |
|
||
| `ОтменаПроведения` | UndoPosting |
|
||
| `Использование` | Use |
|
||
| `Получение` | Get |
|
||
| `Установка` | Set |
|
||
| `Старт` | Start |
|
||
| `Выполнение` | Execute |
|
||
| `УправлениеИтогами` | TotalsControl |
|
||
|
||
### Права (интерактивные)
|
||
|
||
| Русский | English |
|
||
|---------|---------|
|
||
| `ИнтерактивноеДобавление` | InteractiveInsert |
|
||
| `ИнтерактивнаяПометкаУдаления` | InteractiveSetDeletionMark |
|
||
| `ИнтерактивноеСнятиеПометкиУдаления` | InteractiveClearDeletionMark |
|
||
| `ИнтерактивноеУдаление` | InteractiveDelete |
|
||
| `ИнтерактивноеУдалениеПомеченных` | InteractiveDeleteMarked |
|
||
| `ИнтерактивноеПроведение` | InteractivePosting |
|
||
| `ИнтерактивноеПроведениеНеоперативное` | InteractivePostingRegular |
|
||
| `ИнтерактивнаяОтменаПроведения` | InteractiveUndoPosting |
|
||
| `ИнтерактивноеИзменениеПроведенных` | InteractiveChangeOfPosted |
|
||
| `ИнтерактивныйСтарт` | InteractiveStart |
|
||
| `ИнтерактивнаяАктивация` | InteractiveActivate |
|
||
| `ИнтерактивноеВыполнение` | InteractiveExecute |
|
||
|
||
### Права (конфигурация)
|
||
|
||
| Русский | English |
|
||
|---------|---------|
|
||
| `Администрирование` | Administration |
|
||
| `АдминистрированиеДанных` | DataAdministration |
|
||
| `ТонкийКлиент` | ThinClient |
|
||
| `ТолстыйКлиент` | ThickClient |
|
||
| `ВебКлиент` | WebClient |
|
||
| `МобильныйКлиент` | MobileClient |
|
||
| `ВнешнееСоединение` | ExternalConnection |
|
||
| `Вывод` | Output |
|
||
| `СохранениеДанныхПользователя` | SaveUserData |
|
||
|
||
## Типы объектов без прав в ролях
|
||
|
||
Следующие типы 1С **не могут** иметь права в ролях (не добавляются в `objects`):
|
||
|
||
| Тип | Причина |
|
||
|-----|---------|
|
||
| Enum (Перечисление) | Права наследуются от конфигурации, явное назначение невозможно |
|
||
| CommonModule (ОбщийМодуль) | Не имеет собственных прав в роли |
|
||
| DefinedType (ОпределяемыйТип) | Тип данных, не объект прав |
|
||
| CommonPicture (ОбщаяКартинка) | Ресурс, не объект прав |
|
||
| CommonTemplate (ОбщийМакет) | Ресурс, не объект прав |
|
||
| Language (Язык) | Конфигурационный элемент |
|
||
| FunctionalOption (ФункциональнаяОпция) | Не объект прав |
|
||
| FunctionalOptionsParameter | Не объект прав |
|
||
| EventSubscription (ПодпискаНаСобытие) | Не объект прав |
|
||
| ScheduledJob (РегламентноеЗадание) | Не объект прав |
|
||
| StyleItem (ЭлементСтиля) | Ресурс оформления |
|
||
|
||
## Шаблоны ограничений (RLS templates)
|
||
|
||
```json
|
||
"templates": [
|
||
{
|
||
"name": "ДляОбъекта(Модификатор)",
|
||
"condition": "// текст шаблона\nГДЕ 1=1\n&Модификатор"
|
||
}
|
||
]
|
||
```
|
||
|
||
- `&` в условии автоматически экранируется в `&` в XML
|
||
- Ссылка на шаблон в `rls`: `"#ИмяШаблона(\"параметры\")"` — начинается с `#`
|
||
- Параметры шаблона можно передавать пустыми: `#ДляОбъекта("")`
|
||
|
||
## Примеры
|
||
|
||
### 1. Простая роль (только пресеты)
|
||
|
||
```json
|
||
{
|
||
"name": "ЧтениеНоменклатуры",
|
||
"synonym": "Чтение номенклатуры",
|
||
"objects": [
|
||
"Catalog.Номенклатура: @view",
|
||
"Catalog.Контрагенты: @view",
|
||
"DataProcessor.Загрузка: @view"
|
||
]
|
||
}
|
||
```
|
||
|
||
### 2. Роль для регламентного задания
|
||
|
||
```json
|
||
{
|
||
"name": "ОбновлениеЦен",
|
||
"synonym": "Обновление цен номенклатуры",
|
||
"objects": [
|
||
"Catalog.Номенклатура: Read",
|
||
"Catalog.Валюты: Read",
|
||
"InformationRegister.ЦеныНоменклатуры: Read, Update",
|
||
"Constant.ОсновнаяВалюта: Read"
|
||
]
|
||
}
|
||
```
|
||
|
||
### 3. Роль с RLS
|
||
|
||
```json
|
||
{
|
||
"name": "ЧтениеДокументовПоОрганизации",
|
||
"synonym": "Чтение документов (ограничение по организации)",
|
||
"objects": [
|
||
"Catalog.Организации: @view",
|
||
{
|
||
"name": "Document.РеализацияТоваровУслуг",
|
||
"preset": "view",
|
||
"rls": {
|
||
"Read": "#ДляОбъекта(\"\")"
|
||
}
|
||
}
|
||
],
|
||
"templates": [
|
||
{
|
||
"name": "ДляОбъекта(Модификатор)",
|
||
"condition": "ГДЕ Организация = &ТекущаяОрганизация"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
### 4. Роль с русскими синонимами
|
||
|
||
```json
|
||
{
|
||
"name": "ПросмотрДанных",
|
||
"synonym": "Просмотр данных",
|
||
"objects": [
|
||
"Справочник.Контрагенты: @view",
|
||
"Документ.Реализация: Чтение, Просмотр",
|
||
"РегистрСведений.Цены: @edit",
|
||
"Обработка.ЗагрузкаДанных: @view"
|
||
]
|
||
}
|
||
```
|
||
|
||
### 5. Роль с переопределением прав из пресета
|
||
|
||
```json
|
||
{
|
||
"name": "ОграниченноеРедактирование",
|
||
"synonym": "Редактирование без удаления",
|
||
"objects": [
|
||
{
|
||
"name": "Catalog.Контрагенты",
|
||
"preset": "edit",
|
||
"rights": { "Delete": false }
|
||
}
|
||
]
|
||
}
|
||
```
|