Files
cc-1c-skills/.claude/skills/form-compile/presets/README.md
T
Nick Shirokov 82e70d2c30 feat(skd-compile,form-compile): Phase 3 — project-level presets
- skd-compile v1.12: scan-up from OutputPath for presets/skills/skd/skd-styles.json (PS1+PY)
- form-compile presets/README.md: full preset documentation (sections, keys, enums, example)
- docs/form-guide.md: --from-object mode + project-level presets sections
- skd-compile SKILL.md: updated styles search path description

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 11:08:22 +03:00

6.7 KiB

Form Presets

Пресеты управляют раскладкой форм, генерируемых в режиме --from-object.

Как работает

Цепочка merge (каждый следующий уровень перезаписывает предыдущий через deep merge):

  1. Hardcoded defaults -- встроены в скрипт, ориентированы на ERP
  2. Built-in preset -- файл из этой папки (erp-standard.json по умолчанию)
  3. Project-level preset -- файл presets/skills/form/<name>.json, поиск вверх от OutputPath

Имя пресета задаётся параметром --preset (по умолчанию erp-standard).

Project-level пресет

Чтобы переопределить стандартный пресет в своём проекте, создайте файл:

<project-root>/presets/skills/form/erp-standard.json

Скрипт ищет этот файл, поднимаясь от OutputPath к корню. Первый найденный файл применяется поверх built-in через deep merge -- не нужно копировать весь пресет, достаточно указать только переопределяемые ключи.

Секции

Ключи верхнего уровня в JSON -- секции вида {тип}.{назначение}:

Секция Тип объекта Назначение формы
document.item Document Форма документа
document.list Document Форма списка
document.choice Document Форма выбора
catalog.item Catalog Форма элемента
catalog.folder Catalog Форма группы
catalog.list Catalog Форма списка
catalog.choice Catalog Форма выбора
informationRegister.record InformationRegister Форма записи
informationRegister.list InformationRegister Форма списка
accumulationRegister.list AccumulationRegister Форма списка
chartOfCharacteristicTypes.* ChartOfCharacteristicTypes item/folder/list/choice
exchangePlan.* ExchangePlan item/list/choice
chartOfAccounts.* ChartOfAccounts item/folder/list/choice

basedOn

Секция может наследовать от другой:

{
  "document.choice": {
    "basedOn": "document.list",
    "properties": { "windowOpeningMode": "LockOwnerWindow" }
  }
}

Ключи секций

Форма объекта (Item/Record)

Ключ Описание Допустимые значения
header.position Где размещать шапку "insidePage" -- на первой странице, "abovePages" -- над страницами
header.layout Колонки шапки "1col", "2col"
header.distribute Распределение в 2 колонках "even", "left", "right"
header.dateTitle Заголовок даты (Document) строка, напр. "от"
footer.fields Поля в подвале массив имён реквизитов, напр. ["Комментарий"]
footer.position Где размещать подвал "insidePage", "belowPages", "none"
tabularSections.container Контейнер табчастей "pages" -- на вкладках, "inline" -- в корне, "single-no-pages" -- одна ТЧ без страниц
tabularSections.exclude Исключить табчасти массив имён, напр. ["ДополнительныеРеквизиты"]
tabularSections.lineNumber Колонка НомерСтроки true / false
additional.position Блок доп. реквизитов "page" -- отдельная вкладка, "below" -- под табчастями, "none" -- не создавать
additional.layout Колонки доп. блока "1col", "2col"
additional.bspGroup Группа ДополнительныеРеквизиты true / false
codeDescription.layout Код + Наименование "horizontal", "vertical"
codeDescription.order Порядок Код/Наименование "descriptionFirst", "codeFirst"
parent.title Заголовок поля Родитель строка, напр. "Входит в группу"
parent.position Позиция поля Родитель "beforeCodeDescription", "afterCodeDescription", "inHeader"
owner.readOnly Владелец только для чтения true / false
owner.position Позиция поля Владелец "first"
fieldDefaults.ref.choiceButton Кнопка выбора для ссылок true / false
fieldDefaults.boolean.element Элемент для Boolean "check" (флажок)
commandBar Командная панель формы "auto", "none"
properties Свойства формы объект: autoTitle, windowOpeningMode и др.

Форма списка (List/Choice)

Ключ Описание Допустимые значения
columns Какие колонки показывать "all" -- все реквизиты, или массив имён
columnType Тип элемента колонки "labelField", "input"
hiddenRef Скрытая колонка Ref true / false
tableCommandBar Командная панель таблицы "auto", "none"
commandBar Командная панель формы "auto", "none"
choiceMode Режим выбора (ChoiceForm) true / false
properties Свойства формы объект: windowOpeningMode и др.

Пример project-level пресета

{
  "name": "my-project",
  "description": "Стиль форм нашего проекта",

  "document.item": {
    "header": {
      "layout": "1col"
    },
    "tabularSections": {
      "exclude": ["ДополнительныеРеквизиты", "СведенияОСертификатах"]
    },
    "additional": {
      "position": "none"
    }
  },

  "catalog.item": {
    "codeDescription": {
      "order": "codeFirst"
    }
  }
}

Этот файл переопределяет только указанные ключи -- остальное наследуется из built-in пресета.