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
フィルター: 各フィルターにつき 2 つの属性を用意します — Отбор[Поле](値)+ Отбор[Поле]Использование(boolean)
カタログアイテムフォーム
シンプル:
ГруппаРеквизитов (horizontal)
├─ Наименование -> Объект.Description
└─ Код -> Объект.Code (если нужен)
複雑:
Главное (vertical)
├─ Наименование -> Объект.Description
├─ Параметры (horizontal, 2 колонки)
│ ├─ Левая: основные реквизиты
│ └─ Правая: дополнительные реквизиты
└─ КонтактныеДанные / Дополнительно (vertical)
イベント: OnCreateAtServer、OnReadAtServer、BeforeWriteAtServer、NotificationProcessing
ウィザード
Страницы (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 | ПриНачалеРедактирования | ТоварыПриНачалеРедактирования |
フォームハンドラー:ПриСозданииНаСервере、ПриОткрытии、ПередЗакрытием、ОбработкаОповещения。
レイアウトの原則
- 読み進める順序。 上から下、左から右。最も重要なものを上部に配置します。
- 2 列のヘッダー。 主な属性は左側(取引先、倉庫)、組織関連の属性は右側(組織、部門)に配置します。
- アクションボタンはフォームのメインコマンドバー(
autoCmdBar)に配置し、フォーム上の独立したグループには配置しません。メインボタンにはdefaultButton: trueを指定します。「閉じる」は常に最後に配置します。 - テーブルはメイン領域です。 テーブル部分がフォームの大部分を占めるようにし、通常は Pages 上に配置します。
- 合計はテーブルの近くに配置します。 フッターの水平グループ内に配置し、すべてのフィールドを readOnly にします。
- フィルターは独立した領域に配置します。 リストの上に配置し、alwaysHorizontal を指定します。各フィルターは「チェックボックス + フィールド」の組み合わせにします。
- 状態表示用の非表示要素。 バナーや警告は
visible: falseにし、プログラムで表示します。 - ダイアログにはリンクラベルを使用します。
hyperlink: trueと Click イベントを設定したlabelFieldを使用します。
高度なパターン(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": "ОчиститьОбработка" }
]
}