/form-patterns - паттерны компоновки форм

SkillAI & models

Reference of layout patterns for 1C managed forms. Use as a reference when designing forms — archetypes, conventions, advanced techniques

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the /form-patterns - паттерны компоновки форм skill

What this skill tells your AI

The instructions your AI receives, as published by desko77/claude-code-skills-1c in skills/1c-form-patterns/SKILL.md and read by ahel’s review.

Справочник типовых паттернов дизайна управляемых форм 1С. Вызывай перед проектированием формы через /form-compile, когда требования пользователя не детализируют расположение элементов.

Как использовать: выбери подходящий архетип, применяй конвенции именования, при необходимости используй продвинутые паттерны.


Архетипы форм

Форма документа

Шапка (horizontal, 2 колонки)
├─ Левая (vertical): НомерДата (H: Номер + Дата "от"), Контрагент, Договор
├─ Правая (vertical): Организация, Подразделение, ЦеныИВалюта (надпись-ссылка)
Страницы (pages)
├─ Товары: таблица Объект.Товары
├─ Услуги: таблица Объект.Услуги (опционально)
└─ Дополнительно: прочие реквизиты
Подвал (vertical)
├─ Итоги (horizontal): Всего, НДС, Скидка
└─ КомментарийОтветственный (horizontal): Комментарий + Ответственный

События: OnCreateAtServer, OnReadAtServer, OnOpen, BeforeWriteAtServer, AfterWriteAtServer, AfterWrite, NotificationProcessing Свойства: autoTitle=false

Форма обработки (DataProcessor)

Параметры (vertical)
├─ Группа полей ввода (Организация, Период, режимы работы)
├─ Информационные надписи (label, hyperlink)
Рабочая область
├─ Таблица данных или Pages с вкладками
Кнопки действий
├─ Выполнить / Применить (defaultButton)
├─ Закрыть (stdCommand: Close)

События: OnCreateAtServer, OnOpen, NotificationProcessing Свойства: windowOpeningMode=LockOwnerWindow (если диалог), autoTitle=false

Форма списка

Отборы (group: alwaysHorizontal)
├─ ГруппаОтбор[Поле] (H): Флажок + Поле ввода (для каждого фильтра)
Список (table, DynamicList)
├─ Колонки: labelField (не input - данные только для чтения)

События: OnCreateAtServer, OnOpen, NotificationProcessing, OnLoadDataFromSettingsAtServer Свойства: autoSaveDataInSettings=Use Фильтры: пара реквизитов на каждый - Отбор[Поле] (значение) + Отбор[Поле]Использование (boolean) Ссылка (Ref) в запросе: добавлять элемент-колонку Ссылка в конец таблицы списка с userVisible: false. Ссылка нужна пользователю для самостоятельного вывода реквизитов ссылки, которые не были предусмотрены разработчиком, но не для отображения. Исключение: если явно требуется показать ссылку в колонках - выводить в место, указанное в ТЗ (или в конец, если не указано), без userVisible: false.

Форма элемента справочника

Простая:

ГруппаРеквизитов (horizontal)
├─ Наименование -> Объект.Description
└─ Код -> Объект.Code (если нужен)

Сложная:

Главное (vertical)
├─ Наименование -> Объект.Description
├─ Параметры (horizontal, 2 колонки)
│  ├─ Левая: основные реквизиты
│  └─ Правая: дополнительные реквизиты
└─ КонтактныеДанные / Дополнительно (vertical)

События: OnCreateAtServer, OnReadAtServer, BeforeWriteAtServer, NotificationProcessing

Мастер (Wizard)

Страницы (pages, OnCurrentPageChange)
├─ Шаг1: описание + параметры
├─ Шаг2: основная работа
└─ Шаг3: результат
Кнопки (horizontal)
├─ Назад (command), Далее (command, defaultButton), Выполнить (command)
└─ Закрыть (stdCommand: Close)

Свойства: windowOpeningMode=LockOwnerWindow, commandBarLocation=None


Конвенции именования

Группы

НазначениеИмяТип
ШапкаГруппаШапкаhorizontal
Левая колонкаГруппаШапкаЛеваяvertical
Правая колонкаГруппаШапкаПраваяvertical
Номер+ДатаГруппаНомерДатаhorizontal
ПодвалГруппаПодвалvertical
ИтогиГруппаИтогиhorizontal
КнопкиГруппаКнопокhorizontal
СтраницыГруппаСтраницы / Страницыpages
ПредупреждениеГруппаПредупреждениеhorizontal, visible:false
Доп. секцияГруппаДополнительно / ГруппаПрочееvertical, collapse

