mcpField
F
form-patterns

form-patterns

github.com/nikolay-shirokov设计与 UI74152 次安装今天更新
代码仓库

关于 form-patterns

form-patterns 是 1C 托管窗体的布局模式参考,供设计窗体的开发者在使用 /form-compile 前查阅。它涵盖常见窗体原型、命名约定、布局原则和 ERP 场景模式。

主要功能

  1. 01提供文档、处理、列表等窗体原型
  2. 02列出分组、元素和事件命名约定
  3. 03说明布局顺序与操作区安排
  4. 04包含可折叠分组和警告横幅模式
  5. 05提供弹出菜单和超链接标签模式

适用场景

  1. 01按常见结构规划单据窗体
  2. 02设计带筛选区和动态列表的列表窗体
  3. 03为向导或模态对话框选择布局模式

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/nikolay-shirokov/cc-1c-skills --skill form-patterns

安装后在 Claude Code 中输入/form-patterns确认已加载。

详细介绍

/form-patterns — 表单布局模式

1C 托管表单常见设计模式参考。当用户需求未详细说明元素布局时,在通过 /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 с вкладками
Главная АКП формы (autoCmdBar)
├─ Выполнить / Применить (defaultButton: true)
└─ Закрыть (stdCommand: Close)

**事件:**OnCreateAtServer、OnOpen、NotificationProcessing
**属性:**windowOpeningMode=LockOwnerWindow(如果是对话框),autoTitle=false

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

**事件:**OnCreateAtServer、OnOpen、NotificationProcessing、OnLoadDataFromSettingsAtServer
**属性:**autoSaveDataInSettings=Use
**筛选条件:**每个字段一对属性——Отбор[Поле](值)+ Отбор[Поле]Использование(boolean)

目录元素表单

简单:

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

复杂:

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

**事件:**OnCreateAtServer、OnReadAtServer、BeforeWriteAtServer、NotificationProcessing

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

**属性:**windowOpeningMode=LockOwnerWindow


命名约定

组
用途名称类型
表头ГруппаШапкаhorizontal
左列ГруппаШапкаЛеваяvertical
右列ГруппаШапкаПраваяvertical
编号+日期ГруппаНомерДатаhorizontal
页脚ГруппаПодвалvertical
合计ГруппаИтогиhorizontal
表单主命令栏ФормаКоманднаяПанельautoCmdBar
页面ГруппаСтраницы / Страницыpages
警告ГруппаПредупреждениеhorizontal, visible:false
附加区域ГруппаДополнительно / ГруппаПрочееvertical, collapse
元素
用途名称
表格中的字段[Таблица][Поле]
合计Итоги[Поле]
链接标签[Поле]Надпись
筛选条件Отбор[Поле]
筛选复选框Отбор[Поле]Использование
命令按钮[Команда]Кнопка
横幅图片[Баннер]Картинка
横幅标签[Баннер]Надпись
子菜单Подменю[Действие]
事件处理程序

名称 = 元素名称 + 俄语后缀:

事件后缀示例
OnChangeПриИзмененииОрганизацияПриИзменении
StartChoiceНачалоВыбораКонтрагентНачалоВыбора
ClickНажатиеЦеныИВалютаНажатие
OnEditEndПриОкончанииРедактированияТоварыПриОкончанииРедактирования
OnStartEditПриНачалеРедактированияТоварыПриНачалеРедактирования

表单处理程序:ПриСозданииНаСервере、ПриОткрытии、ПередЗакрытием、ОбработкаОповещения。


布局原则

  1. **阅读顺序。**从上到下、从左到右。最重要的内容放在顶部。
  2. **双列表头。**左侧放主要属性(交易对手、仓库),右侧放组织属性(组织、部门)。
  3. 操作按钮放在表单主命令栏(autoCmdBar)上,不要单独放在表单组中。主按钮设置为 defaultButton: true。关闭按钮始终放在最后。
  4. **表格是主要区域。**表格部分占据表单的大部分区域,通常放在 Pages 上。
  5. **合计紧邻表格。**放在页脚的水平组中,所有字段均为 readOnly。
  6. **筛选条件放在独立区域。**置于列表上方,使用 alwaysHorizontal,每个筛选条件对应一组“复选框 + 字段”。
  7. **使用隐藏元素表示状态。**横幅、警告等设置为 visible: false,通过程序显示。
  8. **对话框使用链接标签。**使用 hyperlink: true 的 labelField 并绑定 Click 事件。

高级模式(ERP)

可折叠组

用于可选区域(签名、附加内容、其他内容):

{ "group": "collapsible", "name": "ГруппаПодписи", "title": "Подписи",
  "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 }
    ]},
    { "autoCmdBar": "ФормаКоманднаяПанель", "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": "ОчиститьОбработка" }
  ]
}

评论

支持 Markdown