mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-08 04:30:19 +03:00
Add /form-add skill for configuration objects
Create forms (metadata XML + Form.xml + Module.bsl) for Document, Catalog, InformationRegister and other configuration object types. Supports Object/List/Choice/Record purposes with automatic ChildObjects registration and DefaultForm setup. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
89f0788585
commit
6681758121
@@ -5,6 +5,157 @@
|
||||
|
||||
---
|
||||
|
||||
## 0. Файловая структура и регистрация
|
||||
|
||||
### Файлы формы
|
||||
|
||||
Каждая форма объекта конфигурации состоит из 3 файлов:
|
||||
|
||||
```
|
||||
<Объект>/Forms/
|
||||
ИмяФормы.xml ← метаданные (UUID, имя, синоним, FormType)
|
||||
ИмяФормы/
|
||||
Ext/
|
||||
Form.xml ← определение формы (описано в разделах 1–17)
|
||||
Form/
|
||||
Module.bsl ← модуль формы (1С-код)
|
||||
```
|
||||
|
||||
Общие формы (CommonForm) — аналогично, но на верхнем уровне конфигурации:
|
||||
|
||||
```
|
||||
CommonForms/
|
||||
ИмяФормы.xml ← метаданные (тег <CommonForm>)
|
||||
ИмяФормы/
|
||||
Ext/
|
||||
Form.xml
|
||||
Form/
|
||||
Module.bsl
|
||||
```
|
||||
|
||||
### Метаданные формы — шаблон
|
||||
|
||||
#### Форма объекта (Document, Catalog, DataProcessor, Report, ...)
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses"
|
||||
xmlns:app="http://v8.1c.ru/8.2/managed-application/core"
|
||||
xmlns:v8="http://v8.1c.ru/8.1/data/core"
|
||||
xmlns:xr="http://v8.1c.ru/8.3/xcf/readable"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
version="2.17">
|
||||
<Form uuid="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX">
|
||||
<Properties>
|
||||
<Name>ИмяФормы</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Отображаемое имя</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<FormType>Managed</FormType>
|
||||
<IncludeHelpInContents>false</IncludeHelpInContents>
|
||||
<UsePurposes>
|
||||
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
|
||||
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value>
|
||||
</UsePurposes>
|
||||
</Properties>
|
||||
</Form>
|
||||
</MetaDataObject>
|
||||
```
|
||||
|
||||
#### CommonForm
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses"
|
||||
xmlns:app="http://v8.1c.ru/8.2/managed-application/core"
|
||||
xmlns:v8="http://v8.1c.ru/8.1/data/core"
|
||||
xmlns:xr="http://v8.1c.ru/8.3/xcf/readable"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
version="2.17">
|
||||
<CommonForm uuid="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX">
|
||||
<Properties>
|
||||
<Name>ИмяФормы</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Отображаемое имя</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<FormType>Managed</FormType>
|
||||
<IncludeHelpInContents>false</IncludeHelpInContents>
|
||||
<UseStandardCommands>false</UseStandardCommands>
|
||||
<ExtendedPresentation/>
|
||||
<Explanation/>
|
||||
<UsePurposes>
|
||||
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
|
||||
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value>
|
||||
</UsePurposes>
|
||||
</Properties>
|
||||
</CommonForm>
|
||||
</MetaDataObject>
|
||||
```
|
||||
|
||||
### Регистрация формы
|
||||
|
||||
#### В ChildObjects родительского объекта
|
||||
|
||||
```xml
|
||||
<!-- В файле Documents/АвансовыйОтчет.xml (или Catalogs/Контрагенты.xml и т.д.) -->
|
||||
<ChildObjects>
|
||||
<Form>ФормаДокумента</Form>
|
||||
<Form>ФормаСписка</Form>
|
||||
...
|
||||
</ChildObjects>
|
||||
```
|
||||
|
||||
CommonForms регистрируются в `Configuration.xml`:
|
||||
|
||||
```xml
|
||||
<ChildObjects>
|
||||
<CommonForm>ИмяФормы</CommonForm>
|
||||
...
|
||||
</ChildObjects>
|
||||
```
|
||||
|
||||
#### DefaultForm в Properties родительского объекта
|
||||
|
||||
Формат значения: `ТипОбъекта.ИмяОбъекта.Form.ИмяФормы`
|
||||
|
||||
```xml
|
||||
<Properties>
|
||||
<DefaultObjectForm>Document.АвансовыйОтчет.Form.ФормаДокумента</DefaultObjectForm>
|
||||
<DefaultListForm>Document.АвансовыйОтчет.Form.ФормаСписка</DefaultListForm>
|
||||
<DefaultChoiceForm>Document.АвансовыйОтчет.Form.ФормаВыбора</DefaultChoiceForm>
|
||||
</Properties>
|
||||
```
|
||||
|
||||
#### Свойства DefaultForm по типам объектов
|
||||
|
||||
| Тип объекта | Свойства DefaultForm |
|
||||
|-------------|---------------------|
|
||||
| Document | DefaultObjectForm, DefaultListForm, DefaultChoiceForm |
|
||||
| Catalog | DefaultObjectForm, DefaultFolderForm, DefaultListForm, DefaultChoiceForm, DefaultFolderChoiceForm |
|
||||
| ChartOfCharacteristicTypes | DefaultObjectForm, DefaultFolderForm, DefaultListForm, DefaultChoiceForm, DefaultFolderChoiceForm |
|
||||
| ChartOfAccounts | DefaultObjectForm, DefaultListForm, DefaultChoiceForm |
|
||||
| DataProcessor | DefaultForm |
|
||||
| Report | DefaultForm |
|
||||
| InformationRegister | DefaultRecordForm, DefaultListForm |
|
||||
| ExchangePlan | DefaultObjectForm, DefaultListForm, DefaultChoiceForm |
|
||||
| BusinessProcess | DefaultObjectForm, DefaultListForm, DefaultChoiceForm |
|
||||
| Task | DefaultObjectForm, DefaultListForm, DefaultChoiceForm |
|
||||
| CommonForm | — (регистрируется в Configuration.xml, нет DefaultForm) |
|
||||
|
||||
> Report.DefaultForm может указывать на общую форму: `CommonForm.ФормаОтчета`.
|
||||
|
||||
---
|
||||
|
||||
## 1. Корневой элемент
|
||||
|
||||
```xml
|
||||
|
||||
+28
-1
@@ -6,6 +6,7 @@
|
||||
|
||||
| Навык | Параметры | Описание |
|
||||
|-------|-----------|----------|
|
||||
| `/form-add` | `<ObjectPath> <FormName> [Purpose]` | Добавление формы к объекту конфигурации (Document, Catalog и др.) |
|
||||
| `/form-info` | `<FormPath>` | Компактная сводка: дерево элементов, реквизиты, команды, события |
|
||||
| `/form-compile` | `<JsonPath> <OutputPath>` | Генерация Form.xml из компактного JSON-определения |
|
||||
| `/form-validate` | `<FormPath>` | Валидация: уникальность ID, companions, DataPath, команды |
|
||||
@@ -14,6 +15,23 @@
|
||||
|
||||
## Сценарии использования
|
||||
|
||||
### Добавление новой формы к объекту конфигурации
|
||||
|
||||
`/form-add` создаёт каркас управляемой формы (metadata XML + Form.xml + Module.bsl) и регистрирует её в объекте конфигурации. Поддерживает Document, Catalog, DataProcessor, Report, InformationRegister и другие типы.
|
||||
|
||||
```
|
||||
> Добавь форму документа к Documents/АвансовыйОтчет.xml
|
||||
```
|
||||
|
||||
Claude вызовет `/form-add` с нужными параметрами. Назначение формы (Purpose) определяет структуру: Object — форма объекта с реквизитом «Объект», List/Choice — форма списка с DynamicList, Record — форма записи регистра.
|
||||
|
||||
Типичный workflow:
|
||||
|
||||
1. `/form-add` — создать каркас (metadata + Form.xml + Module.bsl)
|
||||
2. `/form-compile` или `/form-edit` — наполнить Form.xml элементами
|
||||
3. `/form-validate` — проверить корректность
|
||||
4. `/form-info` — проанализировать результат
|
||||
|
||||
### Анализ формы перед модификацией
|
||||
|
||||
Файлы Form.xml содержат от сотен до десятков тысяч строк XML. 80% объёма — визуальный шум (цвета, шрифты, размеры, автогенерированные подсказки). `/form-info` извлекает суть.
|
||||
@@ -199,7 +217,16 @@ Claude создаст JSON-определение и вызовет `/form-compi
|
||||
|
||||
## Связь с EPF-навыками
|
||||
|
||||
Навыки `/form-*` работают с формами из любых источников — конфигурации и внешних обработок. При работе с обработками:
|
||||
Навыки `/form-*` работают с формами из любых источников — конфигурации и внешних обработок.
|
||||
|
||||
При работе с объектами конфигурации:
|
||||
|
||||
1. `/form-add` — создать форму (каркас + регистрация в объекте)
|
||||
2. `/form-compile` или `/form-edit` — наполнить Form.xml элементами
|
||||
3. `/form-validate` — проверить корректность
|
||||
4. `/form-info` — проанализировать результат
|
||||
|
||||
При работе с внешними обработками:
|
||||
|
||||
1. `/epf-add-form` — создать форму (каркас)
|
||||
2. `/form-compile` — сгенерировать Form.xml из JSON-определения
|
||||
|
||||
Reference in New Issue
Block a user