Files
cc-1c-skills/docs/1c-form-spec.md
T
Nick Shirokov 03a6820f69 Add 1C managed form XML format specification
Comprehensive spec based on analysis of 7723 forms from
Бухгалтерия предприятия 3.0.180: all 15 UI control types,
form-level properties, events, attributes/type system,
parameters, commands, and namespace declarations.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 19:34:51 +03:00

1034 lines
39 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».
---
## 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:AccumulationRegisterRecordSet.<Имя>` | — | Набор записей регистра накопления |
#### Платформенные типы (v8:*)
| Тип | Описание |
|-----|----------|
| `v8:ValueListType` | Список значений |
| `v8:ValueTable` | Таблица значений |
| `v8:ValueTree` | Дерево значений |
| `v8:TypeDescription` | Описание типов |
| `v8:Universal` | Произвольный тип |
| `v8:FixedArray` | Фиксированный массив |
| `v8:FixedStructure` | Фиксированная структура |
#### UI-типы (v8ui:*)
| Тип | Описание |
|-----|----------|
| `v8ui:FormattedString` | Форматированная строка |
| `v8ui:Picture` | Картинка |
| `v8ui:Color` | Цвет |
| `v8ui:Font` | Шрифт |
#### Типы СКД (dcs*:*)
| Тип | Описание |
|-----|----------|
| `dcsset:DataCompositionSettings` | Настройки СКД |
| `dcssch:DataCompositionSchema` | Схема СКД |
| `dcscor:DataCompositionComparisonType` | Тип сравнения СКД |
#### Пустой тип
```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% |
| CalendarField | ~5% |
---
## 17. Элементы, не встреченные в конфигурации
Следующие элементы управления существуют в платформе, но не использованы в БП 3.0:
- `RadioButtonField`
- `TrackBarField`
- `ProgressBarField`
- `TextDocumentField`
- `SpreadSheetDocumentField`
- `HTMLDocumentField`
- `ChartField`
- `GanttChartField`
- `PlannerField`
- `GraphicalSchemaField`
- `FormattedDocumentField`