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 フィルター: 各フィルターにつき 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ПриНачалеРедактированияТоварыПриНачалеРедактирования

フォームハンドラー:ПриСозданииНаСервере、ПриОткрытии、ПередЗакрытием、ОбработкаОповещения。


レイアウトの原則

  1. 読み進める順序。 上から下、左から右。最も重要なものを上部に配置します。
  2. 2 列のヘッダー。 主な属性は左側(取引先、倉庫)、組織関連の属性は右側(組織、部門)に配置します。
  3. アクションボタンはフォームのメインコマンドバー(autoCmdBar)に配置し、フォーム上の独立したグループには配置しません。メインボタンには defaultButton: true を指定します。「閉じる」は常に最後に配置します。
  4. テーブルはメイン領域です。 テーブル部分がフォームの大部分を占めるようにし、通常は Pages 上に配置します。
  5. 合計はテーブルの近くに配置します。 フッターの水平グループ内に配置し、すべてのフィールドを readOnly にします。
  6. フィルターは独立した領域に配置します。 リストの上に配置し、alwaysHorizontal を指定します。各フィルターは「チェックボックス + フィールド」の組み合わせにします。
  7. 状態表示用の非表示要素。 バナーや警告は visible: false にし、プログラムで表示します。
  8. ダイアログにはリンクラベルを使用します。 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": "ОчиститьОбработка" }
  ]
}

コメント