mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-10 16:14:54 +03:00
7aaa9fc070
The @use preset name conflicted with the Use right semantics. DataProcessor and Report require Use+View together (View cannot be set without Use), so @view is the natural fit. Services (WebService, HTTPService, IntegrationService) use explicit rights. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
13 KiB
13 KiB
Role DSL — полная справка
Подробная справка по JSON DSL для /role-compile. Компактное описание — в SKILL.md.
Структура верхнего уровня
{
"name": "ИмяРоли",
"synonym": "Отображаемое имя роли",
"comment": "",
"setForNewObjects": false,
"setForAttributesByDefault": true,
"independentRightsOfChildObjects": false,
"objects": [ ... ],
"templates": [ ... ]
}
name— программное имя роли (обязательно)synonym— отображаемое имя (по умолчанию = name)comment— комментарий (по умолчанию пусто)- Глобальные флаги — по умолчанию
false,true,false
Объекты: два формата
Массив objects принимает строки (shorthand) и объекты (полная форма).
Строковый shorthand
"ОбъектМетаданных: @пресет"
"ОбъектМетаданных: Право1, Право2"
Примеры:
"objects": [
"Catalog.Номенклатура: @view",
"Document.Реализация: @edit",
"InformationRegister.Цены: Read, Update",
"DataProcessor.Загрузка: @view"
]
Объектная форма (для RLS и переопределений)
{
"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)
"templates": [
{
"name": "ДляОбъекта(Модификатор)",
"condition": "// текст шаблона\nГДЕ 1=1\n&Модификатор"
}
]
&в условии автоматически экранируется в&в XML- Ссылка на шаблон в
rls:"#ИмяШаблона(\"параметры\")"— начинается с# - Параметры шаблона можно передавать пустыми:
#ДляОбъекта("")
Примеры
1. Простая роль (только пресеты)
{
"name": "ЧтениеНоменклатуры",
"synonym": "Чтение номенклатуры",
"objects": [
"Catalog.Номенклатура: @view",
"Catalog.Контрагенты: @view",
"DataProcessor.Загрузка: @view"
]
}
2. Роль для регламентного задания
{
"name": "ОбновлениеЦен",
"synonym": "Обновление цен номенклатуры",
"objects": [
"Catalog.Номенклатура: Read",
"Catalog.Валюты: Read",
"InformationRegister.ЦеныНоменклатуры: Read, Update",
"Constant.ОсновнаяВалюта: Read"
]
}
3. Роль с RLS
{
"name": "ЧтениеДокументовПоОрганизации",
"synonym": "Чтение документов (ограничение по организации)",
"objects": [
"Catalog.Организации: @view",
{
"name": "Document.РеализацияТоваровУслуг",
"preset": "view",
"rls": {
"Read": "#ДляОбъекта(\"\")"
}
}
],
"templates": [
{
"name": "ДляОбъекта(Модификатор)",
"condition": "ГДЕ Организация = &ТекущаяОрганизация"
}
]
}
4. Роль с русскими синонимами
{
"name": "ПросмотрДанных",
"synonym": "Просмотр данных",
"objects": [
"Справочник.Контрагенты: @view",
"Документ.Реализация: Чтение, Просмотр",
"РегистрСведений.Цены: @edit",
"Обработка.ЗагрузкаДанных: @view"
]
}
5. Роль с переопределением прав из пресета
{
"name": "ОграниченноеРедактирование",
"synonym": "Редактирование без удаления",
"objects": [
{
"name": "Catalog.Контрагенты",
"preset": "edit",
"rights": { "Delete": false }
}
]
}