Reference of typical 1C managed form design patterns. Call before designing a form via /form-compile, when the user requirements do not detail the placement of elements.
How to use: choose a suitable archetype, apply naming conventions, and use advanced patterns if necessary.
Form archetypes
Document form
Шапка (horizontal, 2 колонки)
├─ Левая (vertical): НомерДата (H: Номер + Дата "от"), Контрагент, Договор
├─ Правая (vertical): Организация, Подразделение, ЦеныИВалюта (надпись-ссылка)
Страницы (pages)
├─ Товары: таблица Объект.Товары
├─ Услуги: таблица Объект.Услуги (опционально)
└─ Дополнительно: прочие реквизиты
Подвал (vertical)
├─ Итоги (horizontal): Всего, НДС, Скидка
└─ КомментарийОтветственный (horizontal): Комментарий + Ответственный
Events: OnCreateAtServer, OnReadAtServer, OnOpen, BeforeWriteAtServer, AfterWriteAtServer, AfterWrite, NotificationProcessing Properties: autoTitle=false
DataProcessor form
Параметры (vertical)
├─ Группа полей ввода (Организация, Период, режимы работы)
├─ Информационные надписи (label, hyperlink)
Рабочая область
├─ Таблица данных или Pages с вкладками
Кнопки действий
├─ Выполнить / Применить (defaultButton)
├─ Закрыть (stdCommand: Close)
Events: OnCreateAtServer, OnOpen, NotificationProcessing Properties: windowOpeningMode=LockOwnerWindow (if dialog), autoTitle=false
List form
Отборы (group: alwaysHorizontal)
├─ ГруппаОтбор[Поле] (H): Флажок + Поле ввода (для каждого фильтра)
Список (table, DynamicList)
├─ Колонки: labelField (не input — данные только для чтения)
Events: OnCreateAtServer, OnOpen, NotificationProcessing, OnLoadDataFromSettingsAtServer
Properties: autoSaveDataInSettings=Use
Filters: a pair of attributes for each — Отбор[Поле] (value) + Отбор[Поле]Использование (boolean)
Catalog item form
Simple:
ГруппаРеквизитов (horizontal)
├─ Наименование -> Объект.Description
└─ Код -> Объект.Code (если нужен)
Complex:
Главное (vertical)
├─ Наименование -> Объект.Description
├─ Параметры (horizontal, 2 колонки)
│ ├─ Левая: основные реквизиты
│ └─ Правая: дополнительные реквизиты
└─ КонтактныеДанные / Дополнительно (vertical)
Events: OnCreateAtServer, OnReadAtServer, BeforeWriteAtServer, NotificationProcessing
Wizard
Страницы (pages, OnCurrentPageChange)
├─ Шаг1: описание + параметры
├─ Шаг2: основная работа
└─ Шаг3: результат
Кнопки (horizontal)
├─ Назад (command), Далее (command, defaultButton), Выполнить (command)
└─ Закрыть (stdCommand: Close)
Properties: windowOpeningMode=LockOwnerWindow, commandBarLocation=None
Naming conventions
Groups
| Purpose | Name | Type |
|---|---|---|
| Header | ГруппаШапка |
horizontal |
| Left column | ГруппаШапкаЛевая |
vertical |
| Right column | ГруппаШапкаПравая |
vertical |
| Number+Date | ГруппаНомерДата |
horizontal |
| Footer | ГруппаПодвал |
vertical |
| Totals | ГруппаИтоги |
horizontal |
| Buttons | ГруппаКнопок |
horizontal |
| Pages | ГруппаСтраницы / Страницы |
pages |
| Warning | ГруппаПредупреждение |
horizontal, visible:false |
| Additional section | ГруппаДополнительно / ГруппаПрочее |
vertical, collapse |
Elements
| Purpose | Name |
|---|---|
| Field in table | [Таблица][Поле] |
| Total | Итоги[Поле] |
| Link label | [Поле]Надпись |
| Filter | Отбор[Поле] |
| Filter checkbox | Отбор[Поле]Использование |
| Command button | [Команда]Кнопка |
| Banner picture | [Баннер]Картинка |
| Banner label | [Баннер]Надпись |
| Submenu | Подменю[Действие] |
Event handlers
Name = element name + suffix in Russian:
| Event | Suffix | Example |
|---|---|---|
| OnChange | ПриИзменении | ОрганизацияПриИзменении |
| StartChoice | НачалоВыбора | КонтрагентНачалоВыбора |
| Click | Нажатие | ЦеныИВалютаНажатие |
| OnEditEnd | OnEndEditing | ТоварыПриОкончанииРедактирования |
| OnStartEdit | OnStartEditing | ТоварыПриНачалеРедактирования |
Form handlers: ПриСозданииНаСервере, ПриОткрытии, ПередЗакрытием, ОбработкаОповещения.
Layout principles
- Reading order. Top to bottom, left to right. The most important is at the top.
- Two-column header. Main details on the left (counterparty, warehouse), organizational ones on the right (organization, department).
- Action buttons at the bottom. The main button is
defaultButton: true. Close is always last. - Tables are the main area. Tabular sections occupy most of the form, usually on Pages.
- Totals next to the table. In the footer, a horizontal group, all fields readOnly.
- Filters are a separate area. Above the list, alwaysHorizontal, a pair of "checkbox + field" for each filter.
- Hidden elements for states. Banners, warnings —
visible: false, shown programmatically. - Link labels for dialogs.
labelFieldсhyperlink: trueand the Click event.
Advanced patterns (ERP)
Collapsible groups
For optional sections (signatures, additionally, other):
{ "group": "vertical", "name": "ГруппаПодписи", "title": "Подписи",
"behavior": "Collapsible", "collapsed": true, "children": [...] }
Warning banner
A "picture + label" group, hidden by default, shown programmatically:
{ "group": "horizontal", "name": "ГруппаПредупреждение", "showTitle": false,
"visible": false, "children": [
{ "picture": "ПредупреждениеКартинка" },
{ "label": "ПредупреждениеНадпись", "title": "Текст", "maxWidth": 76, "autoMaxWidth": false }
]}
Popup menu in the command bar
Grouping related commands (print, send) into one button with an icon:
{ "cmdBar": "КоманднаяПанель", "children": [
{ "popup": "ПодменюПечать", "title": "Печать",
"picture": "StdPicture.Print", "representation": "Picture", "children": [
{ "button": "ПечатьНакладная", "command": "Печать" },
{ "button": "ПечатьСчёт", "command": "ПечатьСчёт" }
]}
]}
Form without a standard command bar
For modal dialogs and wizards:
{ "properties": { "commandBarLocation": "None", "windowOpeningMode": "LockWholeInterface" } }
Hyperlink label
Instead of a button for opening subforms (PricesAndCurrency, AccountingPolicy):
{ "labelField": "ЦеныИВалютаНадпись", "path": "ЦеныИВалюта", "hyperlink": true, "on": ["Click"] }
Example: data processor form (full DSL)
{
"title": "Загрузка данных из CSV",
"properties": { "autoTitle": false, "windowOpeningMode": "LockOwnerWindow" },
"events": { "OnCreateAtServer": "ПриСозданииНаСервере" },
"elements": [
{ "group": "vertical", "name": "ГруппаПараметры", "children": [
{ "input": "ФайлЗагрузки", "path": "ФайлЗагрузки", "title": "Файл", "clearButton": true, "horizontalStretch": true, "on": ["StartChoice"] },
{ "input": "Кодировка", "path": "Кодировка" },
{ "input": "Разделитель", "path": "Разделитель", "title": "Разделитель колонок" }
]},
{ "table": "Данные", "path": "Объект.Данные", "on": ["OnStartEdit"], "columns": [
{ "input": "ДанныеНомерСтроки", "path": "Объект.Данные.LineNumber", "readOnly": true, "title": "№" },
{ "input": "ДанныеНаименование", "path": "Объект.Данные.Наименование" },
{ "input": "ДанныеКоличество", "path": "Объект.Данные.Количество", "on": ["OnChange"] },
{ "input": "ДанныеСумма", "path": "Объект.Данные.Сумма", "readOnly": true }
]},
{ "group": "horizontal", "name": "ГруппаКнопок", "children": [
{ "button": "Загрузить", "command": "Загрузить", "title": "Загрузить из файла", "defaultButton": true },
{ "button": "Очистить", "command": "Очистить", "title": "Очистить таблицу" },
{ "button": "Закрыть", "stdCommand": "Close" }
]}
],
"attributes": [
{ "name": "Объект", "type": "ExternalDataProcessorObject.ЗагрузкаИзCSV", "main": true },
{ "name": "ФайлЗагрузки", "type": "string" },
{ "name": "Кодировка", "type": "string(20)" },
{ "name": "Разделитель", "type": "string(5)" }
],
"commands": [
{ "name": "Загрузить", "action": "ЗагрузитьОбработка" },
{ "name": "Очистить", "action": "ОчиститьОбработка" }
]
}