Files
cc-1c-skills/docs/1c-form-spec.md
T
Nick Shirokov 60de083a05 docs(1c-form-spec): RadioButtonField перенесён в статистику (~8.5% форм БП)
Замер по acc_8.3.24: 658 из 7723 форм содержат RadioButtonField
(всего 1389 элементов). Раньше ошибочно числился среди не встреченных.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 18:48:29 +03:00

1221 lines
46 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 1C Form.xml Format Specification
Спецификация формата управляемых форм 1С:Предприятие 8.3 (version 2.17).
Составлена на основе анализа 7723 форм конфигурации «Бухгалтерия предприятия 3.0.180».
---
## 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
<?xml version="1.0" encoding="UTF-8"?>
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform"
xmlns:app="http://v8.1c.ru/8.2/managed-application/core"
xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config"
xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core"
xmlns:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema"
xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings"
xmlns:ent="http://v8.1c.ru/8.1/data/enterprise"
xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform"
xmlns:style="http://v8.1c.ru/8.1/data/ui/style"
xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system"
xmlns:v8="http://v8.1c.ru/8.1/data/core"
xmlns:v8ui="http://v8.1c.ru/8.1/data/ui"
xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web"
xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows"
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>
```
Все 17 namespace-деклараций **идентичны** во всех формах конфигурации. Атрибут `version` всегда `"2.17"`.
### Назначение namespace-префиксов
| Префикс | URI | Назначение |
|---------|-----|------------|
| _(default)_ | `http://v8.1c.ru/8.3/xcf/logform` | Основная схема формы |
| `v8` | `http://v8.1c.ru/8.1/data/core` | Базовые типы данных (Type, item, lang, content) |
| `v8ui` | `http://v8.1c.ru/8.1/data/ui` | UI-типы (Color, Font, Border, FormattedString) |
| `cfg` | `http://v8.1c.ru/8.1/data/enterprise/current-config` | Ссылки на объекты конфигурации (CatalogRef, DocumentRef) |
| `xr` | `http://v8.1c.ru/8.3/xcf/readable` | Читаемый формат (Ref, Item, LoadTransparent) |
| `style` | `http://v8.1c.ru/8.1/data/ui/style` | Стили оформления (FormBackColor и т.д.) |
| `web` | `http://v8.1c.ru/8.1/data/ui/colors/web` | Web-цвета |
| `win` | `http://v8.1c.ru/8.1/data/ui/colors/windows` | Windows-цвета |
| `sys` | `http://v8.1c.ru/8.1/data/ui/fonts/system` | Системные шрифты |
| `xs` | `http://www.w3.org/2001/XMLSchema` | XML Schema |
| `xsi` | `http://www.w3.org/2001/XMLSchema-instance` | XML Schema Instance |
| `app` | `http://v8.1c.ru/8.2/managed-application/core` | Ядро управляемого приложения |
| `lf` | `http://v8.1c.ru/8.2/managed-application/logform` | Формы управляемого приложения |
| `dcscor` | `http://v8.1c.ru/8.1/data-composition-system/core` | СКД — ядро |
| `dcssch` | `http://v8.1c.ru/8.1/data-composition-system/schema` | СКД — схема |
| `dcsset` | `http://v8.1c.ru/8.1/data-composition-system/settings` | СКД — настройки |
| `ent` | `http://v8.1c.ru/8.1/data/enterprise` | Данные предприятия |
---
## 2. Структура Form — порядок дочерних элементов
```
<Form>
┌─ Свойства формы (необязательные, в произвольном порядке)
├─ <CommandSet> — исключённые стандартные команды
├─ <AutoCommandBar> — главная командная панель (обязательный, id="-1")
├─ <Events> — обработчики событий формы
├─ <ChildItems> — дерево UI-элементов
├─ <Attributes> — реквизиты формы
├─ <Parameters> — параметры открытия формы
└─ <Commands> — пользовательские команды
</Form>
```
---
## 3. Свойства формы
Прямые дочерние элементы `<Form>` (все необязательные, указываются до `<CommandSet>`/`<AutoCommandBar>`):
### Общие свойства (все типы форм)
| Элемент | Тип | Значения | Описание |
|---------|-----|----------|----------|
| `<Title>` | multilang | — | Заголовок формы |
| `<Width>` | int | 60, 67... | Ширина формы в символах |
| `<Height>` | int | — | Высота формы в символах |
| `<Group>` | enum | `Vertical`, `Horizontal`, `AlwaysHorizontal`, `AlwaysVertical` | Направление размещения |
| `<WindowOpeningMode>` | enum | `LockOwnerWindow`, `Modeless` | Режим открытия окна |
| `<EnterKeyBehavior>` | enum | `DefaultButton`, `NewLine` | Действие по Enter |
| `<AutoTitle>` | bool | `true`/`false` | Автозаголовок |
| `<AutoURL>` | bool | `true`/`false` | Авто-URL |
| `<AutoFillCheck>` | bool | `true`/`false` | Автопроверка заполнения |
| `<Customizable>` | bool | `true`/`false` | Разрешить настройку |
| `<CommandBarLocation>` | enum | `Top`, `Bottom`, `None` | Расположение панели команд |
| `<VerticalScroll>` | enum | `useIfNecessary`, `Auto`, `AlwaysShow`, `Never` | Вертикальная прокрутка |
| `<ScalingMode>` | enum | — | Режим масштабирования |
### Свойства сохранения данных (DataProcessors)
| Элемент | Значения | Описание |
|---------|----------|----------|
| `<SaveDataInSettings>` | `UseList`, `Use`, `DontUse` | Сохранять данные в настройках |
| `<AutoSaveDataInSettings>` | `Use`, `DontUse` | Автосохранение |
### Свойства документов (Documents)
| Элемент | Значения | Описание |
|---------|----------|----------|
| `<AutoTime>` | `CurrentOrLast`, `Current`, `Last` | Управление временем документа |
| `<UsePostingMode>` | `Auto`, `Postings`, `Movements` | Режим проведения |
| `<RepostOnWrite>` | `true`/`false` | Перепроведение при записи |
### Свойства справочников (Catalogs, ChartsOfAccounts)
| Элемент | Значения | Описание |
|---------|----------|----------|
| `<UseForFoldersAndItems>` | `Folders`, `Items`, `FoldersAndItems` | Назначение формы |
### Свойства отчётов (Reports)
| Элемент | Значения | Описание |
|---------|----------|----------|
| `<ReportResult>` | string | Имя реквизита результата (`Результат`) |
| `<DetailsData>` | string | Имя реквизита расшифровки (`ДанныеРасшифровки`) |
| `<ReportFormType>` | `Main`, `Settings`, `Choice` | Тип формы отчёта |
| `<AutoShowState>` | `Auto`, `Show`, `Hide` | Автоотображение состояния |
| `<ReportResultViewMode>` | `Auto`, `Table`, `Spreadsheet` | Режим отображения результата |
| `<ViewModeApplicationOnSetReportResult>` | `Auto`, `Always`, `Never` | Применение режима |
### Мобильные свойства
| Элемент | Описание |
|---------|----------|
| `<MobileDeviceCommandBarContent>` | Конфигурация панели команд мобильного устройства |
### Матрица свойств по типам форм
| Свойство | CommonForm | Document | Catalog | Report | DataProcessor | InfoRegister |
|----------|:---:|:---:|:---:|:---:|:---:|:---:|
| Title | + | + | + | + | + | + |
| Width | — | — | + | — | + | — |
| WindowOpeningMode | + | + | + | — | + | — |
| AutoTitle | + | + | + | + | + | + |
| CommandBarLocation | + | + | + | + | + | + |
| AutoTime | — | + | — | — | — | — |
| UsePostingMode | — | + | — | — | — | — |
| UseForFoldersAndItems | — | — | + | — | — | — |
| ReportResult | — | — | — | + | — | — |
| SaveDataInSettings | — | — | — | — | + | — |
---
## 4. CommandSet — исключённые команды
```xml
<CommandSet>
<ExcludedCommand>CommandName</ExcludedCommand>
...
</CommandSet>
```
### Стандартные команды диалогов
`OK`, `Cancel`, `Yes`, `No`, `Abort`, `Retry`, `Ignore`, `Help`, `SaveValues`, `RestoreValues`
### Стандартные команды объектов
`Copy`, `Delete`, `SetDeletionMark`, `CreateInitialImage`, `ReadChanges`, `WriteChanges`
### Команды отчётов
`CustomizeForm`
---
## 5. AutoCommandBar — главная панель команд
Всегда присутствует. Фиксированные `name="ФормаКоманднаяПанель"` и `id="-1"`.
```xml
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1">
<HorizontalAlign>Right</HorizontalAlign> <!-- Left | Center | Right -->
<Autofill>false</Autofill> <!-- true | false -->
<EnableContentChange>true</EnableContentChange> <!-- optional -->
<ChildItems>
<!-- Button, ButtonGroup, Popup -->
</ChildItems>
</AutoCommandBar>
```
Может быть пустым (самозакрывающийся тег) или содержать `<ChildItems>` с кнопками.
---
## 6. Events — обработчики событий формы
```xml
<Events>
<Event name="EventName">ИмяОбработчика</Event>
...
</Events>
```
### Все события формы
| Имя события | Контекст | Описание |
|-------------|----------|----------|
| `OnCreateAtServer` | Сервер | Создание формы на сервере (инициализация) |
| `OnOpen` | Клиент | Открытие формы на клиенте |
| `BeforeClose` | Клиент | Перед закрытием формы |
| `OnClose` | Клиент | При закрытии формы |
| `AfterWrite` | Клиент | После записи объекта |
| `BeforeWrite` | Клиент | Перед записью объекта |
| `BeforeWriteAtServer` | Сервер | Перед записью на сервере |
| `OnWriteAtServer` | Сервер | При записи на сервере |
| `AfterWriteAtServer` | Сервер | После записи на сервере |
| `OnReadAtServer` | Сервер | При чтении объекта |
| `NotificationProcessing` | Клиент | Обработка межформенных оповещений |
| `ChoiceProcessing` | Клиент | Обработка результата выбора |
| `NewWriteProcessing` | Сервер | Создание нового объекта |
| `FillCheckProcessingAtServer` | Сервер | Проверка заполнения |
| `OnLoadUserSettingsAtServer` | Сервер | Загрузка пользовательских настроек (отчёты) |
| `OnSaveUserSettingsAtServer` | Сервер | Сохранение пользовательских настроек (отчёты) |
| `URLProcessing` | Клиент | Обработка навигационных ссылок |
### Типичные комбинации по типам форм
**Диалог:** `OnCreateAtServer` + `OnOpen`
**Документ:** `OnCreateAtServer` + `OnOpen` + `BeforeWriteAtServer` + `OnWriteAtServer` + `AfterWrite`
**Справочник:** `OnCreateAtServer` + `OnOpen` + `OnReadAtServer` + `BeforeWriteAtServer` + `AfterWrite` + `NotificationProcessing`
**Отчёт:** `OnCreateAtServer` + `OnOpen` + `BeforeClose` + `OnClose` + `OnLoadUserSettingsAtServer` + `OnSaveUserSettingsAtServer` + `NotificationProcessing` + `ChoiceProcessing` + `URLProcessing`
---
## 7. ChildItems — дерево UI-элементов
### 7.1. Иерархия вложенности
```
ChildItems
├── UsualGroup → содержит любые элементы
│ └── ChildItems
├── Pages → содержит только Page
│ └── ChildItems
│ └── Page → содержит любые элементы
│ └── ChildItems
├── Table → содержит колонки (InputField, LabelField, CheckBoxField, PictureField)
│ └── ChildItems
├── CommandBar → содержит Button, ButtonGroup, Popup
│ └── ChildItems
├── InputField (лист)
├── LabelField (лист)
├── CheckBoxField (лист)
├── LabelDecoration (лист)
├── PictureDecoration (лист)
├── PictureField (лист)
├── CalendarField (лист)
└── Button (лист)
```
### 7.2. Общие свойства всех элементов
Каждый UI-элемент имеет атрибуты `name` (string) и `id` (int). Кроме того, большинство элементов поддерживают:
| Свойство | Тип | Описание |
|----------|-----|----------|
| `<Title>` | multilang | Заголовок |
| `<ToolTip>` | multilang | Подсказка |
| `<Visible>` | bool | Видимость |
| `<Enabled>` | bool | Доступность |
| `<ReadOnly>` | bool | Только чтение |
| `<Width>` | int | Ширина |
| `<Height>` | int | Высота |
| `<HorizontalStretch>` | bool | Растягивание по горизонтали |
| `<VerticalStretch>` | bool | Растягивание по вертикали |
| `<HorizontalAlign>` | enum | `Left` / `Center` / `Right` |
| `<VerticalAlign>` | enum | `Top` / `Center` / `Bottom` |
| `<GroupHorizontalAlign>` | enum | Горизонтальное выравнивание в группе |
| `<GroupVerticalAlign>` | enum | Вертикальное выравнивание в группе |
| `<SkipOnInput>` | bool | Пропускать при вводе |
| `<ContextMenu>` | ref | Контекстное меню (name + id) |
| `<ExtendedTooltip>` | ref | Расширенная подсказка (name + id) |
| `<Events>` | block | Обработчики событий элемента |
### 7.3. Мультиязычный формат (multilang)
```xml
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Текст на русском</v8:content>
</v8:item>
</Title>
```
Атрибут `formatted="true"` на `<Title>` означает форматированную строку.
---
## 8. Типы UI-элементов — полное описание
### 8.1. UsualGroup — группа элементов
Основной контейнер для компоновки. Используется в ~90% форм.
```xml
<UsualGroup name="..." id="...">
<!-- Компоновка -->
<Group>Vertical | Horizontal | AlwaysHorizontal | AlwaysVertical</Group>
<Behavior>Usual | Collapsible | CommandBar</Behavior>
<Representation>None | NormalSeparation | WeakSeparation | StrongSeparation</Representation>
<ShowTitle>true | false</ShowTitle>
<United>true | false</United>
<!-- Расположение дочерних -->
<ChildItemsWidth>LeftWidest | RightWidest | Equal</ChildItemsWidth>
<HorizontalSpacing>Single | Half | Double</HorizontalSpacing>
<VerticalSpacing>Single | Half | Double</VerticalSpacing>
<ThroughAlign>Use | DontUse</ThroughAlign>
<!-- Внешний вид -->
<BackColor>style:... | web:... | win:...</BackColor>
<TextColor>style:...</TextColor>
<TitleTextColor>style:...</TitleTextColor>
<EnableContentChange>true | false</EnableContentChange>
<ControlRepresentation>Picture | Text</ControlRepresentation>
<ChildItems>...</ChildItems>
</UsualGroup>
```
### 8.2. InputField — поле ввода
Основной элемент ввода данных. Используется в ~80% форм.
```xml
<InputField name="..." id="...">
<DataPath>Объект.Организация</DataPath>
<!-- Заголовок -->
<TitleLocation>Left | Right | Top | Bottom | None</TitleLocation>
<TitleHeight>N</TitleHeight>
<TitleWidth>N</TitleWidth>
<!-- Размеры -->
<AutoMaxWidth>true | false</AutoMaxWidth>
<AutoMaxHeight>true | false</AutoMaxHeight>
<!-- Режим редактирования -->
<EditMode>Enter | EnterOnInput</EditMode>
<MultiLine>true | false</MultiLine>
<Wrap>true | false</Wrap>
<ExtendedEdit>true | false</ExtendedEdit>
<PasswordMode>true | false</PasswordMode>
<DefaultItem>true | false</DefaultItem>
<!-- Кнопки -->
<ChoiceButton>true | false</ChoiceButton>
<ChoiceButtonRepresentation>ShowInInputField | ShowInToolbar | Auto</ChoiceButtonRepresentation>
<OpenButton>true | false</OpenButton>
<ClearButton>true | false</ClearButton>
<SpinButton>true | false</SpinButton>
<CreateButton>true | false</CreateButton>
<DropListButton>true | false</DropListButton>
<TextEdit>true | false</TextEdit>
<ListChoiceMode>true | false</ListChoiceMode>
<!-- Автозаполнение и проверка -->
<AutoMarkIncomplete>true | false</AutoMarkIncomplete>
<MarkIncomplete>true | false</MarkIncomplete>
<AutoComplete>true | false</AutoComplete>
<QuickChoice>true | false</QuickChoice>
<ChoiceHistoryOnInput>Auto | Never | Always</ChoiceHistoryOnInput>
<!-- Подсказка ввода -->
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Placeholder text</v8:content>
</v8:item>
</InputHint>
<Mask>маска ввода</Mask>
<!-- Параметры выбора -->
<ChoiceFoldersAndItems>Items | Folders | FoldersAndItems</ChoiceFoldersAndItems>
<ChoiceParameters>
<v8:Parameter>
<v8:Name>name</v8:Name>
<v8:Value>value</v8:Value>
</v8:Parameter>
</ChoiceParameters>
<!-- Стилизация -->
<TextColor>style:... | web:... | win:...</TextColor>
<BackColor>style:... | web:... | win:...</BackColor>
<BorderColor>style:... | web:... | win:...</BorderColor>
<Font>...</Font>
<!-- События -->
<Events>
<Event name="OnChange">...</Event>
<Event name="StartChoice">...</Event>
<Event name="ChoiceProcessing">...</Event>
<Event name="Clearing">...</Event>
<Event name="AutoComplete">...</Event>
<Event name="TextEditEnd">...</Event>
<Event name="Opening">...</Event>
<Event name="OnEditEnd">...</Event>
<Event name="DragCheck">...</Event>
<Event name="Drag">...</Event>
<Event name="DragStart">...</Event>
</Events>
</InputField>
```
### 8.3. Button — кнопка
```xml
<Button name="..." id="...">
<Type>CommandBarButton | UsualButton | Hyperlink</Type>
<CommandName>Form.Command.Name | Form.StandardCommand.Name | CommonCommand.Name</CommandName>
<DataPath>Attribute</DataPath>
<Picture>
<xr:Ref>StdPicture.Name | CommonPicture.Name</xr:Ref>
<xr:LoadTransparent>true | false</xr:LoadTransparent>
</Picture>
<Representation>Auto | Picture | Text | PictureAndText</Representation>
<ShapeRepresentation>Auto | None | Button</ShapeRepresentation>
<DefaultButton>true | false</DefaultButton>
<LocationInCommandBar>InCommandBar | InAdditionalSubmenu | InCommandBarAndInAdditionalSubmenu | Auto</LocationInCommandBar>
<OnlyInAllActions>true | false</OnlyInAllActions>
<Events>
<Event name="Click">...</Event>
</Events>
</Button>
```
### 8.4. Table — таблица
```xml
<Table name="..." id="...">
<DataPath>ТабличныйРеквизит</DataPath>
<RowPictureDataPath>ТабличныйРеквизит.Иконка</RowPictureDataPath>
<RowsPicture>
<xr:Ref>CommonPicture.Name</xr:Ref>
</RowsPicture>
<!-- Отображение -->
<Representation>List | Tree | HierarchicalList</Representation>
<TitleLocation>Top | None</TitleLocation>
<HeightInTableRows>N</HeightInTableRows>
<Header>true | false</Header>
<Footer>true | false</Footer>
<HorizontalLines>true | false</HorizontalLines>
<VerticalLines>true | false</VerticalLines>
<UseAlternationRowColor>true | false</UseAlternationRowColor>
<!-- Редактирование -->
<SelectionMode>SingleRow | MultiRow</SelectionMode>
<ChangeRowSet>true | false</ChangeRowSet>
<ChangeRowOrder>true | false</ChangeRowOrder>
<AutoInsertNewRow>true | false</AutoInsertNewRow>
<!-- Панели -->
<CommandBarLocation>None | Top | Bottom | Auto</CommandBarLocation>
<SearchStringLocation>None | Top | Bottom | CommandBar | Auto</SearchStringLocation>
<ViewStatusLocation>Top | Bottom | None</ViewStatusLocation>
<SearchControlLocation>Top | Bottom | Auto</SearchControlLocation>
<!-- D&D -->
<EnableStartDrag>true | false</EnableStartDrag>
<EnableDrag>true | false</EnableDrag>
<FileDragMode>AsFile | AsFileRef</FileDragMode>
<!-- Дерево -->
<TopLevelParent xsi:nil="true"/>
<ShowRoot>true | false</ShowRoot>
<AllowRootChoice>true | false</AllowRootChoice>
<ChoiceFoldersAndItems>Items | Folders | FoldersAndItems</ChoiceFoldersAndItems>
<!-- Обновление -->
<AutoRefresh>true | false</AutoRefresh>
<AutoRefreshPeriod>seconds</AutoRefreshPeriod>
<UpdateOnDataChange>Auto | DontUpdate</UpdateOnDataChange>
<!-- Исключённые команды таблицы -->
<CommandSet>
<ExcludedCommand>...</ExcludedCommand>
</CommandSet>
<!-- Служебные элементы -->
<ContextMenu name="..." id="..."/>
<AutoCommandBar name="..." id="..."/>
<SearchStringAddition name="..." id="..."/>
<ViewStatusAddition name="..." id="..."/>
<SearchControlAddition name="..." id="..."/>
<!-- Колонки -->
<ChildItems>
<!-- InputField, LabelField, CheckBoxField, PictureField -->
</ChildItems>
<!-- События -->
<Events>
<Event name="Selection">...</Event>
<Event name="OnActivateRow">...</Event>
<Event name="BeforeRowChange">...</Event>
<Event name="BeforeAddRow">...</Event>
<Event name="BeforeDeleteRow">...</Event>
<Event name="AfterDeleteRow">...</Event>
<Event name="DragStart">...</Event>
<Event name="Drag">...</Event>
<Event name="DragCheck">...</Event>
<Event name="Drop">...</Event>
</Events>
</Table>
```
### 8.5. Pages / Page — вкладки
```xml
<Pages name="..." id="...">
<PagesRepresentation>None | TabsOnTop | TabsOnBottom | TabsOnLeft | TabsOnRight</PagesRepresentation>
<Events>
<Event name="OnCurrentPageChange">...</Event>
</Events>
<ChildItems>
<Page name="..." id="...">
<Title>...</Title>
<Picture>
<xr:Ref>StdPicture.Name</xr:Ref>
</Picture>
<ShowTitle>true | false</ShowTitle>
<ChildItemsWidth>LeftWidest | RightWidest | Equal</ChildItemsWidth>
<ChildItems>
<!-- Любые UI-элементы -->
</ChildItems>
</Page>
</ChildItems>
</Pages>
```
### 8.6. CommandBar — командная панель
```xml
<CommandBar name="..." id="...">
<CommandSource>Form | FormCommandPanelGlobalCommands</CommandSource>
<Autofill>true | false</Autofill>
<EnableContentChange>true | false</EnableContentChange>
<HorizontalLocation>Left | Right</HorizontalLocation>
<VerticalLocation>Top | Bottom</VerticalLocation>
<ChildItems>
<!-- Button, ButtonGroup, Popup -->
</ChildItems>
</CommandBar>
```
### 8.7. ButtonGroup — группа кнопок
```xml
<ButtonGroup name="..." id="...">
<Representation>Auto | Compact | Separate</Representation>
<CommandSource>Form | FormCommandPanelGlobalCommands | CommandPanel</CommandSource>
<ChildItems>
<!-- Button, ButtonGroup -->
</ChildItems>
</ButtonGroup>
```
### 8.8. Popup — выпадающее меню
```xml
<Popup name="..." id="...">
<Picture>
<xr:Ref>StdPicture.Print</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Representation>Auto | Picture | Text | PictureAndText</Representation>
<ShapeRepresentation>Auto | None | Button</ShapeRepresentation>
<LocationInCommandBar>InCommandBar | InAdditionalSubmenu | Auto</LocationInCommandBar>
<ChildItems>
<!-- Button, ButtonGroup, Popup -->
</ChildItems>
</Popup>
```
### 8.9. LabelDecoration — декоративная надпись
```xml
<LabelDecoration name="..." id="...">
<Title formatted="true">...</Title>
<AutoMaxWidth>true | false</AutoMaxWidth>
<AutoMaxHeight>true | false</AutoMaxHeight>
<Hyperlink>true | false</Hyperlink>
<ToolTipRepresentation>Auto | Button | None</ToolTipRepresentation>
<TextColor>style:... | web:... | win:...</TextColor>
<BackColor>style:... | web:... | win:...</BackColor>
<Font>...</Font>
<Border width="N">
<v8ui:style xsi:type="v8ui:ControlBorderType">WithoutBorder | WithBorder</v8ui:style>
</Border>
<Events>
<Event name="Click">...</Event>
</Events>
</LabelDecoration>
```
### 8.10. LabelField — поле надписи (привязанное к данным)
```xml
<LabelField name="..." id="...">
<DataPath>Реквизит.Свойство</DataPath>
<TitleLocation>Left | Right | Top | Bottom | None</TitleLocation>
<TitleTextColor>style:...</TitleTextColor>
<PasswordMode>true | false</PasswordMode>
<Hyperlink>true | false</Hyperlink>
<TextColor>style:... | web:... | win:...</TextColor>
<BackColor>style:... | web:... | win:...</BackColor>
<Font>...</Font>
<Events>
<Event name="Click">...</Event>
<Event name="URLProcessing">...</Event>
</Events>
</LabelField>
```
### 8.11. CheckBoxField — флажок
```xml
<CheckBoxField name="..." id="...">
<DataPath>Реквизит.Свойство</DataPath>
<TitleLocation>Left | Right | Top | Bottom | None</TitleLocation>
<CheckBoxType>Auto | Checkbox | Tumbler</CheckBoxType>
<EditMode>Enter | EnterOnInput</EditMode>
<Events>
<Event name="OnChange">...</Event>
</Events>
</CheckBoxField>
```
### 8.12. PictureDecoration — декоративная картинка
```xml
<PictureDecoration name="..." id="...">
<Picture>
<xr:Ref>StdPicture.Name | CommonPicture.Name</xr:Ref>
<xr:LoadTransparent>true | false</xr:LoadTransparent>
</Picture>
<Zoomable>true | false</Zoomable>
<NonselectedPictureText>текст</NonselectedPictureText>
<Hyperlink>true | false</Hyperlink>
<FileDragMode>AsFile | AsFileRef</FileDragMode>
<DisplayImportance>Auto | VeryLow | Low | Normal | High | VeryHigh</DisplayImportance>
<Border width="N">
<v8ui:style xsi:type="v8ui:ControlBorderType">WithoutBorder | WithBorder</v8ui:style>
</Border>
<Events>
<Event name="Click">...</Event>
</Events>
</PictureDecoration>
```
### 8.13. PictureField — поле картинки (привязанное к данным)
```xml
<PictureField name="..." id="...">
<DataPath>Реквизит.Свойство</DataPath>
<TitleLocation>Left | Right | Top | Bottom | None</TitleLocation>
<ValuesPicture>
<xr:Ref>CommonPicture.Name</xr:Ref>
</ValuesPicture>
<Zoomable>true | false</Zoomable>
<NonselectedPictureText>текст</NonselectedPictureText>
<FileDragMode>AsFile | AsFileRef</FileDragMode>
<Border width="N">
<v8ui:style xsi:type="v8ui:ControlBorderType">WithoutBorder | WithBorder</v8ui:style>
</Border>
<Events>
<Event name="Click">...</Event>
<Event name="StartDrag">...</Event>
<Event name="DragCheck">...</Event>
<Event name="Drag">...</Event>
</Events>
</PictureField>
```
### 8.14. CalendarField — календарь
```xml
<CalendarField name="..." id="...">
<DataPath>Реквизит.Дата</DataPath>
<TitleLocation>Left | Right | Top | Bottom | None</TitleLocation>
<WidthInMonths>N</WidthInMonths>
<HeightInWeeks>N</HeightInWeeks>
<ShowCurrentDate>true | false</ShowCurrentDate>
<BeginOfRepresentationPeriod>date</BeginOfRepresentationPeriod>
<EndOfRepresentationPeriod>date</EndOfRepresentationPeriod>
<Events>
<Event name="Selection">...</Event>
<Event name="OnPeriodOutput">...</Event>
</Events>
</CalendarField>
```
---
## 9. Attributes — реквизиты формы
```xml
<Attributes>
<Attribute name="ИмяРеквизита" id="N">
<Title>...</Title> <!-- multilang, необязательный -->
<ToolTip>...</ToolTip> <!-- multilang, необязательный -->
<Type>...</Type> <!-- определение типа -->
<MainAttribute>true</MainAttribute> <!-- основной реквизит формы -->
<SavedData>true</SavedData> <!-- сохраняемые данные -->
<FillChecking>Show | DontShow</FillChecking> <!-- проверка заполнения -->
<UseAlwaysAttributes>true</UseAlwaysAttributes>
<Columns>...</Columns> <!-- для ValueTable/ValueTree -->
</Attribute>
</Attributes>
```
### 9.1. Система типов
#### Примитивные типы (xs:*)
```xml
<!-- Строка -->
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>100</v8:Length> <!-- 0 = неограниченная -->
<v8:AllowedLength>Variable</v8:AllowedLength> <!-- Variable | Fixed -->
</v8:StringQualifiers>
</Type>
<!-- Число -->
<Type>
<v8:Type>xs:decimal</v8:Type>
<v8:NumberQualifiers>
<v8:Digits>15</v8:Digits> <!-- всего цифр -->
<v8:FractionDigits>2</v8:FractionDigits> <!-- дробная часть -->
<v8:AllowedSign>Any</v8:AllowedSign> <!-- Any | Nonnegative -->
</v8:NumberQualifiers>
</Type>
<!-- Булево -->
<Type>
<v8:Type>xs:boolean</v8:Type>
</Type>
<!-- Дата -->
<Type>
<v8:Type>xs:dateTime</v8:Type>
<v8:DateQualifiers>
<v8:DateFractions>Date</v8:DateFractions> <!-- Date | Time | DateTime -->
</v8:DateQualifiers>
</Type>
<!-- Двоичные данные -->
<Type>
<v8:Type>xs:binary</v8:Type>
<v8:BinaryDataQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:BinaryDataQualifiers>
</Type>
```
#### Ссылочные типы (cfg:*)
| Шаблон | Пример | Описание |
|--------|--------|----------|
| `cfg:CatalogRef.<Имя>` | `cfg:CatalogRef.Организации` | Ссылка на элемент справочника |
| `cfg:CatalogObject.<Имя>` | `cfg:CatalogObject.Контрагенты` | Объект справочника |
| `cfg:DocumentRef.<Имя>` | `cfg:DocumentRef.СчетФактура` | Ссылка на документ |
| `cfg:DocumentObject.<Имя>` | `cfg:DocumentObject.ПроцессПокупки` | Объект документа |
| `cfg:EnumRef.<Имя>` | `cfg:EnumRef.СпособДоставки` | Ссылка на перечисление |
| `cfg:ChartOfAccountsRef.<Имя>` | `cfg:ChartOfAccountsRef.Хозрасчетный` | Ссылка на план счетов |
| `cfg:ChartOfCalculationTypesRef.<Имя>` | — | Ссылка на план видов расчёта |
| `cfg:ChartOfCharacteristicTypesRef.<Имя>` | — | Ссылка на план видов характеристик |
| `cfg:ExchangePlanRef.<Имя>` | `cfg:ExchangePlanRef.АвтономнаяРабота` | Ссылка на план обмена |
| `cfg:BusinessProcessRef.<Имя>` | — | Ссылка на бизнес-процесс |
| `cfg:TaskRef.<Имя>` | — | Ссылка на задачу |
| `cfg:InformationRegisterRecordSet.<Имя>` | — | Набор записей регистра сведений |
| `cfg:InformationRegisterRecordManager.<Имя>` | — | Менеджер записи регистра сведений |
| `cfg:AccumulationRegisterRecordSet.<Имя>` | — | Набор записей регистра накопления |
| `cfg:AccountingRegisterRecordSet.<Имя>` | — | Набор записей регистра бухгалтерии |
| `cfg:ChartOfAccountsObject.<Имя>` | — | Объект плана счетов |
| `cfg:ChartOfCharacteristicTypesObject.<Имя>` | — | Объект ПВХ |
| `cfg:ChartOfCalculationTypesObject.<Имя>` | — | Объект плана видов расчёта |
| `cfg:ExchangePlanObject.<Имя>` | — | Объект плана обмена |
| `cfg:BusinessProcessObject.<Имя>` | — | Объект бизнес-процесса |
| `cfg:TaskObject.<Имя>` | — | Объект задачи |
| `cfg:ConstantsSet` | — | Набор констант |
| `cfg:DataProcessorObject.<Имя>` | — | Объект обработки |
| `cfg:ReportObject.<Имя>` | — | Объект отчёта |
| `cfg:DynamicList` | — | Динамический список |
#### Платформенные типы (v8:*)
| Тип | Описание |
|-----|----------|
| `v8:ValueListType` | Список значений |
| `v8:ValueTable` | Таблица значений |
| `v8:ValueTree` | Дерево значений |
| `v8:TypeDescription` | Описание типов |
| `v8:Universal` | Произвольный тип |
| `v8:FixedArray` | Фиксированный массив |
| `v8:FixedStructure` | Фиксированная структура |
| `v8:FillChecking` | Проверка заполнения |
| `v8:Null` | Null |
| `v8:StandardPeriod` | Стандартный период |
| `v8:StandardBeginningDate` | Стандартная начальная дата |
| `v8:Type` | Тип |
| `v8:UUID` | Уникальный идентификатор |
#### UI-типы (v8ui:*)
| Тип | Описание |
|-----|----------|
| `v8ui:FormattedString` | Форматированная строка |
| `v8ui:Picture` | Картинка |
| `v8ui:Color` | Цвет |
| `v8ui:Font` | Шрифт |
| `v8ui:SizeChangeMode` | Режим изменения размера |
| `v8ui:VerticalAlign` | Вертикальное выравнивание |
| `v8ui:HorizontalAlign` | Горизонтальное выравнивание |
#### Типы СКД (dcs*:*)
| Тип | Описание |
|-----|----------|
| `dcsset:DataCompositionSettings` | Настройки СКД |
| `dcssch:DataCompositionSchema` | Схема СКД |
| `dcscor:DataCompositionComparisonType` | Тип сравнения СКД |
| `dcsset:Filter` | Отбор СКД |
| `dcsset:SettingsComposer` | Компоновщик настроек |
| `dcsset:DataCompositionFieldPlacement` | Размещение поля СКД |
| `dcscor:DataCompositionGroupType` | Тип группировки |
| `dcscor:DataCompositionPeriodAdditionType` | Тип дополнения периода |
| `dcscor:DataCompositionSortDirection` | Направление сортировки |
| `dcscor:Field` | Поле СКД |
#### Типы предприятия (ent:*)
| Тип | Описание |
|-----|----------|
| `ent:AccountType` | Тип счёта (Активный/Пассивный/АктивноПассивный) |
| `ent:AccumulationRecordType` | Тип движения регистра накопления (Приход/Расход) |
| `ent:AccountingRecordType` | Тип бухгалтерской записи |
#### Пустой тип
```xml
<Type/> <!-- нетипизированный / произвольный -->
```
### 9.2. Составные типы
Несколько типов в одном реквизите:
```xml
<Type>
<v8:Type>cfg:CatalogRef.Организации</v8:Type>
<v8:Type>cfg:CatalogRef.ИндивидуальныеПредприниматели</v8:Type>
<v8:Type>cfg:CatalogRef.Контрагенты</v8:Type>
</Type>
```
### 9.3. ValueTable / ValueTree с колонками
```xml
<Attribute name="Строки" id="5">
<Type>
<v8:Type>v8:ValueTable</v8:Type>
</Type>
<Columns>
<Column name="Номенклатура" id="1">
<Title>...</Title>
<Type>
<v8:Type>cfg:CatalogRef.Номенклатура</v8:Type>
</Type>
</Column>
<Column name="Количество" id="2">
<Type>
<v8:Type>xs:decimal</v8:Type>
<v8:NumberQualifiers>
<v8:Digits>10</v8:Digits>
<v8:FractionDigits>3</v8:FractionDigits>
<v8:AllowedSign>Nonnegative</v8:AllowedSign>
</v8:NumberQualifiers>
</Type>
</Column>
</Columns>
</Attribute>
```
---
## 10. Parameters — параметры формы
```xml
<Parameters>
<Parameter name="ИмяПараметра">
<Type>...</Type> <!-- идентично типам Attributes -->
<KeyParameter>true</KeyParameter> <!-- ключевой параметр -->
</Parameter>
</Parameters>
```
Параметры **не имеют** атрибута `id`. Типы — те же, что для Attributes.
---
## 11. Commands — команды формы
```xml
<Commands>
<Command name="ИмяКоманды" id="N">
<Title>...</Title> <!-- multilang -->
<ToolTip>...</ToolTip> <!-- multilang -->
<Picture>
<xr:Ref>StdPicture.Refresh</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Action>ИмяОбработчика</Action> <!-- имя процедуры обработки -->
<Shortcut>Ctrl+S</Shortcut> <!-- клавиатурное сочетание -->
<Representation>Auto | Picture | Text | PictureAndText | TextPicture | None | Compact</Representation>
<CurrentRowUse>DontUse | Use | Auto</CurrentRowUse>
<ModifiesData>true | false</ModifiesData>
<ModifiesSavedData>true | false</ModifiesSavedData>
<ChangedStateSavedData>true | false</ChangedStateSavedData>
<Use>Auto</Use>
<Mark>true | false</Mark>
<ParameterUse>...</ParameterUse>
</Command>
</Commands>
```
---
## 12. Ссылки на картинки
Два вида ссылок:
```xml
<!-- Стандартная картинка платформы -->
<xr:Ref>StdPicture.Refresh</xr:Ref>
<!-- Общая картинка конфигурации -->
<xr:Ref>CommonPicture.ЗаполнитьФорму</xr:Ref>
```
С прозрачностью:
```xml
<Picture>
<xr:Ref>StdPicture.Print</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
```
---
## 13. Ссылки на стили, цвета, шрифты
```xml
<!-- Стиль -->
<BackColor>style:FormBackColor</BackColor>
<!-- Web-цвет -->
<TextColor>web:Red</TextColor>
<!-- Windows-цвет -->
<BackColor>win:ButtonFace</BackColor>
<!-- Системный шрифт -->
<Font>sys:DefaultGUIFont</Font>
```
---
## 14. Рамки (Border)
```xml
<Border width="1">
<v8ui:style xsi:type="v8ui:ControlBorderType">WithoutBorder</v8ui:style>
</Border>
```
Значения `ControlBorderType`: `WithoutBorder`, `WithBorder`.
---
## 15. DataPath — привязка к данным
Формат пути:
| Пример | Описание |
|--------|----------|
| `Объект.Организация` | Реквизит основного объекта формы |
| `Объект.Товары.Номенклатура` | Колонка табличной части объекта |
| `Отчет.НачалоПериода` | Параметр отчёта |
| `Запись.ОКОФ` | Поле записи регистра |
| `ТекстСообщения` | Реквизит формы верхнего уровня |
---
## 16. Статистика использования элементов
| Тип элемента | Частота |
|--------------|---------|
| UsualGroup | ~90% форм |
| Button | ~85% |
| InputField | ~80% |
| LabelDecoration | ~75% |
| CommandBar | ~70% |
| Table | ~60% |
| LabelField | ~60% |
| Pages / Page | ~55% |
| ButtonGroup | ~50% |
| CheckBoxField | ~45% |
| Popup | ~40% |
| PictureDecoration | ~40% |
| PictureField | ~15% |
| RadioButtonField | ~8.5% |
| CalendarField | ~5% |
---
## 17. Элементы, не встреченные в конфигурации
Следующие элементы управления существуют в платформе, но не использованы в БП 3.0:
- `TrackBarField`
- `ProgressBarField`
- `TextDocumentField`
- `SpreadSheetDocumentField`
- `HTMLDocumentField`
- `ChartField`
- `GanttChartField`
- `PlannerField`
- `GraphicalSchemaField`
- `FormattedDocumentField`