本文へ移動
cccskills
無料GitHub で公開

form-compile

Компиляция управляемой формы 1С из JSON-определения или из метаданных объекта. Используй когда нужно создать форму с нуля по описанию элементов или сгенерировать типовую форму

インストール方法を見る

含まれるファイル(24)

  • SKILL.md23.7 KB
  • presets/erp-standard.json1.4 KB
  • presets/README.md6.7 KB
  • references/appearance.md8.9 KB
  • references/attributes-advanced.md3.5 KB
  • references/buttons-commands.md7.1 KB
  • references/charts.md10.6 KB
  • references/choice-params.md4.1 KB
  • references/command-interface.md4.6 KB
  • references/dynamic-list.md8.3 KB
  • references/form-properties.md3.7 KB
  • references/groups-pages.md4.9 KB
  • references/input-fields.md7.8 KB
  • references/layout-advanced.md2.5 KB
  • references/pictures.md2.9 KB
  • references/report-form.md3.8 KB
  • references/roles-access.md3.0 KB
  • references/special-fields.md2.2 KB
  • references/spreadsheet.md1.9 KB
  • references/table-advanced.md8.3 KB
  • references/tooltips-text.md2.9 KB
  • references/type-system-advanced.md5.4 KB
  • scripts/form-compile.ps1406.0 KB
  • scripts/form-compile.py414.1 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

/form-compile — Генерация Form.xml

Два режима:

  1. JSON DSL — из JSON-определения формы
  2. From object (-FromObject) — автоматически из метаданных объекта 1С по пресету ERP

При проектировании формы с нуля (5+ элементов или нечёткие требования) — вызовите /form-patterns для загрузки справочника. Для простых форм (1–3 поля) — не нужно.

Параметры

ПараметрОбязательныйОписание
JsonPathрежим 1Путь к JSON-определению формы
OutputPathдаПуть к выходному Form.xml
FromObjectрежим 2Флаг (без значения) — генерация по метаданным объекта

Команда

# Режим JSON DSL
powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/form-compile.ps1" -JsonPath "<json>" -OutputPath "<Form.xml>"

# Режим from-object (объект и purpose выводятся из OutputPath; Document и Catalog)
powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/form-compile.ps1" -FromObject -OutputPath "<.../TypePlural/ObjectName/Forms/FormName/Ext/Form.xml>"

JSON DSL

Структура

{
  "title": "Заголовок формы",
  "properties": { "windowOpeningMode": "LockOwnerWindow" },
  "events": { "OnCreateAtServer": "ПриСозданииНаСервере" },
  "elements": [ ... ],
  "attributes": [ ... ],
  "commands": [ ... ],
  "parameters": [ ... ]
}
  • title — заголовок формы (строка или {ru, en})
  • properties — свойства формы: windowOpeningMode, commandBarLocation, width, height и др. (полный список — references/form-properties.md)
  • events — обработчики событий формы: { "ИмяСобытия": "ИмяПроцедуры" }
  • excludedCommands — убрать стандартные команды формы: ["Reread", "Copy"]

Элементы (ключ определяет тип)

КлючЭлементЗначение ключа
groupОбычная группаориентация: vertical / horizontalIfPossible / alwaysHorizontal
inputПоле вводаимя
checkФлажокимя
radioПереключательимя
labelНадписьимя (текст — в title)
labelFieldПоле-надпись (значение без редактирования)имя
tableТаблицаимя
columnGroupГруппа колонок (внутри columns таблицы)horizontal / vertical / inCell
pages / pageСтраницы / страницаимя
buttonКнопкаимя
buttonGroupГруппа кнопок (в командной панели или подменю)имя
popupПодменюимя
cmdBarКомандная панель в раскладке формыимя
autoCmdBarКомандная панель самой формыимя (обычно ФормаКоманднаяПанель)
pictureКартинкаимя
picFieldПоле-картинкаимя

Табличный документ, HTML, календарь, диаграммы и другие особые поля — по индексу ниже.

Общие свойства элементов