Элементы

НазначениеИмя
Поле в таблице[Таблица][Поле]
ИтогИтоги[Поле]
Надпись-ссылка[Поле]Надпись
ФильтрОтбор[Поле]
Флажок фильтраОтбор[Поле]Использование
Кнопка команды[ИмяКоманды] (имя = команда)
Баннер-картинка[Баннер]Картинка
Баннер-надпись[Баннер]Надпись
ПодменюПодменю[Действие]

Обработчики событий

Имя = имя элемента + суффикс на русском:

СобытиеСуффиксПример
OnChangeПриИзмененииОрганизацияПриИзменении
StartChoiceНачалоВыбораКонтрагентНачалоВыбора
ClickНажатиеЦеныИВалютаНажатие
OnEditEndПриОкончанииРедактированияТоварыПриОкончанииРедактирования
OnStartEditПриНачалеРедактированияТоварыПриНачалеРедактирования

Обработчики формы: ПриСозданииНаСервере, ПриОткрытии, ПередЗакрытием, ОбработкаОповещения.


Принципы компоновки

  1. Порядок чтения. Сверху вниз, слева направо. Самое важное - вверху.
  2. Двухколоночная шапка. Основные реквизиты слева (контрагент, склад), организационные справа (организация, подразделение).
  3. Кнопки действий внизу. Главная кнопка - defaultButton: true. Закрыть - всегда последняя.
  4. Таблицы - основная область. Табличные части занимают большую часть формы, обычно на Pages.
  5. Итоги рядом с таблицей. В подвале, горизонтальная группа, все поля readOnly.
  6. Фильтры - отдельная зона. Над списком, alwaysHorizontal, пара "флажок + поле" на каждый фильтр.
  7. Скрытые элементы для состояний. Баннеры, предупреждения - visible: false, показываются программно.
  8. Надписи-ссылки для диалогов. labelField с hyperlink: true и событием Click.
  9. Встроенная кнопка выбора вместо отдельной. Для полей выбора файла/значения предпочитать choiceButton: true (кнопка "..." в поле) + событие StartChoice, а не отдельную кнопку рядом. Компактнее и идиоматичнее.
  10. Не дублировать title. Если заголовок совпадает с именем реквизита - не указывать title явно, платформа подставит автоматически.

Продвинутые паттерны (ERP)

Сворачиваемые группы

Для необязательных секций (подписи, дополнительно, прочее):

{ "group": "vertical", "name": "ГруппаПодписи", "title": "Подписи",
  "behavior": "Collapsible", "collapsed": true, "children": [...] }

Баннер-предупреждение

Группа "картинка + надпись", скрыта по умолчанию, показывается программно:

{ "group": "horizontal", "name": "ГруппаПредупреждение", "showTitle": false,
  "visible": false, "children": [
    { "picture": "ПредупреждениеКартинка" },
    { "label": "ПредупреждениеНадпись", "title": "Текст", "maxWidth": 76, "autoMaxWidth": false }
]}

Popup-меню в командной панели

Группировка связанных команд (печать, отправка) в одну кнопку с иконкой:

{ "cmdBar": "КоманднаяПанель", "children": [
    { "popup": "ПодменюПечать", "title": "Печать",
      "picture": "StdPicture.Print", "representation": "Picture", "children": [
        { "button": "ПечатьНакладная", "command": "Печать" },
        { "button": "ПечатьСчет", "command": "ПечатьСчет" }
    ]}
]}

Форма без стандартной командной панели

Для модальных диалогов и мастеров:

{ "properties": { "commandBarLocation": "None", "windowOpeningMode": "LockWholeInterface" } }

Надпись-гиперссылка

Вместо кнопки для открытия подформ (ЦеныИВалюта, УчетнаяПолитика):

{ "labelField": "ЦеныИВалютаНадпись", "path": "ЦеныИВалюта", "hyperlink": true, "on": ["Click"] }

Пример: форма обработки (полный 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": "ОчиститьОбработка" }
  ]
}

Signals

GitHub stars
61
Forks
14
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
x-1c-form-patterns
Source
github.com/desko77/claude-code-skills-1c