关于 form-patterns
form-patterns 是 1C 托管窗体的布局模式参考,供设计窗体的开发者在使用 /form-compile 前查阅。它涵盖常见窗体原型、命名约定、布局原则和 ERP 场景模式。
主要功能
- 01提供文档、处理、列表等窗体原型
- 02列出分组、元素和事件命名约定
- 03说明布局顺序与操作区安排
- 04包含可折叠分组和警告横幅模式
- 05提供弹出菜单和超链接标签模式
适用场景
- 01按常见结构规划单据窗体
- 02设计带筛选区和动态列表的列表窗体
- 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 | ПриНачалеРедактирования | ТоварыПриНачалеРедактирования |
表单处理程序:ПриСозданииНаСервере、ПриОткрытии、ПередЗакрытием、ОбработкаОповещения。
布局原则
- **阅读顺序。**从上到下、从左到右。最重要的内容放在顶部。
- **双列表头。**左侧放主要属性(交易对手、仓库),右侧放组织属性(组织、部门)。
- 操作按钮放在表单主命令栏(
autoCmdBar)上,不要单独放在表单组中。主按钮设置为defaultButton: true。关闭按钮始终放在最后。 - **表格是主要区域。**表格部分占据表单的大部分区域,通常放在 Pages 上。
- **合计紧邻表格。**放在页脚的水平组中,所有字段均为 readOnly。
- **筛选条件放在独立区域。**置于列表上方,使用 alwaysHorizontal,每个筛选条件对应一组“复选框 + 字段”。
- **使用隐藏元素表示状态。**横幅、警告等设置为
visible: false,通过程序显示。 - **对话框使用链接标签。**使用
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": "ОчиститьОбработка" }
]
}