КлючОписание
nameИмя элемента, если отличается от значения ключа типа. Имена в форме уникальны
titleЗаголовок (строка или {ru, en}); "" — без заголовка
tooltipВсплывающая подсказка
visible: false / enabled: false / readOnly: trueСкрыть / сделать недоступным / только чтение
titleLocationnone / left / right / top / bottom / auto
width / heightРазмер
horizontalStretch / verticalStretchРастягивать
autoMaxWidth: falseСнять предел ширины (поле тянется на всю доступную ширину)
eventsОбработчики: { "OnChange": "ИмяОбработчика" }; null вместо имени — имя по шаблону <Элемент><Событие>

События

Имена регистрозависимы.

Форма: OnCreateAtServer, OnOpen, BeforeClose, OnClose, NotificationProcessing, ChoiceProcessing, OnReadAtServer, BeforeWriteAtServer, OnWriteAtServer, AfterWriteAtServer, BeforeWrite, AfterWrite, FillCheckProcessingAtServer, BeforeLoadDataFromSettingsAtServer, OnLoadDataFromSettingsAtServer, ExternalEvent, Opening

input: OnChange, StartChoice, ChoiceProcessing, AutoComplete, TextEditEnd, Clearing, Creating, EditTextChange picField: OnChange, StartChoice, ChoiceProcessing, Click, Clearing check / radio: OnChange table: OnStartEdit, OnEditEnd, OnChange, Selection, ValueChoice, BeforeAddRow, BeforeDeleteRow, AfterDeleteRow, BeforeRowChange, BeforeEditEnd, OnActivateRow, OnActivateCell, Drag, DragStart, DragCheck, DragEnd label: Click, URLProcessing picture: Click labelField: OnChange, StartChoice, ChoiceProcessing, Click, URLProcessing, Clearing button: Click pages: OnCurrentPageChange

Поле ввода (input)

КлючОписание
pathПуть к данным: "Объект.Организация", "ИмяРеквизита"
multiLine: trueМногострочное (комментарий)
choiceButton / clearButton / dropListButtonКнопки выбора, очистки, выпадающего списка
markIncomplete: trueПодсвечивать незаполненное
inputHintПодсказка в пустом поле
skipOnInput: trueПропускать при переходе по Enter/Tab
maxWidthПредел ширины

Список выбора, маска, формат, пароль и другие кнопки — references/input-fields.md.

Флажок (check) и переключатель (radio)

check: path, titleLocation (по умолчанию заголовок справа). Вид «выключатель» или «тумблер» — references/input-fields.md.

radio: path, radioButtonType (Auto / RadioButtons / Tumbler), columnsCount, choiceList:

{ "radio": "СпособКурса", "path": "Объект.СпособУстановкиКурса", "radioButtonType": "Tumbler",
  "choiceList": [
    { "value": "Enum.СпособыКурса.EnumValue.Авто",   "presentation": "Автоматически" },
    { "value": "Enum.СпособыКурса.EnumValue.Ручной", "presentation": { "ru": "Вручную", "en": "Manual" } }
  ] }

value — строка, число, булево или значение перечисления "Enum.Тип.EnumValue.Значение"; presentation — текст варианта.

Надпись (label) и поле-надпись (labelField)

label: title — текст (поддерживает разметку, см. references/tooltips-text.md), hyperlink: true — ссылка. labelField: path, hyperlink: true — значение как ссылка.

Группа (group)

КлючОписание
behaviorcollapsible — сворачиваемая, popup — всплывающая; не указан — обычная
showTitle: trueПоказывать заголовок
representationnone / normal / weak / strong — рамка группы
united: falseВыравнивать поля только внутри группы, а не вместе с соседними
childrenВложенные элементы

Свёрнутая при открытии группа, интервалы, заголовок из данных — references/groups-pages.md.

Таблица (table)

Таблица привязывается к реквизиту-таблице (ValueTable, табличная часть объекта, динамический список) — см. «Связка элемент + реквизит».

КлючОписание
pathПуть к реквизиту-таблице
columnsКолонки — элементы (input, check, labelField, picField, columnGroup); путь колонки — путь таблицы плюс имя колонки: Объект.Товары.Сумма, Данные.Сумма
changeRowSet: true / changeRowOrder: trueРазрешить добавлять/удалять / перемещать строки
header: falseБез шапки
heightInTableRowsВысота в строках
commandBarLocationNone / Top / Bottom / Auto
searchStringLocationNone / Top / Bottom / CommandBar / Auto
choiceMode: trueТаблица выбора (форма выбора)

