名称: 表单模式 描述: 1C管理表单设计模式参考。用作表单设计时的参考——原型、约定、高级技巧 参数提示: (无参数) 允许工具: []
/表单模式 — 表单设计模式
1C管理表单的典型设计模式参考。在通过/表单编译设计表单之前调用,当用户需求未详细指定元素布局时。
如何使用: 选择合适的原型,应用命名约定,必要时使用高级模式。
表单原型
文档表单
头部 (horizontal, 2 列)
├─ 左侧 (vertical): 编号日期 (H: 编号 + 日期 "从"), 合同方, 合同
├─ 右侧 (vertical): 组织, 部门, 价格和货币 (标签-链接)
页面 (pages)
├─ 商品: 表格 对象.商品
├─ 服务: 表格 对象.服务 (可选)
└─ 附加: 其他属性
底部 (vertical)
├─ 总计 (horizontal): 总计, 增值税, 折扣
└─ 评论负责人 (horizontal): 评论 + 负责人
事件: OnCreateAtServer, OnReadAtServer, OnOpen, BeforeWriteAtServer, AfterWriteAtServer, AfterWrite, NotificationProcessing 属性: autoTitle=false
处理表单 (DataProcessor)
参数 (vertical)
├─ 输入字段组 (组织, 期间, 工作模式)
├─ 信息标签 (label, hyperlink)
工作区域
├─ 数据表格或带标签的页面
操作按钮
├─ 执行 / 应用 (defaultButton)
├─ 关闭 (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: 结果
按钮 (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 | ПриНачалеРедактирования | 商品ПриНачалеРедактирования |
表单处理程序: ПриСозданииНаСервере, ПриОткрытии, ПередЗакрытием, ОбработкаОповещения.
设计原则
- 阅读顺序。 从上到下,从左到右。最重要的在顶部。
- 两列头部。 主要属性在左侧(合同方、仓库),组织属性在右侧(组织、部门)。
- 操作按钮在底部。 主按钮 —
defaultButton: true。关闭 — 总是在最后。 - 表格 — 主要区域。 表格部分占据表单大部分,通常在页面上。
- 总计靠近表格。 在底部,水平组,所有字段只读。
- 筛选器 — 单独区域。 在列表上方,alwaysHorizontal,每个筛选器一对“复选框 + 字段”。
- 隐藏元素用于状态。 横幅、警告 —
visible: false,程序化显示。 - 标签-链接用于对话框。
labelField带hyperlink: true和 Click 事件。
高级模式 (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 }
]}
命令面板中的弹出菜单
将相关命令(打印、发送)分组到一个带图标的按钮:
{ "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": "清除处理" }
]
}