1C表单设计模式参考Skill form-patterns

这是一个关于1C软件中管理表单设计模式的参考指南,用于表单设计前参考,包括原型、命名约定和高级技巧,帮助开发者遵循最佳实践。关键词:1C,表单设计,模式,低代码开发,ERP,软件开发

低代码开发 0 次安装 0 次浏览 更新于 3/20/2026

名称: 表单模式 描述: 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 ПриНачалеРедактирования 商品ПриНачалеРедактирования

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


设计原则

  1. 阅读顺序。 从上到下,从左到右。最重要的在顶部。
  2. 两列头部。 主要属性在左侧(合同方、仓库),组织属性在右侧(组织、部门)。
  3. 操作按钮在底部。 主按钮 — defaultButton: true。关闭 — 总是在最后。
  4. 表格 — 主要区域。 表格部分占据表单大部分,通常在页面上。
  5. 总计靠近表格。 在底部,水平组,所有字段只读。
  6. 筛选器 — 单独区域。 在列表上方,alwaysHorizontal,每个筛选器一对“复选框 + 字段”。
  7. 隐藏元素用于状态。 横幅、警告 — visible: false,程序化显示。
  8. 标签-链接用于对话框。 labelFieldhyperlink: 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": "清除处理" }
  ]
}