Подвал с итогами, дерево, выделение, закрепление колонок, перетаскивание — references/table-advanced.md.

columnGroup группирует колонки: title, showInHeader, children; inCell — несколько колонок в одной ячейке:

{ "table": "Список", "path": "Список", "columns": [
    { "columnGroup": "horizontal", "name": "ГруппаСрок", "title": "Срок", "children": [
        { "input": "ДатаНачала", "path": "Список.ДатаНачала" },
        { "input": "ДатаОкончания", "path": "Список.ДатаОкончания" } ] },
    { "input": "Комментарий", "path": "Список.Комментарий" }
] }

Страницы (pages + page)

pages: pagesRepresentation (TabsOnTop / TabsOnBottom / None — без закладок), children — массив page. page: title, group (ориентация содержимого), children.

Кнопки и командные панели

Ключ (button)Описание
commandКоманда формы → Form.Command.Имя
stdCommandСтандартная: "Close"; с точкой — команда элемента: "Товары.Add"
defaultButton: trueКнопка по умолчанию
typeusual / hyperlink
representationAuto / Text / Picture / PictureAndText
locationInCommandBarInCommandBar / InAdditionalSubmenu

autoCmdBar — командная панель формы, сюда помещают основные действия:

{ "autoCmdBar": "ФормаКоманднаяПанель", "children": [
    { "button": "Загрузить", "command": "Загрузить", "defaultButton": true },
    { "popup": "Печать", "title": "Печать", "children": [
        { "button": "ПечатьСчета", "command": "ПечатьСчета" } ] },
    { "buttonGroup": "ГруппаПеремещение", "children": [
        { "button": "Вверх", "command": "Вверх" },
        { "button": "Вниз", "command": "Вниз" } ] }
] }
  • popup — подменю: title, children.
  • buttonGroup — кнопки, объединённые в группу: title, children.
  • cmdBar — отдельная панель в раскладке формы: autofill, children.
  • autoCmdBar: autofill: false — без стандартных команд, horizontalAlign — выравнивание.

Картинки кнопок, кнопки-переключатели, команды таблицы в группе кнопок, своё контекстное меню у элемента — references/buttons-commands.md.

Картинка (picture) и поле-картинка (picField)

picture: src — "StdPicture.X" / "CommonPicture.X", width, height. picField: path; для булева или числа — valuesPicture (иначе значок не рисуется). Подробнее — references/pictures.md.

Реквизиты (attributes)

{ "name": "Объект", "type": "DataProcessorObject.Загрузка", "main": true }
{ "name": "Итого", "type": "decimal(15,2)", "title": "Итого" }
{ "name": "Таблица", "type": "ValueTable", "columns": [
    { "name": "Номенклатура", "type": "CatalogRef.Номенклатура" },
    { "name": "Количество", "type": "decimal(10,3)" } ] }
{ "name": "Список", "type": "DynamicList", "main": true,
  "settings": { "mainTable": "Catalog.Номенклатура" } }
  • main: true — основной реквизит формы (объект, набор записей, динамический список)
  • savedData: true — сохраняемые данные (у основного реквизита-объекта ставится само)
  • columns — колонки ValueTable / ValueTree
  • settings — настройки динамического списка (references/dynamic-list.md)

Сохранение в настройках, проверка заполнения, функциональные опции — references/attributes-advanced.md.

Команды (commands) и параметры (parameters)

"commands": [ { "name": "Загрузить", "action": "ЗагрузитьОбработка", "title": "Загрузить", "shortcut": "Ctrl+Enter", "picture": "StdPicture.Refresh" } ]
"parameters": [ { "name": "Основание", "type": "DocumentRef.Заказ" } ]

Команды: name, action (процедура-обработчик), title, shortcut, picture. Параметры: name, type, key: true — ключевой.

Система типов

