diff --git a/docs/1c-subsystem-spec.md b/docs/1c-subsystem-spec.md index 706354f0..aac114f6 100644 --- a/docs/1c-subsystem-spec.md +++ b/docs/1c-subsystem-spec.md @@ -37,7 +37,30 @@ Subsystems/ - Вложенные подсистемы хранятся в `<Имя>/Subsystems/` — рекурсивно повторяя ту же структуру - Глубина вложенности не ограничена (на практике до 3–4 уровней) -### 1.2. Командный интерфейс конфигурации (корневой) +### 1.2. Группы команд (CommandGroups) + +``` +CommandGroups/ +├── Документы.xml +├── Отчеты.xml +├── Печать.xml +└── ... +``` + +Плоская структура — только XML-файлы, без подкаталогов. + +### 1.3. Общие команды (CommonCommands) + +``` +CommonCommands/ +├── АнализСчета.xml # Метаданные +├── АнализСчета/ +│ └── Ext/ +│ └── CommandModule.bsl # Модуль команды +└── ... +``` + +### 1.4. Командный интерфейс конфигурации (корневой) ``` Ext/ @@ -426,11 +449,346 @@ Ext/ --- -## 5. Формат ссылок на команды +## 5. Формат группы команд (CommandGroup) + +### 5.1. Структура каталогов + +``` +CommandGroups/ +├── Документы.xml +├── Отчеты.xml +├── Печать.xml +├── Настройки.xml +└── ... +``` + +Плоская структура — только XML-файлы, без подкаталогов и модулей. + +### 5.2. Общая структура XML + +```xml + + + + + Документы + ... + + Auto + ... + ... + ActionsPanel + + + +``` + +### 5.3. Свойства (Properties) + +| Свойство | Тип | Обязательно | Описание | +|---|---|---|---| +| `Name` | string | да | Программное имя (CamelCase) | +| `Synonym` | LocalString | да | Отображаемое имя | +| `Comment` | string | да | Комментарий. Обычно пустой тег | +| `Representation` | enum | да | Способ отображения | +| `ToolTip` | LocalString | да | Подсказка. Пустой тег если не задана | +| `Picture` | Picture | да | Иконка. Пустой тег если не задана | +| `Category` | enum | да | Категория размещения | + +#### Representation + +| Значение | Описание | +|---|---| +| `Auto` | По умолчанию (наиболее частое) | +| `Picture` | Только картинка | +| `PictureAndText` | Картинка с текстом | + +#### Category + +| Значение | Описание | +|---|---| +| `ActionsPanel` | Панель действий (главное меню раздела) | +| `FormCommandBar` | Командная панель формы | +| `NavigationPanel` | Панель навигации | + +#### Picture (расширенный формат) + +```xml + + StdPicture.Print + true + + +``` + +- `xr:Ref` — ссылка на картинку: `StdPicture.<Имя>`, `CommonPicture.<Имя>`, или `0` (числовая ссылка) +- `xr:LoadTransparent` — загружать с прозрачностью +- `xr:TransparentPixel` — координаты прозрачного пикселя (опционально) + +### 5.4. Пример: минимальная группа + +```xml + + + + + Документы + + + ru + Документы + + + + Auto + + + ActionsPanel + + + +``` + +### 5.5. Пример: группа с картинкой и подсказкой + +```xml + + + + + Печать + + + ru + Печать + + + Печать + Auto + + + ru + Печать + + + + StdPicture.Print + true + + FormCommandBar + + + +``` + +--- + +## 6. Формат общей команды (CommonCommand) + +### 6.1. Структура каталогов + +``` +CommonCommands/ +├── АнализСчета.xml # Метаданные команды +├── АнализСчета/ +│ └── Ext/ +│ └── CommandModule.bsl # Модуль команды +├── НастройкиСинхронизации.xml +├── НастройкиСинхронизации/ +│ └── Ext/ +│ └── CommandModule.bsl +└── ... +``` + +Каждая команда состоит из: +- `<Имя>.xml` — определение метаданных (обязательно) +- `<Имя>/Ext/CommandModule.bsl` — модуль реализации (обязательно) + +### 6.2. Общая структура XML + +```xml + + + + + АнализСчета + ... + + NavigationPanelOrdinary + Auto + ... + + + false + + Single + false + Auto + + + +``` + +### 6.3. Свойства (Properties) + +| Свойство | Тип | Обязательно | Описание | +|---|---|---|---| +| `Name` | string | да | Программное имя | +| `Synonym` | LocalString | да | Отображаемое имя | +| `Comment` | string | да | Комментарий | +| `Group` | string | да | Группа размещения команды | +| `Representation` | enum | да | Способ отображения: `Auto`, `PictureAndText` | +| `ToolTip` | LocalString | да | Подсказка | +| `Picture` | Picture | да | Иконка | +| `Shortcut` | string | да | Сочетание клавиш. Пример: `F11`. Пустой тег если нет | +| `IncludeHelpInContents` | bool | да | Включать в содержание справки | +| `CommandParameterType` | TypeList | да | Типы параметра команды | +| `ParameterUseMode` | enum | да | Режим использования параметра: `Single` или `Multiple` | +| `ModifiesData` | bool | да | Модифицирует данные | +| `OnMainServerUnavalableBehavior` | enum | да | Поведение при недоступности сервера: `Auto` | + +#### Group — стандартные группы размещения + +Команда размещается в одной из групп: + +**Панель навигации раздела:** +- `NavigationPanelOrdinary` — обычные команды навигации +- `NavigationPanelImportant` — важные команды навигации + +**Панель навигации формы:** +- `FormNavigationPanelGoTo` — «Перейти» в форме +- `FormNavigationPanelImportant` — важные в навигации формы + +**Командная панель формы:** +- `FormCommandBarImportant` — важные на панели команд формы +- `FormCommandBarCreateBasedOn` — «Создать на основании» + +**Панель действий:** +- `ActionsPanelTools` — сервисные действия +- `ActionsPanelReports` — отчёты в панели действий + +**Пользовательская группа:** +- `CommandGroup.<Имя>` — ссылка на группу команд + +#### CommandParameterType — типы параметра + +Определяет к каким объектам привязана команда. Если пусто — команда глобальная. + +**Без параметра (глобальная команда):** +```xml + +``` + +**Один тип:** +```xml + + cfg:CatalogRef.Сотрудники + +``` + +**Несколько типов:** +```xml + + cfg:ExchangePlanRef.Полный + cfg:ExchangePlanRef.ПоОрганизации + cfg:ExchangePlanRef.АвтономнаяРабота + +``` + +Формат типов: `cfg:<ТипСсылки>.<ИмяОбъекта>`, где типы ссылок: +- `cfg:CatalogRef.<Имя>` — ссылка на справочник +- `cfg:DocumentRef.<Имя>` — ссылка на документ +- `cfg:ExchangePlanRef.<Имя>` — ссылка на план обмена + +--- + +## 7. Команды объектов (встроенные команды) + +Помимо общих команд (`CommonCommands/`), команды могут быть определены внутри объектов метаданных (справочников, документов, обработок и т.д.). + +### 7.1. Структура + +Команды определяются в секции `` родительского объекта и хранят модуль в подкаталоге: + +``` +Catalogs/ +├── Номенклатура.xml # В ChildObjects определены Command-ы +└── Номенклатура/ + └── Commands/ + └── КомандаИсторияДвижений/ + └── Ext/ + └── CommandModule.bsl # Модуль команды +``` + +### 7.2. XML-определение (внутри ChildObjects родителя) + +```xml + +
ФормаЭлемента
+
ФормаСписка
+ + + КомандаИсторияДвижений + + + ru + История движений + + + + FormNavigationPanelImportant + + cfg:CatalogRef.Номенклатура + + Single + false + Auto + + + + Auto + + +
+``` + +### 7.3. Свойства команды объекта + +Набор свойств идентичен CommonCommand (см. [раздел 6.3](#63-свойства-properties-1)), за исключением отсутствия `IncludeHelpInContents`. + +| Свойство | Описание | +|---|---| +| `Name` | Программное имя команды | +| `Synonym` | Отображаемое имя | +| `Comment` | Комментарий | +| `Group` | Группа размещения (те же значения что у CommonCommand) | +| `CommandParameterType` | Тип параметра (обычно ссылка на тип владельца) | +| `ParameterUseMode` | `Single` или `Multiple` | +| `ModifiesData` | Модифицирует данные (`true`/`false`) | +| `Representation` | Способ отображения | +| `ToolTip` | Подсказка | +| `Picture` | Иконка | +| `Shortcut` | Сочетание клавиш | +| `OnMainServerUnavalableBehavior` | Поведение при недоступности сервера | + +> **Порядок свойств**: В командах объектов `Representation` идёт **после** `ModifiesData`, а в CommonCommand — после `Comment`. Это единственное структурное различие. + +### 7.4. Ссылка на команду объекта в CommandInterface + +В `CommandInterface.xml` команда объекта адресуется как: +``` +<ТипОбъекта>.<ИмяОбъекта>.Command.<ИмяКоманды> +``` + +Пример: `Catalog.Номенклатура.Command.КомандаИсторияДвижений` + +--- + +## 8. Формат ссылок на команды в CommandInterface Атрибут `name` в элементах `Command` использует точечную нотацию: -### 5.1. Стандартные команды (StandardCommand) +### 8.1. Стандартные команды (StandardCommand) ``` <ТипОбъекта>.<ИмяОбъекта>.StandardCommand.<Операция> @@ -452,7 +810,7 @@ Ext/ - `InformationRegister.КурсыВалют.StandardCommand.OpenList` - `DocumentJournal.ЖурналДокументов.StandardCommand.OpenList` -### 5.2. Пользовательские команды (Command) +### 8.2. Пользовательские команды (Command) ``` <ТипОбъекта>.<ИмяОбъекта>.Command.<ИмяКоманды> @@ -465,7 +823,7 @@ Ext/ - `InformationRegister.Настройки.Command.ОбменДанными` - `ExchangePlan.Мобильное.Command.ОткрытьНастройки` -### 5.3. Общие команды (CommonCommand) +### 8.3. Общие команды (CommonCommand) ``` CommonCommand.<ИмяКоманды> @@ -476,7 +834,7 @@ CommonCommand.<ИмяКоманды> - `CommonCommand.ДополнительныеОбработкиПродажи` - `CommonCommand.ПерсональныеНастройки` -### 5.4. UUID-ссылки +### 8.4. UUID-ссылки ``` 0: @@ -488,9 +846,9 @@ CommonCommand.<ИмяКоманды> --- -## 6. Группы команд (CommandGroup) +## 9. Группы команд в CommandInterface -### 6.1. Стандартные группы панелей +### 9.1. Стандартные группы панелей | Идентификатор | Панель | Описание | |---|---|---| @@ -500,7 +858,7 @@ CommonCommand.<ИмяКоманды> | `ActionsPanelCreate` | Действия | Блок «Создать» | | `ActionsPanelTools` | Действия | Блок «Сервис» | -### 6.2. Пользовательские группы +### 9.2. Пользовательские группы ``` CommandGroup.<ИмяГруппы> @@ -518,7 +876,7 @@ CommandGroup.<ИмяГруппы> --- -## 7. Различия версий формата +## 10. Различия версий формата | Аспект | `2.17` (8.3.20–8.3.24) | `2.20` (8.3.27+) | |---|---|---| @@ -532,9 +890,9 @@ CommandGroup.<ИмяГруппы> --- -## 8. Полный пример +## 11. Полные примеры -### 8.1. Подсистема верхнего уровня (Продажи.xml) +### 11.1. Подсистема верхнего уровня (Продажи.xml) ```xml @@ -579,7 +937,7 @@ CommandGroup.<ИмяГруппы> ``` -### 8.2. CommandInterface подсистемы (Продажи/Ext/CommandInterface.xml) +### 11.2. CommandInterface подсистемы (Продажи/Ext/CommandInterface.xml) ```xml @@ -639,7 +997,7 @@ CommandGroup.<ИмяГруппы> ``` -### 8.3. Корневой CommandInterface (Ext/CommandInterface.xml) +### 11.3. Корневой CommandInterface (Ext/CommandInterface.xml) ```xml