SuperAPI AI Directory

form-patterns

General & other

View repository

Updated 10-15 17:18

About this skill

/form-patterns — form layout patterns

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

  1. Reading order. Top to bottom, left to right. The most important is at the top.
  2. Two-column header. Main details on the left (counterparty, warehouse), organizational ones on the right (organization, department).
  3. Action buttons at the bottom. The main button is defaultButton: true. Close is always last.
  4. Tables are the main area. Tabular sections occupy most of the form, usually on Pages.
  5. Totals next to the table. In the footer, a horizontal group, all fields readOnly.
  6. Filters are a separate area. Above the list, alwaysHorizontal, a pair of "checkbox + field" for each filter.
  7. Hidden elements for states. Banners, warnings — visible: false, shown programmatically.
  8. Link labels for dialogs. labelField с hyperlink: true and 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": "ОчиститьОбработка" }
  ]
}