DSLТип
string / string(100)Строка (неограниченная / длины 100)
decimal(15,2) / decimal(10,0,nonneg)Число / неотрицательное
booleanБулево
date / dateTime / timeДата / дата и время / время
CatalogRef.X / DocumentRef.X / EnumRef.X / …Ссылки
CatalogObject.X / DocumentObject.X / DataProcessorObject.X / ReportObject.XОбъекты (основной реквизит)
InformationRegisterRecordSet.X / AccumulationRegisterRecordSet.XНаборы записей
ValueTable / ValueTree / ValueListТаблица / дерево / список значений
DynamicListДинамический список
TypeDescription, UUID, FormattedString, Picture, Color, Font, DataCompositionSettings, StandardPeriod, mxl:SpreadsheetDocumentПлатформенные
Тип1 | Тип2Составной

Также ChartOfAccountsRef/Object, ChartOfCharacteristicTypesRef/Object, ChartOfCalculationTypesRef/Object, ExchangePlanRef/Object, BusinessProcessRef/Object, TaskRef/Object, AccountingRegisterRecordSet, InformationRegisterRecordManager, ConstantsSet. Наборы типов — references/type-system-advanced.md.

FormDataStructure, FormDataCollection, FormDataTree — не типы реквизита (ошибка при загрузке). Вместо них — объектный тип (DocumentObject.X…), ValueTable, ValueTree.

Связка элемент + реквизит

Элемент показывает данные реквизита через path.

Табличная часть основного реквизита — путь Объект.<ТЧ>, колонки — Объект.<ТЧ>.<Реквизит>:

{ "table": "Товары", "path": "Объект.Товары", "columns": [
    { "input": "ТоварыНоменклатура", "path": "Объект.Товары.Номенклатура" },
    { "input": "ТоварыКоличество", "path": "Объект.Товары.Количество" } ] }

Таблица на реквизите формы — реквизит ValueTable с колонками:

{
  "elements": [
    { "table": "Данные", "path": "Данные", "changeRowSet": true, "columns": [
        { "input": "ДанныеДата", "path": "Данные.Дата" },
        { "input": "ДанныеСумма", "path": "Данные.Сумма" } ] }
  ],
  "attributes": [
    { "name": "Данные", "type": "ValueTable", "columns": [
        { "name": "Дата", "type": "date" },
        { "name": "Сумма", "type": "decimal(15,2)" } ] }
  ]
}

Пример: диалог загрузки

{
  "title": "Загрузка из файла",
  "events": { "OnCreateAtServer": "ПриСозданииНаСервере" },
  "elements": [
    { "group": "horizontal", "name": "ГруппаФайл", "children": [
      { "input": "ИмяФайла", "path": "ИмяФайла", "title": "Файл", "inputHint": "Выберите файл...",
        "choiceButton": true, "events": { "StartChoice": "ИмяФайлаНачалоВыбора" } },
      { "check": "ПерваяСтрокаЗаголовок", "path": "ПерваяСтрокаЗаголовок" }
    ]},
    { "input": "Результат", "path": "Результат", "multiLine": true, "height": 8, "readOnly": true, "title": "Лог" },
    { "autoCmdBar": "ФормаКоманднаяПанель", "children": [
      { "button": "Загрузить", "command": "Загрузить", "defaultButton": true },
      { "button": "Закрыть", "stdCommand": "Close" }
    ]}
  ],
  "attributes": [
    { "name": "Объект", "type": "ExternalDataProcessorObject.ЗагрузкаИзФайла", "main": true },
    { "name": "ИмяФайла", "type": "string" },
    { "name": "ПерваяСтрокаЗаголовок", "type": "boolean" },
    { "name": "Результат", "type": "string" }
  ],
  "commands": [
    { "name": "Загрузить", "action": "ЗагрузитьОбработка", "shortcut": "Ctrl+Enter" }
  ]
}

Служебные узлы элементов (контекстное меню, расширенная подсказка, панели таблицы) и идентификаторы создаются сами. Неизвестный ключ — предупреждение в выводе.

Задача → справочник

Описанного выше хватает для большинства форм. Под задачу подгрузите файл из references/:

