From 5988c81244c1b88452c250bb639264030a17b37c Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sat, 11 Jul 2026 15:10:52 +0300 Subject: [PATCH] =?UTF-8?q?docs(meta-compile):=20=D1=80=D0=B5=D0=BA=D0=BE?= =?UTF-8?q?=D0=BC=D0=BF=D0=BE=D0=BD=D0=BE=D0=B2=D0=BA=D0=B0=20reference=20?= =?UTF-8?q?=D0=BF=D0=BE=20=D1=81=D0=BB=D0=BE=D1=8E+=D1=84=D0=BE=D1=80?= =?UTF-8?q?=D0=BC=D0=B5=20DSL,=20usage-=D0=B3=D0=BE=D0=BB=D0=BE=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Порезал документацию по слою абстракции и форме DSL вместо внутренней таксономии 1С: тонкий SKILL.md с двухосевым индексом + 13 reference-файлов (по типу/семейству + кросс-типовые attributes.md/blocks.md) взамен 4 types-*.md. Вынес в поставку объектную форму реквизита/ТЧ и блоки объекта (fillValue, choiceParameters, представления, команды, predefined и т.д.) — раньше жили только в dev-спеке, модель их не видела. Usage-голос: каноничная форма, дефолты, значения перечислений; без внутряка (синонимы/резолв/декомпилятор, колонка XML). Починены противоречия дефолтов и убраны фантомные свойства (по аудиту компилятора). Co-Authored-By: Claude Opus 4.8 (1M context) --- .claude/skills/meta-compile/SKILL.md | 138 ++++++++------ .../meta-compile/reference/attributes.md | 139 ++++++++++++++ .../skills/meta-compile/reference/blocks.md | 98 ++++++++++ .../skills/meta-compile/reference/catalog.md | 71 +++++++ .../skills/meta-compile/reference/charts.md | 103 +++++++++++ .claude/skills/meta-compile/reference/code.md | 56 ++++++ .../skills/meta-compile/reference/document.md | 79 ++++++++ .../meta-compile/reference/exchangeplan.md | 41 +++++ .../meta-compile/reference/other-types.md | 87 +++++++++ .../skills/meta-compile/reference/process.md | 49 +++++ .../meta-compile/reference/registers.md | 76 ++++++++ .../reference/report-dataprocessor.md | 45 +++++ .../skills/meta-compile/reference/simple.md | 40 ++++ .../meta-compile/reference/types-basic.md | 116 ------------ .../meta-compile/reference/types-process.md | 136 -------------- .../meta-compile/reference/types-registers.md | 174 ------------------ .../meta-compile/reference/types-web.md | 103 ----------- .claude/skills/meta-compile/reference/web.md | 57 ++++++ 18 files changed, 1018 insertions(+), 590 deletions(-) create mode 100644 .claude/skills/meta-compile/reference/attributes.md create mode 100644 .claude/skills/meta-compile/reference/blocks.md create mode 100644 .claude/skills/meta-compile/reference/catalog.md create mode 100644 .claude/skills/meta-compile/reference/charts.md create mode 100644 .claude/skills/meta-compile/reference/code.md create mode 100644 .claude/skills/meta-compile/reference/document.md create mode 100644 .claude/skills/meta-compile/reference/exchangeplan.md create mode 100644 .claude/skills/meta-compile/reference/other-types.md create mode 100644 .claude/skills/meta-compile/reference/process.md create mode 100644 .claude/skills/meta-compile/reference/registers.md create mode 100644 .claude/skills/meta-compile/reference/report-dataprocessor.md create mode 100644 .claude/skills/meta-compile/reference/simple.md delete mode 100644 .claude/skills/meta-compile/reference/types-basic.md delete mode 100644 .claude/skills/meta-compile/reference/types-process.md delete mode 100644 .claude/skills/meta-compile/reference/types-registers.md delete mode 100644 .claude/skills/meta-compile/reference/types-web.md create mode 100644 .claude/skills/meta-compile/reference/web.md diff --git a/.claude/skills/meta-compile/SKILL.md b/.claude/skills/meta-compile/SKILL.md index a50f3cae..ac0e4461 100644 --- a/.claude/skills/meta-compile/SKILL.md +++ b/.claude/skills/meta-compile/SKILL.md @@ -9,18 +9,16 @@ allowed-tools: - Glob --- -# /meta-compile — генерация объектов метаданных из JSON DSL +# /meta-compile — генерация объектов метаданных из JSON -Принимает JSON-определение объекта метаданных → генерирует XML + модули в структуре выгрузки конфигурации + регистрирует в Configuration.xml. +Принимает JSON-определение объекта → генерирует XML + модули в структуре выгрузки конфигурации и +регистрирует объект в `Configuration.xml`. ## Порядок работы -1. Составь JSON по синтаксису и примерам ниже → запиши во временный файл -2. Запусти скрипт meta-compile -3. Если нужно изменить созданный объект — `/meta-edit` -4. Если нужно проверить — `/meta-validate` - -## Команда +1. Составь JSON по синтаксису ниже → запиши во временный файл. +2. Запусти скрипт. +3. Изменить созданный объект — `/meta-edit`; проверить — `/meta-validate`. ```powershell powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/meta-compile.ps1" -JsonPath "" -OutputDir "" @@ -28,92 +26,110 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/meta-compile.ps1" - | Параметр | Описание | |----------|----------| -| `JsonPath` | Путь к JSON-файлу (один объект `{...}` или массив `[{...}, ...]`) | -| `OutputDir` | Корень выгрузки конфигурации (где `Configuration.xml`, `Catalogs/`, `Documents/` и т.д.) | +| `JsonPath` | Путь к JSON-файлу | +| `OutputDir` | Корень выгрузки конфигурации (где `Configuration.xml`, `Catalogs/`, `Documents/`, …) | -## JSON DSL +## Формат JSON -### Общая структура +**Один объект** `{ ... }` или **массив** объектов `[{ ... }, { ... }]` (batch — несколько объектов за прогон). ```json -{ "type": "Catalog", "name": "Номенклатура", ...свойства типа... } +{ "type": "Catalog", "name": "Номенклатура", "...свойства типа...": "..." } ``` -`type` и `name` — обязательные. `synonym` генерируется из `name` автоматически (CamelCase → слова через пробел). Можно задать явно: `"synonym": "Мой синоним"`. +`type` и `name` — обязательные. Остальное — по типу (см. индекс ниже). `synonym` по умолчанию выводится из +`name` (CamelCase → слова через пробел); можно задать явно строкой или мультиязычно: `"synonym": { "ru": "…", "en": "…" }`. -### Shorthand реквизитов +## Реквизиты (shorthand) -Используется в `attributes`, `dimensions`, `resources`, `tabularSections`: +Массивы `attributes`, `dimensions`, `resources` и колонки в `tabularSections` задаются строками: ``` -"ИмяРеквизита" → String(10) по умолчанию -"ИмяРеквизита: Тип" → с типом -"ИмяРеквизита: Тип | req, index" → с флагами +"Имя" → String(10) +"Имя: Тип" → с типом +"Имя: Тип | req, index" → с флагами ``` -Типы: `String(100)`, `Number(15,2)`, `Boolean`, `Date`, `DateTime`, `CatalogRef.Xxx`, `DocumentRef.Xxx`, `EnumRef.Xxx`, `DefinedType.Xxx` и др. ссылочные. +**Типы:** `String(100)`, `String(10, fixed)` (фикс. длина), `Number(15,2)`, `Boolean`, `Date`, `DateTime`, +`Time`, ссылочные `CatalogRef.Xxx` / `DocumentRef.Xxx` / `EnumRef.Xxx` / `DefinedType.Xxx` и т.п. +Составной тип — через `+`: `"Значение: String + Number(15,2) + CatalogRef.Контрагенты"`. -Составной тип: `"Значение: String + Number(15,2) + CatalogRef.Контрагенты"`. +**Флаги** (после `|`, через запятую): -Флаги: `req`, `index`, `indexAdditional`, `nonneg`, `master`, `mainFilter`, `denyIncomplete`, `useInTotals`. +| Флаг | Значение | Где | +|------|----------|-----| +| `req` | обязательное заполнение | attributes, dimensions, resources | +| `index` | индексировать | attributes, dimensions | +| `indexAdditional` | индекс с доп. упорядочиванием | attributes | +| `multiline` | многострочное поле | attributes | +| `nonneg` | неотрицательное (Number) | attributes, resources | +| `master` | ведущее измерение | dimensions (регистры) | +| `mainFilter` | основной отбор | dimensions (регистры) | +| `denyIncomplete` | запрет незаполненных | dimensions | +| `useInTotals` | использовать в итогах | dimensions (регистр накопления) | -### Свойства по типам +Реквизиту нужны свойства сверх shorthand (значение заполнения, параметры выбора, формат, подсказка, …) — +задаётся **объектной формой**, см. `reference/attributes.md`. -Примеров и shorthand-синтаксиса выше достаточно для типовых задач. Если нужны свойства типа, не показанные в примерах, и их допустимые значения — см. reference-файл: - -- `reference/types-basic.md` — Catalog, Document, Enum, Constant, DefinedType, Report, DataProcessor -- `reference/types-registers.md` — InformationRegister, AccumulationRegister, AccountingRegister, CalculationRegister, ChartOfAccounts, ChartOfCharacteristicTypes, ChartOfCalculationTypes -- `reference/types-process.md` — BusinessProcess, Task, ExchangePlan, CommonModule, ScheduledJob, EventSubscription, DocumentJournal -- `reference/types-web.md` — HTTPService, WebService - -Эта инструкция и reference-файлы — полная документация для генерации. Не ищи примеры XML в выгрузках конфигураций. - -## Примеры паттернов DSL - -### Минимальный объект +## Табличные части ```json -{ "type": "Catalog", "name": "Валюты" } +"tabularSections": { "Товары": ["Номенклатура: CatalogRef.Номенклатура", "Количество: Number(15,3)"] } ``` -### С реквизитами +Ключ — имя ТЧ, значение — массив колонок (shorthand) ЛИБО объект со свойствами ТЧ (см. `reference/attributes.md`). +## Индекс: свойства по типам + +Для каждого типа — свой reference-файл со свойствами, дефолтами и допустимыми значениями: + +| Тип(ы) | Файл | +|--------|------| +| Catalog (справочник) | `reference/catalog.md` | +| Document, DocumentJournal, Sequence, DocumentNumerator | `reference/document.md` | +| InformationRegister, AccumulationRegister, AccountingRegister, CalculationRegister | `reference/registers.md` | +| ChartOfAccounts, ChartOfCharacteristicTypes, ChartOfCalculationTypes | `reference/charts.md` | +| ExchangePlan | `reference/exchangeplan.md` | +| BusinessProcess, Task | `reference/process.md` | +| Report, DataProcessor | `reference/report-dataprocessor.md` | +| CommonModule, ScheduledJob, EventSubscription | `reference/code.md` | +| HTTPService, WebService | `reference/web.md` | +| Enum, Constant, DefinedType | `reference/simple.md` | +| FunctionalOption, FilterCriterion, SettingsStorage, CommonForm, CommonPicture, CommonTemplate, служебные | `reference/other-types.md` | + +Кросс-типовые детали: +- **`reference/attributes.md`** — объектная форма реквизита и колонки ТЧ (значение заполнения, параметры + выбора, формат, подсказка, границы, …) + свойства самой ТЧ. +- **`reference/blocks.md`** — блоки объекта: представления, команды (+ характеристики/стандартные реквизиты). + +Эта инструкция и reference-файлы — полная документация. Не ищи примеры XML в выгрузках конфигураций. + +## Примеры + +Справочник с реквизитами: ```json -{ - "type": "Catalog", "name": "Организации", - "descriptionLength": 100, - "attributes": ["ИНН: String(12)", "КПП: String(9)", "Директор: CatalogRef.ФизическиеЛица"] -} +{ "type": "Catalog", "name": "Организации", "descriptionLength": 100, + "attributes": ["ИНН: String(12)", "КПП: String(9)", "Директор: CatalogRef.ФизическиеЛица"] } ``` -### С табличной частью - +Документ с движениями и ТЧ: ```json -{ - "type": "Document", "name": "ПриходнаяНакладная", +{ "type": "Document", "name": "ПриходнаяНакладная", "registerRecords": ["AccumulationRegister.ОстаткиТоваров"], "attributes": ["Организация: CatalogRef.Организации", "Контрагент: CatalogRef.Контрагенты"], - "tabularSections": { "Товары": ["Номенклатура: CatalogRef.Номенклатура", "Количество: Number(15,3)", "Цена: Number(15,2)"] } -} + "tabularSections": { "Товары": ["Номенклатура: CatalogRef.Номенклатура", "Количество: Number(15,3)", "Цена: Number(15,2)"] } } ``` -### Регистровый паттерн (измерения + ресурсы) - +Регистр сведений: ```json -{ - "type": "InformationRegister", "name": "КурсыВалют", "periodicity": "Day", +{ "type": "InformationRegister", "name": "КурсыВалют", "periodicity": "Day", "dimensions": ["Валюта: CatalogRef.Валюты | master, mainFilter, denyIncomplete"], - "resources": ["Курс: Number(15,4)", "Кратность: Number(10,0)"] -} + "resources": ["Курс: Number(15,4)", "Кратность: Number(10,0)"] } ``` -### Batch — несколько объектов в одном файле - +Batch: ```json -[ - { "type": "Enum", "name": "Статусы", "values": ["Новый", "Закрыт"] }, +[ { "type": "Enum", "name": "Статусы", "values": ["Новый", "Закрыт"] }, { "type": "Catalog", "name": "Валюты" }, - { "type": "Constant", "name": "ОсновнаяВалюта", "valueType": "CatalogRef.Валюты" } -] + { "type": "Constant", "name": "ОсновнаяВалюта", "valueType": "CatalogRef.Валюты" } ] ``` - diff --git a/.claude/skills/meta-compile/reference/attributes.md b/.claude/skills/meta-compile/reference/attributes.md new file mode 100644 index 00000000..f38c8d05 --- /dev/null +++ b/.claude/skills/meta-compile/reference/attributes.md @@ -0,0 +1,139 @@ +# Объектная форма реквизита и табличной части + +Когда реквизиту (в `attributes` / `dimensions` / `resources` / колонках ТЧ) нужны свойства сверх +shorthand — вместо строки задаётся объект: + +```json +{ "name": "Цена", "type": "Number(15,2)", "tooltip": "Цена за единицу", "fillValue": 0 } +``` + +`name` и `type` обязательны (тип можно задать и раздельно: `"type": "Number", "length": 15, "precision": 2`). +Остальные ключи — ниже, все со значением по умолчанию (не задавать, если устраивает дефолт). + +## Свойства реквизита + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `synonym` | из имени | ML (строка или `{ru,en}`) | +| `tooltip` | пусто | ML | +| `comment` | пусто | строка | +| `fillChecking` | `DontCheck` | `DontCheck` / `ShowError` / `ShowWarning` (то же, что флаг `req`) | +| `fullTextSearch` | `Use` | `Use` / `DontUse` | +| `fillFromFillingValue` | `false` | bool | +| `fillValue` | по типу (см. ниже) | значение заполнения | +| `createOnInput` | `Auto` | `Auto` / `Use` / `DontUse` | +| `quickChoice` | `Auto` | `Auto` / `Use` / `DontUse` | +| `choiceHistoryOnInput` | `Auto` | `Auto` / `DontUse` | +| `dataHistory` | `Use` | `Use` / `DontUse` | +| `use` | `ForItem` | `ForItem` / `ForFolder` / `ForFolderAndItem` (реквизит иерархического справочника) | +| `passwordMode` | `false` | bool | +| `multiLine` | `false` | bool (то же, что флаг `multiline`) | +| `extendedEdit` | `false` | bool (расширенное редактирование — многострочный ввод) | +| `mask` | пусто | строка маски ввода | +| `format` / `editFormat` | пусто | форматная строка 1С (ML) | +| `markNegatives` | `false` | bool (выделять отрицательные, для Number) | +| `minValue` / `maxValue` | не задано | граница диапазона (см. ниже) | +| `choiceParameterLinks` | пусто | связи параметров выбора (см. ниже) | +| `choiceParameters` | пусто | параметры выбора (см. ниже) | +| `choiceForm` | пусто | ссылка на форму выбора `Тип.Объект.Form.ИмяФормы` | +| `choiceFoldersAndItems` | `Items` | `Items` / `Folders` / `FoldersAndItems` (что выбирать в иерарх. справочнике) | + +Индексирование задаётся флагом `index` / `indexAdditional` в shorthand, либо в объекте — как и в строковой форме, +через `"type": "… | index"`. + +### `fillValue` — значение заполнения + +Пустое значение по типу компилятор подставляет сам — ключ **не задают**: + +| Тип реквизита | Пустое значение | +|---------------|-----------------| +| String | пустая строка | +| Number | `0` | +| Boolean, Date, ссылочный, составной | не задано (nil) | + +Ключ `fillValue` задают для **конкретного** значения — интерпретируется по типу реквизита: + +- **Boolean** — `true` / `false`. +- **Number** — число (`21`, `1.5`). +- **String** — строка. +- **Date** — ISO-строка `"2020-01-01T00:00:00"`. +- **Ссылочный** — путь: `"Catalog.Валюты.EmptyRef"` (пустая ссылка), `"Enum.Периодичность.EnumValue.Месяц"` + (значение перечисления), `"Catalog.СтраныМира.Россия"` (предопределённый элемент). +- **`null`** — явно «значение не задано» (nil), когда нужно перекрыть непустой дефолт типа. +- **`{ "emptyRef": true }`** — пустая ссылка для реквизита типа `DefinedType.X` (когда тип из пути не выводится). + +> Пустая ссылка (`EmptyRef`) и `null` — разное: платформа хранит их отдельно. + +### `minValue` / `maxValue` — границы диапазона + +Число → числовая граница; строка → строковая (напр. год `"2000"`). Без ключа — граница не задана. + +### `choiceParameterLinks` — связи параметров выбора + +Связывают параметр выбора этого реквизита с другим реквизитом объекта. Массив строк или объектов: + +```json +"choiceParameterLinks": ["Отбор.Организация=Организация", "Отбор.Договор=Договор:DontChange"] +"choiceParameterLinks": [{ "name": "Отбор.Организация", "dataPath": "Организация", "valueChange": "Clear" }] +``` + +- `dataPath` — реквизит **того же объекта**: имя обычного реквизита (`"Организация"`) или стандартного + (`"Владелец"`, `"Ссылка"`). +- `valueChange` — `Clear` (по умолчанию) / `DontChange`. + +### `choiceParameters` — параметры выбора + +Фиксируют параметр выбора значением. Массив строк или объектов: + +```json +"choiceParameters": ["Отбор.ЭтоГруппа=false"] +"choiceParameters": [{ "name": "Отбор.Владелец", "value": "Catalog.Организации.EmptyRef" }] +``` + +- `value` — bool / число / строка / ссылочный путь (несёт тип) ИЛИ массив (список фиксированных значений). +- Для набора голых имён-значений добавьте `type` (тип поля-фильтра), чтобы они стали ссылками: + `{ "name": "Отбор.Тип", "type": "EnumRef.ТипыВЕТИС", "value": ["EmptyRef", "ТТН"] }`. + +### Редкие ключи + +`linkByType` — связь по типу (тип реквизита-Характеристики берётся из другого реквизита): +`{ "dataPath": "Свойство", "linkItem": 0 }` или строка-путь. Применяется для реквизитов-характеристик. + +--- + +## Табличная часть — объектная форма + +Значение в `tabularSections` — массив колонок ЛИБО объект со свойствами самой ТЧ: + +```json +"tabularSections": { + "Товары": { + "synonym": { "ru": "Товары", "en": "Goods" }, + "tooltip": "Строки заказа", + "fillChecking": "ShowError", + "attributes": ["Номенклатура: CatalogRef.Номенклатура", "Количество: Number(15,3)"] + } +} +``` + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `synonym` | из имени | ML | +| `tooltip` | пусто | ML | +| `comment` | пусто | строка | +| `fillChecking` | `DontCheck` | `DontCheck` / `ShowError` / `ShowWarning` (обязательность заполнения ТЧ) | +| `use` | `ForItem` | `ForItem` / `ForFolder` / `ForFolderAndItem` (только Catalog / ChartOfCharacteristicTypes) | +| `attributes` | `[]` | колонки (shorthand или объектная форма реквизита) | +| `lineNumber` | — | кастомизация стандартного реквизита НомерСтроки (см. ниже) | + +### `lineNumber` — стандартный реквизит НомерСтроки + +У каждой ТЧ есть стандартный реквизит НомерСтроки. По умолчанию все его свойства типовые. Ключ `lineNumber` +на объектной форме ТЧ их переопределяет: + +```json +"Строки": { "lineNumber": { "synonym": "Номер п/п", "fullTextSearch": "DontUse" }, "attributes": [...] } +``` + +Переопределяемые: `synonym`, `comment`, `fullTextSearch` (`Use`/`DontUse`), `tooltip`, `format`, `editFormat`, +`choiceHistoryOnInput` (`Auto`/`DontUse`). diff --git a/.claude/skills/meta-compile/reference/blocks.md b/.claude/skills/meta-compile/reference/blocks.md new file mode 100644 index 00000000..86bd7078 --- /dev/null +++ b/.claude/skills/meta-compile/reference/blocks.md @@ -0,0 +1,98 @@ +# Блоки объекта + +Кросс-типовые блоки уровня объекта (применимы к ссылочным типам — Catalog, Document, ChartOf*, ExchangePlan, +BusinessProcess, Task и др.). + +## Представления + +Тексты представления объекта в интерфейсе (ML — строка или `{ru,en}`, по умолчанию пусто): + +| Ключ | Смысл | +|------|-------| +| `objectPresentation` | представление объекта | +| `extendedObjectPresentation` | расширенное представление объекта | +| `listPresentation` | представление списка | +| `extendedListPresentation` | расширенное представление списка | +| `explanation` | пояснение | + +Набор доступных ключей зависит от типа (у списочных без формы объекта нет `objectPresentation` и т.п.). + +```json +"listPresentation": "Организации", "objectPresentation": { "ru": "Организация", "en": "Company" } +``` + +## Команды + +Команды объекта. Ключ — имя команды, значение — объект свойств (map `имя → объект` или массив `[{name, …}]`). +Для каждой команды создаётся заготовка модуля с обработчиком `ОбработкаКоманды`. + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `synonym` | из имени | ML | +| `tooltip` | пусто | ML | +| `comment` | пусто | строка | +| `group` | пусто | группа команд (`FormCommandBarImportant`, `FormNavigationPanelGoTo`, …) | +| `commandParameterType` | пусто | тип параметра (напр. `CatalogRef.Номенклатура`) | +| `parameterUseMode` | `Single` | `Single` / `Multiple` | +| `modifiesData` | `false` | bool | +| `representation` | `Auto` | вид отображения | +| `picture` | пусто | ссылка на картинку (`StdPicture.Print`, `CommonPicture.Загрузка`) | +| `shortcut` | пусто | сочетание клавиш | + +```json +"commands": { + "ПечатьЭтикеток": { "synonym": "Печать этикеток", "group": "FormCommandBarImportant", + "commandParameterType": "CatalogRef.Номенклатура", "picture": "StdPicture.Print" } +} +``` + +## `inputByString` / `dataLockFields` / `basedOn` + +Списки полей/объектов уровня объекта. Поля — по имени реквизита объекта (обычного или стандартного). + +- **`inputByString`** — поля быстрого ввода по строке. По умолчанию выводятся из Кода/Наименования — ключ не нужен; + задать при другом наборе/порядке, либо `[]` для отключения. + ```json + "inputByString": ["Код", "Наименование", "Контрагент"] + ``` +- **`dataLockFields`** — поля управляемой блокировки данных (по умолчанию пусто). + ```json + "dataLockFields": ["Организация", "Контрагент"] + ``` +- **`basedOn`** — «ввод на основании»: список ссылок на объекты метаданных (по умолчанию пусто). + ```json + "basedOn": ["Catalog.Контрагенты", "Document.ЗаказПоставщику"] + ``` + +## `standardAttributes` — кастомизация стандартных реквизитов + +Стандартные реквизиты объекта (Наименование, Код, Владелец, …) переопределяются блоком +`standardAttributes` — объект `{ ИмяРеквизита: { переопределения } }`. Имена — как в 1С: `Description`, `Code`, +`Owner`, `Parent`, `DeletionMark`, `Ref` и т.д. (для Document — `Date`, `Number`, `Posted`). + +Переопределяемые поля — как у обычного реквизита (`synonym`, `tooltip`, `fillChecking`, `fillValue`, +`choiceParameters`, `comment`, `mask`, `choiceForm`; полный набор — `attributes.md`). + +```json +"standardAttributes": { + "Description": { "synonym": "Наименование контрагента" }, + "Code": { "fillChecking": "ShowError" } +} +``` + +## `characteristics` — «Дополнительные реквизиты и сведения» + +Привязка плана видов характеристик. Массив; каждый элемент связывает **источник типов** (где определены +характеристики) и **источник значений** (где хранятся значения). + +```json +"characteristics": [{ + "types": { "from": "Catalog.НаборыДопРеквизитов.ДополнительныеРеквизиты", + "key": "Свойство", "filterField": "Ссылка", "filterValue": "Справочник_Организации" }, + "values": { "from": "Catalog.Организации.TabularSection.ДополнительныеРеквизиты", + "object": "Ссылка", "type": "Свойство", "value": "Значение" } +}] +``` + +- `from` — таблица-источник; `key`/`filterField`/`object`/`type`/`value` — поля источника (по имени реквизита). +- `filterValue` — значение фильтра типов: имя предопределённого набора (строка) или путь к элементу. diff --git a/.claude/skills/meta-compile/reference/catalog.md b/.claude/skills/meta-compile/reference/catalog.md new file mode 100644 index 00000000..92b36e93 --- /dev/null +++ b/.claude/skills/meta-compile/reference/catalog.md @@ -0,0 +1,71 @@ +# Catalog (Справочник) + +```json +{ "type": "Catalog", "name": "Организации", "descriptionLength": 100, + "attributes": ["ИНН: String(12)", "КПП: String(9)"] } +``` + +## Свойства + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `comment` | пусто | строка | +| `hierarchical` | `false` | bool | +| `hierarchyType` | `HierarchyFoldersAndItems` | `HierarchyFoldersAndItems` / `HierarchyOfItems` | +| `limitLevelCount` | `false` | bool (ограничивать кол-во уровней) | +| `levelCount` | `2` | число уровней (при `limitLevelCount`) | +| `foldersOnTop` | `true` | bool (группы сверху) | +| `owners` | `[]` | массив ссылок-владельцев: `["CatalogRef.Контрагенты"]` | +| `subordinationUse` | `ToItems` | `ToItems` / `ToFolders` / `ToFoldersAndItems` (кому подчинён) | +| `codeLength` | `9` | длина кода (0 — без кода) | +| `codeType` | `String` | `String` / `Number` | +| `codeAllowedLength` | `Variable` | `Variable` / `Fixed` | +| `codeSeries` | `WholeCatalog` | `WholeCatalog` / `WithinSubordination` / `WithinOwnerSubordination` | +| `autonumbering` | `true` | bool (автонумерация) | +| `checkUnique` | `false` | bool (контроль уникальности кода) | +| `descriptionLength` | `25` | длина наименования | +| `defaultPresentation` | `AsDescription` | `AsDescription` / `AsCode` | +| `quickChoice` | `true` | bool (быстрый выбор) | +| `choiceMode` | `BothWays` | `BothWays` / `QuickChoice` / `FromForm` | +| `editType` | `InDialog` | `InDialog` / `InList` / `BothWays` | +| `createOnInput` | `Use` | `Auto` / `Use` / `DontUse` | +| `choiceHistoryOnInput` | `Auto` | `Auto` / `DontUse` | +| `fullTextSearch` | `Use` | `Use` / `DontUse` | +| `fullTextSearchOnInputByString` | `DontUse` | `Use` / `DontUse` | +| `searchStringModeOnInputByString` | `Begin` | `Begin` / `AnyPart` | +| `predefinedDataUpdate` | `Auto` | `Auto` / `DontAutoUpdate` / `AutoUpdate` | +| `dataLockControlMode` | `Managed` | `Automatic` / `Managed` | +| `useStandardCommands` | `true` | bool | +| `includeHelpInContents` | `false` | bool | +| `attributes` | `[]` | реквизиты (shorthand / объектная форма) | +| `tabularSections` | `{}` | табличные части | + +**Формы.** Ссылка на форму — `Тип.Объект.Form.ИмяФормы` (напр. `Catalog.Организации.Form.ФормаЭлемента`). +Слоты основных форм: `defaultObjectForm`, `defaultFolderForm`, `defaultListForm`, `defaultChoiceForm`, +`defaultFolderChoiceForm`; вспомогательных — те же имена с префиксом `auxiliary` (`auxiliaryObjectForm`, …). + +## `predefined` — предопределённые элементы + +Массив предопределённых элементов → `Ext/Predefined.xml`. Элемент — строка (плоский случай) или объект (иерархия). + +**Строка:** `"(Код) Имя [Наименование]"` — `Имя` обязательно; `(Код)` и `[Наименование]` опциональны. +Без `[...]` наименование выводится из имени; `[]` — пустое; `[текст]` — заданное. + +```json +"predefined": [ + "Основной", + "(1) ДокументОПриемке [Документ о приемке]", + { "name": "Группа1", "isFolder": true, "description": "Прочие", + "childItems": ["Факс", "(7) Скайп"] } +] +``` + +**Объект:** `name` (обязательно), `code`, `description` (наименование), `isFolder` (признак группы), +`childItems` (вложенные, рекурсивно). Тип кода — по свойству `codeType`. + +## Дополнительно + +- Свойства реквизитов и табличных частей — `attributes.md`. +- Представления (`objectPresentation`, `listPresentation`, …), команды объекта, характеристики + («ДопРеквизиты и сведения»), кастомизация стандартных реквизитов, `inputByString` / `dataLockFields` / + `basedOn` — `blocks.md`. diff --git a/.claude/skills/meta-compile/reference/charts.md b/.claude/skills/meta-compile/reference/charts.md new file mode 100644 index 00000000..308c1830 --- /dev/null +++ b/.claude/skills/meta-compile/reference/charts.md @@ -0,0 +1,103 @@ +# Планы: ChartOfCharacteristicTypes, ChartOfAccounts, ChartOfCalculationTypes + +Все три — ссылочные типы (наследуют слой Catalog: коды, `standardAttributes`, `characteristics`, `inputByString`, +формы, представления — см. `catalog.md` / `attributes.md` / `blocks.md`) с предопределёнными элементами и своими +специальными свойствами. + +## ChartOfCharacteristicTypes (План видов характеристик) + +Хранит определения характеристик (видов). Иерархический (папки+элементы). + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `valueType` | любой примитив | тип значения характеристики (составной — строка `"A + B"` или массив `valueTypes`) | +| `characteristicExtValues` | пусто | ссылка на справочник доп. значений | +| `hierarchical` | `false` | bool | +| `foldersOnTop` | `true` | bool | +| `codeLength` | `9` | длина кода | +| `descriptionLength` | `100` | длина наименования | +| `checkUnique` | `true` | bool | +| `autonumbering` | `true` | bool | +| `codeSeries` | `WholeCharacteristicKind` | серия кодов | +| `createOnInput` | `DontUse` | `Auto` / `Use` / `DontUse` | +| `dataLockControlMode` | `Managed` | `Automatic` / `Managed` | +| `predefined` | `[]` | предопределённые виды (несут тип значения — см. ниже) | +| `attributes` / `tabularSections` | `[]` / `{}` | реквизиты / табличные части | + +**Предопределённые виды** несут **тип значения на элемент** — короткой строкой после `:` +(`"(Код) Имя [Наименование]: Тип"`, составной через `+`) или объектной формой с ключом `type`: + +```json +"predefined": [ + "(000001) Цвет: CatalogRef.Цвета", + "(000002) Размер [Размер одежды]: String(50) + Number(3,0)", + { "name": "Группа", "isFolder": true, "type": "" } +] +``` + +## ChartOfAccounts (План счетов) + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `extDimensionTypes` | пусто | ссылка на ПВХ видов субконто `ChartOfCharacteristicTypes.X` | +| `maxExtDimensionCount` | `0` (без ПВХ) / `3` (с ПВХ) | макс. число субконто | +| `codeMask` | пусто | маска кода счёта (напр. `"@@@.@@"`) | +| `codeLength` | `9` | длина кода | +| `descriptionLength` | `25` | длина наименования | +| `checkUnique` | `true` | bool | +| `codeSeries` | `WholeChartOfAccounts` | серия кодов | +| `defaultPresentation` | `AsCode` | `AsCode` / `AsDescription` | +| `autoOrderByCode` | `true` | bool | +| `orderLength` | `9` | длина строки упорядочивания | +| `dataLockControlMode` | `Managed` | `Automatic` / `Managed` | +| `accountingFlags` | `[]` | признаки учёта (как реквизиты, тип по умолчанию Boolean; массив имён/реквизитов) | +| `extDimensionAccountingFlags` | `[]` | признаки учёта субконто (как реквизиты) | +| `predefined` | `[]` | предопределённые счета (см. ниже) | + +**Предопределённый счёт** (объектная форма): + +| Поле | Умолчание | Значения | +|------|-----------|----------| +| `name` | — | имя (обязательно) | +| `code` | пусто | код счёта | +| `description` | из имени | наименование | +| `accountType` | `ActivePassive` | `Active` / `Passive` / `ActivePassive` | +| `offBalance` | `false` | bool (забалансовый) | +| `order` | — | строка сортировки | +| `flags` | `[]` | включённые признаки учёта (только TRUE) | +| `subconto` | `[]` | виды субконто (см. ниже) | +| `childItems` | `[]` | подчинённые счета | + +`subconto` — строка `"Вид | Признак1, Признак2"` (после `|` — включённые признаки учёта субконто; токен `Turnover` — +«только обороты») или объект `{ type, turnover, flags }`. `Вид` — имя предопределённого вида из ПВХ `extDimensionTypes`. + +```json +"predefined": [ + { "name": "ОсновныеСредства", "code": "01", "accountType": "Active", "order": " 01", + "flags": ["Количественный"], "subconto": ["Номенклатура | Суммовой, Валютный"], + "childItems": [ { "name": "ОСВОрганизации", "code": "01.01", "accountType": "Active", "order": " 01.01" } ] } +] +``` + +## ChartOfCalculationTypes (План видов расчёта) + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `codeLength` | `5` | длина кода | +| `descriptionLength` | `100` | длина наименования | +| `codeAllowedLength` | `Variable` | `Variable` / `Fixed` | +| `dependenceOnCalculationTypes` | `DontUse` | `DontUse` / `OnPeriod` / `OnActionPeriod` | +| `baseCalculationTypes` | `[]` | базовые виды расчёта (список ссылок `ChartOfCalculationTypes.X`) | +| `actionPeriodUse` | `false` | bool (использовать период действия) | +| `dataLockControlMode` | `Managed` | `Automatic` / `Managed` | +| `predefined` | `[]` | предопределённые виды расчёта (см. ниже) | + +**Предопределённый вид расчёта** — плоский: строка `"(Код) Имя [Наименование]"` или объект +`{ name, code, description, actionPeriodIsBase }` (`actionPeriodIsBase` — bool, по умолчанию `false`). + +```json +"predefined": [ "(00001) Оклад [Оклад по дням]", { "name": "Премия", "code": "00002", "actionPeriodIsBase": true } ] +``` + +> **ChartOfAccounts** ссылается на ПВХ через `extDimensionTypes`. Регистр бухгалтерии/расчёта требует +> соответствующий план (см. `registers.md`). diff --git a/.claude/skills/meta-compile/reference/code.md b/.claude/skills/meta-compile/reference/code.md new file mode 100644 index 00000000..db35ac9b --- /dev/null +++ b/.claude/skills/meta-compile/reference/code.md @@ -0,0 +1,56 @@ +# CommonModule, ScheduledJob, EventSubscription (объекты, привязанные к коду) + +## CommonModule (Общий модуль) + +Флаги контекста выполнения (все bool, по умолчанию `false`). Создаёт пустой `Ext/Module.bsl`. + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `context` | — | шорткат флагов (см. ниже) | +| `global` | `false` | bool | +| `server` | `false` | bool | +| `serverCall` | `false` | bool (вызов сервера) | +| `clientManagedApplication` | `false` | bool (клиент управляемого приложения) | +| `clientOrdinaryApplication` | `false` | bool (клиент обычного приложения) | +| `externalConnection` | `false` | bool | +| `privileged` | `false` | bool | +| `returnValuesReuse` | `DontUse` | `DontUse` / `DuringRequest` / `DuringSession` | + +Шорткат `context`: `"server"` → Server+ServerCall; `"client"` → ClientManagedApplication; +`"serverClient"` → Server+ClientManagedApplication. + +```json +{ "type": "CommonModule", "name": "ОбменДаннымиСервер", "context": "server", "returnValuesReuse": "DuringRequest" } +``` + +## ScheduledJob (Регламентное задание) + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `methodName` | пусто | метод-обработчик `"МодульСервер.Процедура"` (дополняется до `CommonModule.…`) | +| `description` | пусто | наименование задания | +| `key` | пусто | ключ | +| `use` | `false` | bool (использование) | +| `predefined` | `false` | bool (предопределённое) | +| `restartCountOnFailure` | `3` | число повторов при сбое | +| `restartIntervalOnFailure` | `10` | интервал повтора, сек | + +```json +{ "type": "ScheduledJob", "name": "ОбменДанными", "methodName": "ОбменДаннымиСервер.Выполнить", "use": true } +``` + +## EventSubscription (Подписка на событие) + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `source` | `[]` | объекты-источники: `["CatalogObject.Контрагенты", "DocumentObject.Реализация"]` | +| `event` | `BeforeWrite` | `BeforeWrite` / `OnWrite` / `BeforeDelete` / `OnReadAtServer` / `FillCheckProcessing` … | +| `handler` | пусто | метод-обработчик `"МодульСервер.Процедура"` (дополняется до `CommonModule.…`) | + +```json +{ "type": "EventSubscription", "name": "ПередЗаписьюКонтрагента", + "source": ["CatalogObject.Контрагенты"], "event": "BeforeWrite", + "handler": "ОбщегоНазначенияСервер.ПередЗаписьюКонтрагента" } +``` + +> Процедура-обработчик (`methodName` / `handler`) должна существовать в указанном общем модуле (экспортная). diff --git a/.claude/skills/meta-compile/reference/document.md b/.claude/skills/meta-compile/reference/document.md new file mode 100644 index 00000000..01e25a1d --- /dev/null +++ b/.claude/skills/meta-compile/reference/document.md @@ -0,0 +1,79 @@ +# Document, DocumentJournal, Sequence, DocumentNumerator + +## Document (Документ) + +```json +{ "type": "Document", "name": "ПриходнаяНакладная", + "registerRecords": ["AccumulationRegister.ОстаткиТоваров"], + "attributes": ["Организация: CatalogRef.Организации"], + "tabularSections": { "Товары": ["Номенклатура: CatalogRef.Номенклатура", "Количество: Number(15,3)"] } } +``` + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `comment` | пусто | строка | +| `numerator` | пусто | ссылка на нумератор `DocumentNumerator.X` | +| `numberType` | `String` | `String` / `Number` | +| `numberLength` | `11` | длина номера | +| `numberAllowedLength` | `Variable` | `Variable` / `Fixed` | +| `numberPeriodicity` | `Year` | `Nonperiodical` / `Day` / `Month` / `Quarter` / `Year` | +| `checkUnique` | `true` | bool | +| `autonumbering` | `true` | bool | +| `posting` | `Allow` | `Allow` / `Deny` (проведение) | +| `realTimePosting` | `Deny` | `Allow` / `Deny` (оперативное проведение) | +| `registerRecordsDeletion` | `AutoDelete` | `AutoDelete` / `AutoDeleteOnUnpost` / `AutoDeleteOff` | +| `registerRecordsWritingOnPost` | `WriteSelected` | `WriteModified` / `WriteSelected` / `WriteAll` | +| `sequenceFilling` | `AutoFill` | заполнение последовательностей | +| `postInPrivilegedMode` | `true` | bool | +| `unpostInPrivilegedMode` | `true` | bool | +| `createOnInput` | `Use` | `Auto` / `Use` / `DontUse` | +| `dataLockControlMode` | `Managed` | `Automatic` / `Managed` | +| `fullTextSearch` | `Use` | `Use` / `DontUse` | +| `dataHistory` | `DontUse` | `Use` / `DontUse` | +| `registerRecords` | `[]` | движения: список ссылок `["AccumulationRegister.ОстаткиТоваров", "InformationRegister.Цены"]` | +| `useStandardCommands` | `true` | bool | +| `includeHelpInContents` | `false` | bool | +| `attributes` / `tabularSections` | `[]` / `{}` | реквизиты / табличные части | + +Формы: `defaultObjectForm`, `defaultListForm`, `defaultChoiceForm`, `auxiliary*` (см. `catalog.md`). +Реквизиты и ТЧ — `attributes.md`. Представления, команды, характеристики, `basedOn`, `standardAttributes`, +`inputByString`, `dataLockFields` — `blocks.md`. + +## DocumentJournal (Журнал документов) + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `registeredDocuments` | `[]` | документы журнала: `["Document.Встреча", "Document.Звонок"]` | +| `columns` | `[]` | графы журнала (см. ниже) | + +Графа — строка `"Имя"` или объект `{ name, synonym, indexing, references }`, где `indexing` — `Index`/`DontIndex`, +`references` — пути к реквизитам документов, отображаемым в графе. + +```json +{ "type": "DocumentJournal", "name": "Взаимодействия", + "registeredDocuments": ["Document.Встреча", "Document.Звонок"], + "columns": [{ "name": "Организация", "indexing": "Index", + "references": ["Document.Встреча.Attribute.Организация"] }] } +``` + +## Sequence (Последовательность документов) + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `moveBoundaryOnPosting` | `DontMove` | сдвиг границы при проведении | +| `documents` | `[]` | документы последовательности (список ссылок) | +| `registerRecords` | `[]` | движения (список ссылок) | +| `dataLockControlMode` | `Managed` | `Automatic` / `Managed` | +| `dimensions` | `[]` | измерения `{name, type, documentMap[], registerRecordsMap[]}` | + +`documentMap` / `registerRecordsMap` — пути к реквизитам документов / движениям, соответствующим измерению. + +## DocumentNumerator (Нумератор документов) + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `numberType` | `String` | `String` / `Number` | +| `numberLength` | `11` | длина номера | +| `numberAllowedLength` | `Variable` | `Variable` / `Fixed` | +| `numberPeriodicity` | `Year` | `Nonperiodical` / `Day` / … / `Year` | +| `checkUnique` | `true` | bool | diff --git a/.claude/skills/meta-compile/reference/exchangeplan.md b/.claude/skills/meta-compile/reference/exchangeplan.md new file mode 100644 index 00000000..228eaa45 --- /dev/null +++ b/.claude/skills/meta-compile/reference/exchangeplan.md @@ -0,0 +1,41 @@ +# ExchangePlan (План обмена) + +Близок к справочнику (без иерархии/владельцев), плюс состав объектов обмена. Наследует слой Catalog: +`codeLength`, `codeAllowedLength`, `descriptionLength`, `defaultPresentation`, `editType`, `quickChoice`, +`choiceMode`, формы, `standardAttributes`, `characteristics`, `inputByString`, `basedOn`, представления — +см. `catalog.md` / `attributes.md` / `blocks.md`. + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `comment` | пусто | строка | +| `distributedInfoBase` | `false` | bool (распределённая ИБ — РИБ) | +| `includeConfigurationExtensions` | `false` | bool (включать расширения конфигурации) | +| `descriptionLength` | `150` | длина наименования | +| `createOnInput` | `DontUse` | `Auto` / `Use` / `DontUse` | +| `dataLockControlMode` | `Managed` | `Automatic` / `Managed` | +| `dataHistory` | `DontUse` | `Use` / `DontUse` | +| `useStandardCommands` | `true` | bool | +| `content` | `[]` | состав обмена (см. ниже) | +| `attributes` / `tabularSections` | `[]` / `{}` | реквизиты / табличные части | + +## `content` — состав плана обмена + +Список объектов-участников обмена; у каждого — признак авторегистрации изменений (по умолчанию выключена). +Элемент — ссылка на объект метаданных (строка) или объект с признаком: + +```json +"content": [ + "Catalog.Организации", // авторегистрация выключена + "InformationRegister.Курсы: autoRecord", // авторегистрация включена (токен) + { "metadata": "Document.РеализацияТоваров", "autoRecord": true } +] +``` + +- Строка `"Тип.Имя"` — авторегистрация выключена; суффикс `: autoRecord` — включена. +- Объект: `metadata` (ссылка), `autoRecord` (bool или `Allow`/`Deny`). + +```json +{ "type": "ExchangePlan", "name": "ОбменССайтом", "distributedInfoBase": false, + "content": ["Catalog.Номенклатура: autoRecord", "Catalog.Контрагенты: autoRecord"], + "attributes": ["АдресСервера: String(200)"] } +``` diff --git a/.claude/skills/meta-compile/reference/other-types.md b/.claude/skills/meta-compile/reference/other-types.md new file mode 100644 index 00000000..4f2f02b0 --- /dev/null +++ b/.claude/skills/meta-compile/reference/other-types.md @@ -0,0 +1,87 @@ +# Прочие типы + +Редкие/служебные объекты. Каждый — минимальный набор свойств. + +## FunctionalOption (Функциональная опция) + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `location` | пусто | где хранится значение: `Constant.X` / `InformationRegister.X.Resource.Y` / `<Тип>.X.Attribute.Y` | +| `content` | `[]` | реквизиты/измерения/ресурсы, зависящие от опции (полные пути к объектам) | +| `privilegedGetMode` | `true` | bool | +| `comment` | пусто | строка | + +```json +{ "type": "FunctionalOption", "name": "ВестиУчетПоСкладам", "location": "Constant.ВестиУчетПоСкладам", + "content": ["Document.РеализацияТоваров.TabularSection.Товары.Attribute.Склад"] } +``` + +## FilterCriterion (Критерий отбора) + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `valueType` | — | тип значения отбора (составной через `+`) | +| `content` | `[]` | реквизиты, по которым идёт отбор (пути к объектам) | +| `useStandardCommands` | `true` | bool | +| `defaultForm` / `auxiliaryForm` | пусто | формы | +| `comment` | пусто | строка | + +```json +{ "type": "FilterCriterion", "name": "ДокументыПоКонтрагенту", "valueType": "CatalogRef.Контрагенты", + "content": ["Document.Реализация.Attribute.Контрагент"] } +``` + +## SettingsStorage (Хранилище настроек) + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `defaultSaveForm` / `defaultLoadForm` | пусто | формы сохранения / загрузки | +| `auxiliarySaveForm` / `auxiliaryLoadForm` | пусто | вспомогательные формы | +| `comment` | пусто | строка | + +## CommonForm (Общая форма) + +Создаёт метаданные + заготовку формы. Содержимое формы наполняется `/form-compile` или `/form-edit`. + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `formType` | `Managed` | тип формы | +| `usePurposes` | `[PlatformApplication, MobilePlatformApplication]` | назначение (массив) | +| `useStandardCommands` | `false` | bool | +| `includeHelpInContents` | `false` | bool | +| `comment` | пусто | строка | + +```json +{ "type": "CommonForm", "name": "НастройкиОбмена", "usePurposes": ["PlatformApplication"] } +``` + +## CommonPicture / CommonTemplate (Общие картинки и макеты) + +Только метаданные + регистрация; содержимое (`Ext/Picture*`, `Ext/Template.*`) импортируется отдельно +(для табличного макета — `/mxl-compile`). + +- **CommonPicture** — `availabilityForChoice` / `availabilityForAppearance` (bool, по умолчанию `false`). +- **CommonTemplate** — `templateType` (`SpreadsheetDocument` по умолчанию / `TextDocument` / `HTMLDocument` / + `BinaryData` / `AddIn` / `DataCompositionSchema` / `DataCompositionAppearanceTemplate` / `GraphicalSchema`). + +```json +{ "type": "CommonTemplate", "name": "ПечатьЗаказа", "templateType": "SpreadsheetDocument" } +``` + +## Служебные типы + +- **SessionParameter** (параметр сеанса) — `valueType` (тип значения, составной через `+`). +- **FunctionalOptionsParameter** (параметр функциональной опции) — `use` (массив измерений/реквизитов). +- **WSReference** (WS-ссылка) — `locationURL` (URL WSDL). +- **CommandGroup** (группа команд) — `representation`, `tooltip` (ML), `picture`, `category`. +- **CommonCommand** (общая команда) — `group`, `representation`, `tooltip`, `picture`, `shortcut`, + `commandParameterType`, `parameterUseMode` (`Single`/`Multiple`), `modifiesData`, `includeHelpInContents`. + Создаёт `Ext/CommandModule.bsl`. +- **CommonAttribute** (общий реквизит) — `valueType` (по умолчанию `String(0)`) + свойства реквизита + (`attributes.md`) + `content` (объекты, куда входит реквизит) + свойства разделения данных + (`dataSeparation`, `separatedDataUse`, `usersSeparation`, … — по умолчанию `DontUse`/`Independently`). + +```json +{ "type": "CommonAttribute", "name": "Организация", "valueType": "CatalogRef.Организации", + "autoUse": "Use", "content": ["Document.РеализацияТоваров", "Document.ПоступлениеТоваров"] } +``` diff --git a/.claude/skills/meta-compile/reference/process.md b/.claude/skills/meta-compile/reference/process.md new file mode 100644 index 00000000..351e1e62 --- /dev/null +++ b/.claude/skills/meta-compile/reference/process.md @@ -0,0 +1,49 @@ +# BusinessProcess, Task (Бизнес-процессы и Задачи) + +Ссылочные типы. Наследуют слой Catalog (нумерация, формы, `standardAttributes`, `characteristics`, `basedOn`, +представления — см. `catalog.md` / `attributes.md` / `blocks.md`). Бизнес-процесс всегда связан с задачей. + +## BusinessProcess (Бизнес-процесс) + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `task` | пусто | ссылка на задачу `Task.X` (обязательна для рабочего БП) | +| `numberType` | `String` | `String` / `Number` | +| `numberLength` | `11` | длина номера | +| `checkUnique` | `true` | bool | +| `autonumbering` | `true` | bool | +| `createOnInput` | `DontUse` | `Auto` / `Use` / `DontUse` | +| `dataLockControlMode` | `Managed` | `Automatic` / `Managed` | +| `attributes` / `tabularSections` | `[]` / `{}` | реквизиты / табличные части | + +Создаётся с картой маршрута (`Ext/Flowchart.xml`) и модулем объекта. + +```json +{ "type": "BusinessProcess", "name": "Согласование", "task": "Task.ЗадачаИсполнителя", + "attributes": ["Документ: DocumentRef.ЗаявкаНаРасход"] } +``` + +## Task (Задача) + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `numberType` | `String` | `String` / `Number` | +| `numberLength` | `14` | длина номера | +| `checkUnique` | `true` | bool | +| `autonumbering` | `true` | bool | +| `descriptionLength` | `150` | длина наименования | +| `addressing` | пусто | ссылка на регистр сведений адресации `InformationRegister.X` | +| `mainAddressingAttribute` | пусто | основной реквизит адресации (имя реквизита адресации) | +| `currentPerformer` | пусто | реквизит текущего исполнителя | +| `createOnInput` | `DontUse` | `Auto` / `Use` / `DontUse` | +| `dataLockControlMode` | `Managed` | `Automatic` / `Managed` | +| `addressingAttributes` | `[]` | реквизиты адресации (см. ниже) | +| `attributes` / `tabularSections` | `[]` / `{}` | реквизиты / табличные части | + +**Реквизит адресации** — shorthand `"Имя: Тип"` или объект `{ name, type, addressingDimension }` +(`addressingDimension` — измерение регистра адресации). + +```json +{ "type": "Task", "name": "ЗадачаИсполнителя", + "addressingAttributes": ["Исполнитель: CatalogRef.Пользователи", "Роль: CatalogRef.Роли"] } +``` diff --git a/.claude/skills/meta-compile/reference/registers.md b/.claude/skills/meta-compile/reference/registers.md new file mode 100644 index 00000000..66da2cb6 --- /dev/null +++ b/.claude/skills/meta-compile/reference/registers.md @@ -0,0 +1,76 @@ +# Регистры: Information, Accumulation, Accounting, Calculation + +**Измерения и ресурсы** задаются как реквизиты (shorthand `"Имя: Тип | флаги"` или объектная форма, см. +`attributes.md`). Флаги измерений: `master`, `mainFilter`, `denyIncomplete`, `useInTotals` (регистр накопления). + +```json +"dimensions": ["Организация: CatalogRef.Организации | master, mainFilter"], +"resources": ["Сумма: Number(15,2)"] +``` + +## InformationRegister (Регистр сведений) + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `writeMode` | `Independent` | `Independent` / `RecorderSubordinate` | +| `periodicity` | `Nonperiodical` | `Nonperiodical` / `Second` / `Day` / `Month` / `Quarter` / `Year` / `RecorderPosition` | +| `mainFilterOnPeriod` | `false` | bool (основной отбор по периоду) | +| `dataLockControlMode` | `Managed` | `Automatic` / `Managed` | +| `dimensions` / `resources` / `attributes` | `[]` | измерения / ресурсы / реквизиты | + +```json +{ "type": "InformationRegister", "name": "КурсыВалют", "periodicity": "Day", + "dimensions": ["Валюта: CatalogRef.Валюты | master, mainFilter, denyIncomplete"], + "resources": ["Курс: Number(15,4)", "Кратность: Number(10,0)"] } +``` + +## AccumulationRegister (Регистр накопления) + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `registerType` | `Balance` | `Balance` (остатки) / `Turnovers` (обороты) | +| `enableTotalsSplitting` | `true` | bool (разделение итогов) | +| `dataLockControlMode` | `Managed` | `Automatic` / `Managed` | +| `dimensions` / `resources` / `attributes` | `[]` | измерения / ресурсы / реквизиты | + +```json +{ "type": "AccumulationRegister", "name": "ОстаткиТоваров", "registerType": "Balance", + "dimensions": ["Номенклатура: CatalogRef.Номенклатура", "Склад: CatalogRef.Склады"], + "resources": ["Количество: Number(15,3)"] } +``` + +## AccountingRegister (Регистр бухгалтерии) + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `chartOfAccounts` | — | **обязательно**: ссылка на план счетов `ChartOfAccounts.X` | +| `correspondence` | `false` | bool (корреспонденция) | +| `periodAdjustmentLength` | `0` | длина периода корректировки | +| `dataLockControlMode` | `Managed` | `Automatic` / `Managed` | +| `dimensions` / `resources` / `attributes` | `[]` | измерения / ресурсы / реквизиты | + +```json +{ "type": "AccountingRegister", "name": "Хозрасчетный", + "chartOfAccounts": "ChartOfAccounts.Хозрасчетный", + "dimensions": ["Организация: CatalogRef.Организации"], "resources": ["Сумма: Number(15,2)"] } +``` + +## CalculationRegister (Регистр расчёта) + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `chartOfCalculationTypes` | — | **обязательно**: ссылка на ПВР `ChartOfCalculationTypes.X` | +| `periodicity` | `Month` | периодичность | +| `actionPeriod` | `false` | bool (период действия) | +| `basePeriod` | `false` | bool (базовый период) | +| `schedule` | пусто | ссылка на регистр сведений графиков | +| `dataLockControlMode` | `Managed` | `Automatic` / `Managed` | +| `dimensions` / `resources` / `attributes` | `[]` | измерения / ресурсы / реквизиты | + +```json +{ "type": "CalculationRegister", "name": "Начисления", + "chartOfCalculationTypes": "ChartOfCalculationTypes.Начисления", "periodicity": "Month", + "dimensions": ["Сотрудник: CatalogRef.Сотрудники"], "resources": ["Сумма: Number(15,2)"] } +``` + +> **AccountingRegister** требует план счетов, **CalculationRegister** — план видов расчёта (и оба — документ-регистратор). diff --git a/.claude/skills/meta-compile/reference/report-dataprocessor.md b/.claude/skills/meta-compile/reference/report-dataprocessor.md new file mode 100644 index 00000000..5fc79652 --- /dev/null +++ b/.claude/skills/meta-compile/reference/report-dataprocessor.md @@ -0,0 +1,45 @@ +# Report, DataProcessor (Отчёты и Обработки) + +Почти идентичны по составу: реквизиты, табличные части, формы, макеты, команды. Модуль объекта — `Ext/ObjectModule.bsl`. +Реквизиты и ТЧ — `attributes.md`; команды — `blocks.md`. + +Ссылки на формы/схемы/хранилища пишутся **как есть** (имя формы может быть буквально «Форма»). + +## Report (Отчёт) + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `comment` | пусто | строка | +| `useStandardCommands` | `true` | bool (доступность через стандартный командный интерфейс) | +| `mainDataCompositionSchema` | пусто | основной макет СКД (`Report.X.Template.ОсновнаяСхемаКомпоновкиДанных`) | +| `defaultForm` / `auxiliaryForm` | пусто | основная / вспомогательная форма | +| `defaultSettingsForm` / `auxiliarySettingsForm` / `defaultVariantForm` | пусто | формы настроек / вариантов | +| `variantsStorage` / `settingsStorage` | пусто | хранилища вариантов / настроек (`SettingsStorage.X`) | +| `extendedPresentation` / `explanation` | пусто | представление / пояснение (ML) | +| `includeHelpInContents` | `false` | bool | +| `attributes` / `tabularSections` | `[]` / `{}` | реквизиты / табличные части | + +```json +{ "type": "Report", "name": "АнализПродаж", "useStandardCommands": false, + "mainDataCompositionSchema": "Report.АнализПродаж.Template.ОсновнаяСхемаКомпоновкиДанных", + "attributes": ["Период: StandardPeriod"] } +``` + +## DataProcessor (Обработка) + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `comment` | пусто | строка | +| `useStandardCommands` | `true` | bool | +| `defaultForm` / `auxiliaryForm` | пусто | основная / вспомогательная форма | +| `extendedPresentation` / `explanation` | пусто | представление / пояснение (ML) | +| `includeHelpInContents` | `false` | bool | +| `attributes` / `tabularSections` | `[]` / `{}` | реквизиты / табличные части | + +```json +{ "type": "DataProcessor", "name": "ЗагрузкаТаблиц", "useStandardCommands": false, + "attributes": [{ "name": "Таблица", "type": "ValueTree" }, { "name": "Произвольные", "type": "" }] } +``` + +> Реквизиты отчётов/обработок допускают платформенные типы-коллекции: `ValueTable`, `ValueTree`, `ValueList`, +> `StandardPeriod`, `SpreadsheetDocument` и др., а также `"type": ""` — реквизит без типа. diff --git a/.claude/skills/meta-compile/reference/simple.md b/.claude/skills/meta-compile/reference/simple.md new file mode 100644 index 00000000..eb881b1e --- /dev/null +++ b/.claude/skills/meta-compile/reference/simple.md @@ -0,0 +1,40 @@ +# Enum, Constant, DefinedType + +## Enum (Перечисление) + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `values` | `[]` | значения перечисления (массив имён или объектов) | + +Значение — строка `"ИмяЗначения"` или объект `{ name, synonym }`. + +```json +{ "type": "Enum", "name": "Статусы", "values": ["Новый", "ВРаботе", "Закрыт"] } +``` + +## Constant (Константа) + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `valueType` | `String` | тип значения (shorthand типа) | +| `dataLockControlMode` | `Managed` | `Automatic` / `Managed` | + +`valueType` принимает shorthand: `"String(100)"`, `"Number(15,2)"`, `"Boolean"`, `"CatalogRef.Валюты"`, +составной через `+`. + +```json +{ "type": "Constant", "name": "ОсновнаяВалюта", "valueType": "CatalogRef.Валюты" } +``` + +## DefinedType (Определяемый тип) + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `valueTypes` | `[]` | состав типа (массив shorthand-типов) | +| `valueType` | — | то же одной строкой (`"A + B"`) или строкой одного типа | + +```json +{ "type": "DefinedType", "name": "ДенежныеСредства", + "valueTypes": ["CatalogRef.БанковскиеСчета", "CatalogRef.Кассы"] } +{ "type": "DefinedType", "name": "ФлагАктивности", "valueType": "Boolean" } +``` diff --git a/.claude/skills/meta-compile/reference/types-basic.md b/.claude/skills/meta-compile/reference/types-basic.md deleted file mode 100644 index 29a74b3b..00000000 --- a/.claude/skills/meta-compile/reference/types-basic.md +++ /dev/null @@ -1,116 +0,0 @@ -# Базовые типы: Catalog, Document, Enum, Constant, DefinedType, Report, DataProcessor - -## Catalog - -| Поле JSON | Умолчание | XML элемент | -|-----------|----------|-------------| -| `hierarchical` | `false` | Hierarchical | -| `hierarchyType` | `HierarchyFoldersAndItems` | HierarchyType | -| `limitLevelCount` | `false` | LimitLevelCount | -| `levelCount` | `2` | LevelCount | -| `foldersOnTop` | `true` | FoldersOnTop | -| `codeLength` | `9` | CodeLength | -| `codeType` | `String` | CodeType | -| `codeAllowedLength` | `Variable` | CodeAllowedLength | -| `codeSeries` | `WholeCatalog` | CodeSeries | -| `descriptionLength` | `25` | DescriptionLength | -| `autonumbering` | `true` | Autonumbering | -| `checkUnique` | `false` | CheckUnique | -| `defaultPresentation` | `AsDescription` | DefaultPresentation | -| `subordinationUse` | `ToItems` | SubordinationUse | -| `quickChoice` | `false` | QuickChoice | -| `choiceMode` | `BothWays` | ChoiceMode | -| `owners` | `[]` | Owners | -| `attributes` | `[]` | → Attribute в ChildObjects | -| `tabularSections` | `{}` | → TabularSection в ChildObjects | - -```json -{ "type": "Catalog", "name": "Организации", "attributes": ["ИНН: String(12)", "КПП: String(9)"] } -``` - -## Document - -| Поле JSON | Умолчание | XML элемент | -|-----------|----------|-------------| -| `numberType` | `String` | NumberType | -| `numberLength` | `11` | NumberLength | -| `numberAllowedLength` | `Variable` | NumberAllowedLength | -| `numberPeriodicity` | `Year` | NumberPeriodicity | -| `checkUnique` | `true` | CheckUnique | -| `autonumbering` | `true` | Autonumbering | -| `posting` | `Allow` | Posting | -| `realTimePosting` | `Deny` | RealTimePosting | -| `registerRecordsDeletion` | `AutoDelete` | RegisterRecordsDeletion | -| `registerRecordsWritingOnPost` | `WriteModified` | RegisterRecordsWritingOnPost | -| `postInPrivilegedMode` | `true` | PostInPrivilegedMode | -| `unpostInPrivilegedMode` | `true` | UnpostInPrivilegedMode | -| `registerRecords` | `[]` | RegisterRecords | -| `attributes` | `[]` | → Attribute в ChildObjects | -| `tabularSections` | `{}` | → TabularSection в ChildObjects | - -RegisterRecords — массив строк: `"AccumulationRegister.Продажи"`, `"InformationRegister.Цены"`. - -```json -{ - "type": "Document", "name": "ПриходнаяНакладная", - "registerRecords": ["AccumulationRegister.ОстаткиТоваров"], - "attributes": ["Организация: CatalogRef.Организации", "Контрагент: CatalogRef.Контрагенты"], - "tabularSections": { "Товары": ["Номенклатура: CatalogRef.Номенклатура", "Количество: Number(15,3)"] } -} -``` - -## Enum - -| Поле JSON | Умолчание | XML элемент | -|-----------|----------|-------------| -| `values` | `[]` | → EnumValue в ChildObjects | - -```json -{ "type": "Enum", "name": "Статусы", "values": ["Новый", "ВРаботе", "Закрыт"] } -``` - -## Constant - -| Поле JSON | Умолчание | XML элемент | -|-----------|----------|-------------| -| `valueType` | `String` | Type | - -`valueType` принимает shorthand типа: `"String(100)"`, `"Number(15,2)"`, `"Boolean"`, `"CatalogRef.Валюты"`. - -```json -{ "type": "Constant", "name": "ОсновнаяВалюта", "valueType": "CatalogRef.Валюты" } -``` - -## DefinedType - -| Поле JSON | Умолчание | XML элемент | -|-----------|----------|-------------| -| `valueTypes` | `[]` | Type (составной тип) | -| `valueType` | — | Алиас для `valueTypes` (строка или массив) | - -```json -{ "type": "DefinedType", "name": "ДенежныеСредства", "valueTypes": ["CatalogRef.БанковскиеСчета", "CatalogRef.Кассы"] } -{ "type": "DefinedType", "name": "ФлагАктивности", "valueType": "Boolean" } -``` - -## Report - -| Поле JSON | Умолчание | XML элемент | -|-----------|----------|-------------| -| `attributes` | `[]` | → Attribute в ChildObjects | -| `tabularSections` | `{}` | → TabularSection в ChildObjects | - -```json -{ "type": "Report", "name": "ОстаткиТоваров" } -``` - -## DataProcessor - -| Поле JSON | Умолчание | XML элемент | -|-----------|----------|-------------| -| `attributes` | `[]` | → Attribute в ChildObjects | -| `tabularSections` | `{}` | → TabularSection в ChildObjects | - -```json -{ "type": "DataProcessor", "name": "ЗагрузкаДанных", "attributes": ["ПутьКФайлу: String(500)"] } -``` diff --git a/.claude/skills/meta-compile/reference/types-process.md b/.claude/skills/meta-compile/reference/types-process.md deleted file mode 100644 index 4ef4e9ae..00000000 --- a/.claude/skills/meta-compile/reference/types-process.md +++ /dev/null @@ -1,136 +0,0 @@ -# Процессы и сервисные: BusinessProcess, Task, ExchangePlan, CommonModule, ScheduledJob, EventSubscription, DocumentJournal - -## BusinessProcess - -| Поле JSON | Умолчание | XML элемент | -|-----------|----------|-------------| -| `task` | `""` | Task (ссылка `Task.XXX`) | -| `numberType` | `String` | NumberType | -| `numberLength` | `11` | NumberLength | -| `checkUnique` | `true` | CheckUnique | -| `autonumbering` | `true` | Autonumbering | -| `attributes` | `[]` | → Attribute | -| `tabularSections` | `{}` | → TabularSection | - -Модули: `Ext/ObjectModule.bsl`, `Ext/Flowchart.xml`. - -```json -{ "type": "BusinessProcess", "name": "Задание", "task": "Task.ЗадачаИсполнителя", "attributes": ["Описание: String(200)"] } -``` - -## Task - -| Поле JSON | Умолчание | XML элемент | -|-----------|----------|-------------| -| `numberType` | `String` | NumberType | -| `numberLength` | `14` | NumberLength | -| `checkUnique` | `true` | CheckUnique | -| `autonumbering` | `true` | Autonumbering | -| `descriptionLength` | `150` | DescriptionLength | -| `addressing` | `""` | Addressing (ссылка на РС адресации) | -| `mainAddressingAttribute` | `""` | MainAddressingAttribute | -| `currentPerformer` | `""` | CurrentPerformer | -| `attributes` | `[]` | → Attribute | -| `tabularSections` | `{}` | → TabularSection | -| `addressingAttributes` | `[]` | → AddressingAttribute (shorthand или объект) | - -AddressingAttribute — shorthand `"Имя: Тип"` или объект `{ "name", "type", "addressingDimension" }`. - -```json -{ - "type": "Task", "name": "ЗадачаИсполнителя", - "addressingAttributes": ["Исполнитель: CatalogRef.Пользователи"] -} -``` - -## ExchangePlan - -| Поле JSON | Умолчание | XML элемент | -|-----------|----------|-------------| -| `codeLength` | `9` | CodeLength | -| `descriptionLength` | `100` | DescriptionLength | -| `distributedInfoBase` | `false` | DistributedInfoBase | -| `attributes` | `[]` | → Attribute | -| `tabularSections` | `{}` | → TabularSection | - -Модули: `Ext/ObjectModule.bsl`, `Ext/Content.xml`. - -```json -{ "type": "ExchangePlan", "name": "ОбменССайтом", "attributes": ["АдресСервера: String(200)"] } -``` - -## CommonModule - -| Поле JSON | Умолчание | XML элемент | -|-----------|----------|-------------| -| `context` | — | Шорткат (см. ниже) | -| `global` | `false` | Global | -| `server` | `false` | Server | -| `serverCall` | `false` | ServerCall | -| `clientManagedApplication` | `false` | ClientManagedApplication | -| `externalConnection` | `false` | ExternalConnection | -| `privileged` | `false` | Privileged | -| `returnValuesReuse` | `DontUse` | ReturnValuesReuse | - -Шорткаты `context`: `"server"` → Server+ServerCall, `"client"` → ClientManagedApplication, `"serverClient"` → Server+ClientManagedApplication. - -```json -{ "type": "CommonModule", "name": "ОбщиеФункции", "context": "serverClient" } -``` - -## ScheduledJob - -| Поле JSON | Умолчание | XML элемент | -|-----------|----------|-------------| -| `methodName` | `""` | MethodName | -| `description` | = synonym | Description | -| `use` | `false` | Use | -| `predefined` | `false` | Predefined | -| `restartCountOnFailure` | `3` | RestartCountOnFailure | -| `restartIntervalOnFailure` | `10` | RestartIntervalOnFailure | - -Формат `methodName`: `"МодульСервер.Процедура"` — авто-дополняется до `CommonModule.МодульСервер.Процедура`. - -```json -{ "type": "ScheduledJob", "name": "ОбменДанными", "methodName": "ОбменДаннымиСервер.Выполнить" } -``` - -## EventSubscription - -| Поле JSON | Умолчание | XML элемент | -|-----------|----------|-------------| -| `source` | `[]` | Source (массив, формат `XxxObject.Name`) | -| `event` | `BeforeWrite` | Event | -| `handler` | `""` | Handler | - -Формат `handler`: `"МодульСервер.Процедура"` — авто-дополняется до `CommonModule.МодульСервер.Процедура`. - -Значения `event`: `BeforeWrite`, `OnWrite`, `BeforeDelete`, `OnReadAtServer`, `FillCheckProcessing`. - -Формат `source`: `"CatalogObject.Xxx"`, `"DocumentObject.Xxx"`. - -```json -{ "type": "EventSubscription", "name": "ПередЗаписью", "source": ["CatalogObject.Контрагенты"], "event": "BeforeWrite", "handler": "ОбщиеФункции.ПередЗаписью" } -``` - -## DocumentJournal - -| Поле JSON | Умолчание | XML элемент | -|-----------|----------|-------------| -| `registeredDocuments` | `[]` | RegisteredDocuments (массив `"Document.Xxx"`) | -| `columns` | `[]` | → Column | - -Колонки — строка `"Имя"` или объект `{ "name", "synonym", "indexing": "Index"/"DontIndex", "references": ["Document.Xxx.Attribute.Yyy"] }`. - -```json -{ - "type": "DocumentJournal", "name": "Взаимодействия", - "registeredDocuments": ["Document.Встреча", "Document.Звонок"], - "columns": [{ "name": "Организация", "indexing": "Index", "references": ["Document.Встреча.Attribute.Организация"] }] -} -``` - -## Зависимости - -- **ScheduledJob/EventSubscription** — процедура-обработчик должна существовать в модуле (экспортная) -- **BusinessProcess** → `Task` (задача должна существовать) diff --git a/.claude/skills/meta-compile/reference/types-registers.md b/.claude/skills/meta-compile/reference/types-registers.md deleted file mode 100644 index 6f452e4f..00000000 --- a/.claude/skills/meta-compile/reference/types-registers.md +++ /dev/null @@ -1,174 +0,0 @@ -# Регистры и планы: InformationRegister, AccumulationRegister, AccountingRegister, CalculationRegister, ChartOfAccounts, ChartOfCharacteristicTypes, ChartOfCalculationTypes - -## Измерения и ресурсы (общее) - -Синтаксис аналогичен реквизитам (shorthand `"Имя: Тип | флаги"`). - -Флаги измерений: `master`, `mainFilter`, `denyIncomplete`, `useInTotals` (AccumulationRegister only, default `true`). - -```json -"dimensions": ["Организация: CatalogRef.Организации | master, mainFilter, denyIncomplete"], -"resources": ["Сумма: Number(15,2)"] -``` - ---- - -## InformationRegister - -| Поле JSON | Умолчание | XML элемент | -|-----------|----------|-------------| -| `writeMode` | `Independent` | WriteMode | -| `periodicity` | `Nonperiodical` | InformationRegisterPeriodicity | -| `mainFilterOnPeriod` | авто* | MainFilterOnPeriod | -| `dimensions` | `[]` | → Dimension | -| `resources` | `[]` | → Resource | -| `attributes` | `[]` | → Attribute | - -\* `mainFilterOnPeriod` = `true` если `periodicity` != `Nonperiodical`. - -```json -{ - "type": "InformationRegister", "name": "КурсыВалют", "periodicity": "Day", - "dimensions": ["Валюта: CatalogRef.Валюты | master, mainFilter, denyIncomplete"], - "resources": ["Курс: Number(15,4)", "Кратность: Number(10,0)"] -} -``` - -## AccumulationRegister - -| Поле JSON | Умолчание | XML элемент | -|-----------|----------|-------------| -| `registerType` | `Balance` | RegisterType (`Balance` / `Turnovers`) | -| `enableTotalsSplitting` | `true` | EnableTotalsSplitting | -| `dimensions` | `[]` | → Dimension | -| `resources` | `[]` | → Resource | -| `attributes` | `[]` | → Attribute | - -```json -{ - "type": "AccumulationRegister", "name": "ОстаткиТоваров", "registerType": "Balance", - "dimensions": ["Номенклатура: CatalogRef.Номенклатура"], - "resources": ["Количество: Number(15,3)"] -} -``` - -## AccountingRegister - -| Поле JSON | Умолчание | XML элемент | -|-----------|----------|-------------| -| `chartOfAccounts` | `""` | ChartOfAccounts (**обязательная** ссылка на план счетов) | -| `correspondence` | `false` | Correspondence | -| `periodAdjustmentLength` | `0` | PeriodAdjustmentLength | -| `dimensions` | `[]` | → Dimension | -| `resources` | `[]` | → Resource | -| `attributes` | `[]` | → Attribute | - -```json -{ - "type": "AccountingRegister", "name": "Хозрасчетный", - "chartOfAccounts": "ChartOfAccounts.Хозрасчетный", - "dimensions": ["Организация: CatalogRef.Организации"], - "resources": ["Сумма: Number(15,2)"] -} -``` - -## CalculationRegister - -| Поле JSON | Умолчание | XML элемент | -|-----------|----------|-------------| -| `chartOfCalculationTypes` | `""` | ChartOfCalculationTypes (**обязательная** ссылка на ПВР) | -| `periodicity` | `Month` | Periodicity | -| `actionPeriod` | `false` | ActionPeriod | -| `basePeriod` | `false` | BasePeriod | -| `schedule` | `""` | Schedule (ссылка на РС графиков) | -| `dimensions` | `[]` | → Dimension | -| `resources` | `[]` | → Resource | -| `attributes` | `[]` | → Attribute | - -```json -{ - "type": "CalculationRegister", "name": "Начисления", - "chartOfCalculationTypes": "ChartOfCalculationTypes.Начисления", - "periodicity": "Month", - "dimensions": ["Сотрудник: CatalogRef.Сотрудники"], - "resources": ["Сумма: Number(15,2)"] -} -``` - ---- - -## ChartOfCharacteristicTypes - -| Поле JSON | Умолчание | XML элемент | -|-----------|----------|-------------| -| `codeLength` | `9` | CodeLength | -| `descriptionLength` | `25` | DescriptionLength | -| `autonumbering` | `true` | Autonumbering | -| `checkUnique` | `false` | CheckUnique | -| `characteristicExtValues` | `""` | CharacteristicExtValues | -| `valueTypes` | авто* | Type (составной тип значений характеристик) | -| `hierarchical` | `false` | Hierarchical | -| `attributes` | `[]` | → Attribute | -| `tabularSections` | `{}` | → TabularSection | - -\* По умолчанию: Boolean, String(100), Number(15,2), DateTime. - -```json -{ - "type": "ChartOfCharacteristicTypes", "name": "ВидыСубконто", - "valueTypes": ["CatalogRef.Номенклатура", "CatalogRef.Контрагенты", "Boolean", "String", "Number(15,2)"] -} -``` - -## ChartOfAccounts - -| Поле JSON | Умолчание | XML элемент | -|-----------|----------|-------------| -| `extDimensionTypes` | `""` | ExtDimensionTypes (ссылка на ПВХ) | -| `maxExtDimensionCount` | `3` | MaxExtDimensionCount | -| `codeMask` | `""` | CodeMask | -| `codeLength` | `8` | CodeLength | -| `descriptionLength` | `120` | DescriptionLength | -| `codeSeries` | `WholeChartOfAccounts` | CodeSeries | -| `autoOrderByCode` | `true` | AutoOrderByCode | -| `orderLength` | `5` | OrderLength | -| `hierarchical` | `false` | Hierarchical | -| `accountingFlags` | `[]` | → AccountingFlag (Boolean-тип, массив имён) | -| `extDimensionAccountingFlags` | `[]` | → ExtDimensionAccountingFlag (Boolean-тип, массив имён) | -| `attributes` | `[]` | → Attribute | -| `tabularSections` | `{}` | → TabularSection | - -```json -{ - "type": "ChartOfAccounts", "name": "Хозрасчетный", - "extDimensionTypes": "ChartOfCharacteristicTypes.ВидыСубконто", "maxExtDimensionCount": 3, - "codeLength": 8, "codeMask": "@@@.@@.@", - "accountingFlags": ["Валютный", "Количественный"], - "extDimensionAccountingFlags": ["Суммовой", "Валютный"] -} -``` - -## ChartOfCalculationTypes - -| Поле JSON | Умолчание | XML элемент | -|-----------|----------|-------------| -| `codeLength` | `9` | CodeLength | -| `descriptionLength` | `25` | DescriptionLength | -| `autonumbering` | `true` | Autonumbering | -| `checkUnique` | `false` | CheckUnique | -| `dependenceOnCalculationTypes` | `DontUse` | DependenceOnCalculationTypes | -| `actionPeriodUse` | `false` | ActionPeriodUse | -| `attributes` | `[]` | → Attribute | -| `tabularSections` | `{}` | → TabularSection | - -`dependenceOnCalculationTypes`: `DontUse`, `OnActionPeriod`. - -```json -{ "type": "ChartOfCalculationTypes", "name": "Начисления", "dependenceOnCalculationTypes": "OnActionPeriod" } -``` - -## Зависимости - -- **AccountingRegister** требует `ChartOfAccounts` (и документ-регистратор) -- **CalculationRegister** требует `ChartOfCalculationTypes` (и документ-регистратор) -- **ChartOfAccounts** ссылается на `ChartOfCharacteristicTypes` через `extDimensionTypes` diff --git a/.claude/skills/meta-compile/reference/types-web.md b/.claude/skills/meta-compile/reference/types-web.md deleted file mode 100644 index 81c65890..00000000 --- a/.claude/skills/meta-compile/reference/types-web.md +++ /dev/null @@ -1,103 +0,0 @@ -# Веб-сервисы: HTTPService, WebService - -## HTTPService - -| Поле JSON | Умолчание | XML элемент | -|-----------|----------|-------------| -| `rootURL` | `= name.toLower()` | RootURL | -| `reuseSessions` | `DontUse` | ReuseSessions | -| `sessionMaxAge` | `20` | SessionMaxAge | -| `urlTemplates` | `{}` | → URLTemplate | - -Модули: `Ext/Module.bsl`. - -### urlTemplates — вложенная структура - -`urlTemplates` — объект `{ "TemplateName": templateDef, ... }`. - -Каждый `templateDef`: -- Строка — URL-шаблон: `"/v1/users"` (без методов) -- Объект: - -| Поле | Умолчание | Описание | -|------|----------|----------| -| `template` | `"/templatename"` | URL-путь (с параметрами `{id}`) | -| `methods` | `{}` | Методы: `{ "MethodName": "HTTPMethod" }` | - -Допустимые HTTPMethod: `GET`, `POST`, `PUT`, `DELETE`, `PATCH`, `HEAD`, `OPTIONS`, `CONNECT`, `TRACE`, `MERGE`. - -Обработчик метода генерируется автоматически: `{TemplateName}{MethodName}` — должен быть реализован в `Ext/Module.bsl`. - -```json -{ - "type": "HTTPService", "name": "API", "rootURL": "api", - "urlTemplates": { - "Users": { - "template": "/v1/users/{id}", - "methods": { "Get": "GET", "Create": "POST", "Update": "PUT", "Delete": "DELETE" } - }, - "Health": "/health" - } -} -``` - -## WebService - -| Поле JSON | Умолчание | XML элемент | -|-----------|----------|-------------| -| `namespace` | `""` | Namespace (URI пространства имён WSDL) | -| `xdtoPackages` | `""` | XDTOPackages | -| `reuseSessions` | `DontUse` | ReuseSessions | -| `sessionMaxAge` | `20` | SessionMaxAge | -| `operations` | `{}` | → Operation | - -Модули: `Ext/Module.bsl`. - -### operations — вложенная структура - -`operations` — объект `{ "OperationName": operationDef, ... }`. - -Каждый `operationDef`: -- Строка — тип возврата: `"xs:boolean"` (параметров нет, обработчик = имя операции) -- Объект: - -| Поле | Умолчание | Описание | -|------|----------|----------| -| `returnType` | `xs:string` | XDTO-тип возврата | -| `nillable` | `false` | Может ли вернуть null | -| `transactioned` | `false` | Выполнять в транзакции | -| `handler` | `= operationName` | Имя процедуры в модуле | -| `parameters` | `{}` | Параметры операции | - -### parameters — параметры операции - -`parameters` — объект `{ "ParamName": paramDef, ... }`. - -Каждый `paramDef`: -- Строка — XDTO-тип: `"xs:string"` (direction = In, nillable = true) -- Объект: - -| Поле | Умолчание | Описание | -|------|----------|----------| -| `type` | `xs:string` | XDTO-тип параметра | -| `nillable` | `true` | Может ли быть null | -| `direction` | `In` | Направление: `In`, `Out`, `InOut` | - -Стандартные XDTO-типы: `xs:string`, `xs:boolean`, `xs:int`, `xs:long`, `xs:decimal`, `xs:dateTime`, `xs:base64Binary`. - -```json -{ - "type": "WebService", "name": "DataExchange", - "namespace": "http://www.1c.ru/DataExchange", - "operations": { - "TestConnection": { - "returnType": "xs:boolean", - "handler": "ПроверкаПодключения", - "parameters": { - "ErrorMessage": { "type": "xs:string", "direction": "Out" } - } - }, - "GetVersion": "xs:string" - } -} -``` diff --git a/.claude/skills/meta-compile/reference/web.md b/.claude/skills/meta-compile/reference/web.md new file mode 100644 index 00000000..4a129fad --- /dev/null +++ b/.claude/skills/meta-compile/reference/web.md @@ -0,0 +1,57 @@ +# HTTPService, WebService (Веб-сервисы) + +Модуль обоих — `Ext/Module.bsl`, в нём реализуются обработчики. + +## HTTPService (HTTP-сервис) + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `rootURL` | `= name` (в нижнем регистре) | корневой URL | +| `reuseSessions` | `DontUse` | `DontUse` / `AutoUse` | +| `sessionMaxAge` | `20` | время жизни сессии, сек | +| `urlTemplates` | `{}` | шаблоны URL (см. ниже) | + +`urlTemplates` — объект `{ "ИмяШаблона": def }`, где `def`: +- строка — URL-путь без методов: `"/health"`; +- объект: `template` (путь с параметрами `{id}`, по умолчанию `/имяшаблона`), `methods` — `{ "ИмяМетода": "HTTPMethod" }`. + +HTTP-методы: `GET`, `POST`, `PUT`, `DELETE`, `PATCH`, `HEAD`, `OPTIONS`, `CONNECT`, `TRACE`, `MERGE`. +Обработчик метода в модуле именуется `{ИмяШаблона}{ИмяМетода}`. + +```json +{ "type": "HTTPService", "name": "API", "rootURL": "api", + "urlTemplates": { + "Users": { "template": "/v1/users/{id}", "methods": { "Get": "GET", "Create": "POST", "Delete": "DELETE" } }, + "Health": "/health" + } } +``` + +## WebService (Веб-сервис, SOAP) + +| Ключ | Умолчание | Значения | +|------|-----------|----------| +| `namespace` | пусто | URI пространства имён WSDL | +| `xdtoPackages` | пусто | XDTO-пакеты | +| `reuseSessions` | `DontUse` | `DontUse` / `AutoUse` | +| `sessionMaxAge` | `20` | время жизни сессии, сек | +| `operations` | `{}` | операции (см. ниже) | + +`operations` — объект `{ "ИмяОперации": def }`, где `def`: +- строка — XDTO-тип возврата без параметров: `"xs:string"`; +- объект: `returnType` (по умолчанию `xs:string`), `nillable` (bool), `transactioned` (bool), + `handler` (имя процедуры, по умолчанию = имя операции), `parameters`. + +`parameters` — объект `{ "ИмяПараметра": def }`, где `def`: +- строка — XDTO-тип (`direction` = `In`); +- объект: `type` (по умолчанию `xs:string`), `nillable` (bool, по умолчанию `true`), `direction` (`In` / `Out` / `InOut`). + +XDTO-типы: `xs:string`, `xs:boolean`, `xs:int`, `xs:long`, `xs:decimal`, `xs:dateTime`, `xs:base64Binary`. + +```json +{ "type": "WebService", "name": "DataExchange", "namespace": "http://www.1c.ru/DataExchange", + "operations": { + "TestConnection": { "returnType": "xs:boolean", "handler": "ПроверкаПодключения", + "parameters": { "ErrorMessage": { "type": "xs:string", "direction": "Out" } } }, + "GetVersion": "xs:string" + } } +```