ЗадачаСправочник
Список выбора, быстрый выбор, своя форма выбора, маска, формат числа, пароль, выключатель/тумблер, кнопки открытия и создания, поле составного типаinput-fields.md
Ограничить выбор отбором, связать поле с другим полем, связь по типуchoice-params.md
Свёрнутая группа, интервалы и ширины колонок в группе, заголовок группы или страницы из данных, значок закладки, мастер по шагам (страницы без закладок)groups-pages.md
Итоги в подвале таблицы, дерево, выделение нескольких строк, закрепление колонок, поиск, перетаскивание, убрать стандартные команды таблицыtable-advanced.md
Форма списка: источник данных, запрос, отбор, сортировка, группировка, иерархияdynamic-list.md
Кнопка с картинкой, переключатель в панели, команды таблицы в группе кнопок, своё контекстное меню или панель у поля, команда для текущей строки таблицыbuttons-commands.md
Подсветить цветом, шрифт, рамка, условное оформление (в форме списка — dynamic-list.md)appearance.md
Расширенная подсказка под полем, текст с выделением или ссылкойtooltips-text.md
Картинка, значок в колонке, иконка по значениюpictures.md
Печатная форма или отчёт на форме (табличный документ)spreadsheet.md
HTML, текстовый документ, индикатор, ползунок, календарь, периодspecial-fields.md
Диаграмма, диаграмма Ганта, планировщикcharts.md
Модальность, размер, прокрутка, Enter, свойства формы документа (время, проведение)form-properties.md
Форма отчёта (СКД)report-form.md
Сохранить значение в настройках, проверка заполнения, функциональные опции, тип элементов списка значенийattributes-advanced.md
Видимость и доступ по ролямroles-access.md
Командный интерфейс формы (переходы, важные команды)command-interface.md
Выравнивание, предел размера, фокус по умолчанию, узкие экраныlayout-advanced.md
Наборы и составные типыtype-system-advanced.md

Workflow

  1. Каркас: /form-add создаёт метаданные формы, Module.bsl и регистрирует форму у объекта.
  2. Компиляция: /form-compile наполняет Form.xml.
  3. Проверка: /form-validate, /form-info.

Внешние обработки (EPF)

  • Основной реквизит: ExternalDataProcessorObject.ИмяОбработки (не DataProcessorObject)
  • Пути данных: реквизиты формы (ИмяРеквизита), а не Объект.ИмяРеквизита — у внешней обработки нет реквизитов объекта в метаданных
  • Ссылочные типы (CatalogRef.XXX и т.п.) допустимы, но для сборки EPF нужна база с целевой конфигурацией (см. /epf-build)

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

cf-edit

無料

Точечное редактирование конфигурации 1С. Используй когда нужно изменить свойства конфигурации, добавить или удалить объект из состава, настроить роли по умолчанию, поменять раскладку панелей, настроить начальную страницу

日本語の概要は準備中です。原文の説明を表示しています。

Nikolay-Shirokov/cc-1c-skills6832026年10月12日 更新

cf-info

無料

Анализ структуры конфигурации 1С — свойства, состав, счётчики объектов. Используй для обзора конфигурации — какие объекты есть, сколько их, какие настройки

日本語の概要は準備中です。原文の説明を表示しています。

Nikolay-Shirokov/cc-1c-skills6832026年10月12日 更新

cf-init

無料

Создать пустую конфигурацию 1С (scaffold XML-исходников). Используй когда нужно начать новую конфигурацию с нуля

日本語の概要は準備中です。原文の説明を表示しています。

Nikolay-Shirokov/cc-1c-skills6832026年10月12日 更新

Валидация конфигурации 1С. Используй после создания или модификации конфигурации для проверки корректности

日本語の概要は準備中です。原文の説明を表示しています。

Nikolay-Shirokov/cc-1c-skills6832026年10月12日 更新

Заимствование объектов из конфигурации 1С в расширение (CFE). Используй когда нужно перехватить метод, изменить форму или добавить реквизит к существующему объекту конфигурации

日本語の概要は準備中です。原文の説明を表示しています。

Nikolay-Shirokov/cc-1c-skills6832026年10月12日 更新

cfe-diff

無料

Анализ расширения конфигурации 1С (CFE) — состав, заимствованные объекты, перехватчики, проверка переноса. Используй когда нужно понять что содержит расширение или проверить перенесены ли вставки в конфигурацию

日本語の概要は準備中です。原文の説明を表示しています。

Nikolay-Shirokov/cc-1c-skills6832026年10月12日 更新

Nikolay-Shirokov のスキルをすべて見る

このスキルの問題を報告する