mcpField
M
meta-compile

meta-compile

github.com/nikolay-shirokovDevelopment74158 installsUpdated today
Repository

About meta-compile

meta-compile is a skill for 1C configuration development that turns JSON object definitions into metadata XML and modules, then registers them in Configuration.xml. It handles single objects or batches while leaving the platform-managed version file untouched.

Key features

  1. 01Generate metadata XML and modules from JSON
  2. 02Accept single objects or batches
  3. 03Register generated objects in Configuration.xml
  4. 04Support many object types and property definitions

Use cases

  1. 01Create 1C configuration metadata from object definitions
  2. 02Generate enums, catalogs, and constants in one run
  3. 03Prepare generated objects for later editing and validation

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/nikolay-shirokov/cc-1c-skills --skill meta-compile

After installing, type/meta-compilein Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

reference/
attributes.md
blocks.md
catalog.md
charts.md
code.md
document.md
exchangeplan.md
external-data-source.md
other-types.md
process.md
registers.md
report-dataprocessor.md
simple.md
web.md
scripts/
meta-compile.ps1
meta-compile.py

Details

From the project README

/meta-compile — генерация объектов метаданных из JSON

Принимает JSON-определение объекта → генерирует XML + модули в структуре выгрузки конфигурации и регистрирует объект в Configuration.xml.

ConfigDumpInfo.xml намеренно не трогается: это служебный файл версий объектов, которым управляет платформа (для инкрементальной выгрузки).

Порядок работы

  1. Составь JSON по синтаксису ниже → запиши во временный файл.
  2. Запусти скрипт.
  3. Изменить созданный объект — /meta-edit; проверить — /meta-validate.
powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/meta-compile.ps1" -JsonPath "<json>" -OutputDir "<ConfigDir>"
ПараметрОписание
JsonPathПуть к JSON-файлу
OutputDirКорень выгрузки конфигурации (где Configuration.xml, Catalogs/, Documents/, …)

Формат JSON

Один объект { ... } или массив объектов [{ ... }, { ... }] (batch — несколько объектов за прогон).

{ "type": "Catalog", "name": "Номенклатура", "...свойства типа...": "..." }

type и name — обязательные. Остальное — по типу (см. индекс ниже). synonym по умолчанию выводится из name (CamelCase → слова через пробел); можно задать явно строкой или мультиязычно: "synonym": { "ru": "…", "en": "…" }.

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

Массивы attributes, dimensions, resources и колонки в tabularSections задаются строками:

"Имя"                          → String(10)
"Имя: Тип"                     → с типом
"Имя: Тип | req, index"        → с флагами

Типы: 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.Контрагенты".

Флаги (после |, через запятую):

ФлагЗначениеГде
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.

Табличные части

"tabularSections": { "Товары": ["Номенклатура: CatalogRef.Номенклатура", "Количество: Number(15,3)"] }

Ключ — имя ТЧ, значение — массив колонок (shorthand) ЛИБО объект со свойствами ТЧ (см. reference/attributes.md).

Индекс: свойства по типам

Для каждого типа — свой reference-файл со свойствами, дефолтами и допустимыми значениями:

Тип(ы)Файл
Catalog (справочник)reference/catalog.md
Document, DocumentJournal, Sequence, DocumentNumeratorreference/document.md
InformationRegister, AccumulationRegister, AccountingRegister, CalculationRegisterreference/registers.md
ChartOfAccounts, ChartOfCharacteristicTypes, ChartOfCalculationTypesreference/charts.md
ExchangePlanreference/exchangeplan.md
BusinessProcess, Taskreference/process.md
Report, DataProcessorreference/report-dataprocessor.md
CommonModule, ScheduledJob, EventSubscriptionreference/code.md
HTTPService, WebServicereference/web.md
Enum, Constant, DefinedTypereference/simple.md
ExternalDataSource (внешний источник данных)reference/external-data-source.md
FunctionalOption, FilterCriterion, SettingsStorage, CommonForm, CommonPicture, CommonTemplate, служебныеreference/other-types.md

Кросс-типовые детали:

  • reference/attributes.md — объектная форма реквизита и колонки ТЧ (значение заполнения, параметры выбора, формат, подсказка, границы, …) + свойства самой ТЧ.
  • reference/blocks.md — блоки объекта: представления, команды (+ характеристики/стандартные реквизиты).

Эта инструкция и reference-файлы — полная документация. Не ищи примеры XML в выгрузках конфигураций.

Примеры

Справочник с реквизитами:

{ "type": "Catalog", "name": "Организации", "descriptionLength": 100,
  "attributes": ["ИНН: String(12)", "КПП: String(9)", "Директор: CatalogRef.ФизическиеЛица"] }

Документ с движениями и ТЧ:

{ "type": "Document", "name": "ПриходнаяНакладная",
  "registerRecords": ["AccumulationRegister.ОстаткиТоваров"],
  "attributes": ["Организация: CatalogRef.Организации", "Контрагент: CatalogRef.Контрагенты"],
  "tabularSections": { "Товары": ["Номенклатура: CatalogRef.Номенклатура", "Количество: Number(15,3)", "Цена: Number(15,2)"] } }

Регистр сведений:

{ "type": "InformationRegister", "name": "КурсыВалют", "periodicity": "Day",
  "dimensions": ["Валюта: CatalogRef.Валюты | master, mainFilter, denyIncomplete"],
  "resources": ["Курс: Number(15,4)", "Кратность: Number(10,0)"] }

Batch:

[ { "type": "Enum", "name": "Статусы", "values": ["Новый", "Закрыт"] },
  { "type": "Catalog", "name": "Валюты" },
  { "type": "Constant", "name": "ОсновнаяВалюта", "valueType": "CatalogRef.Валюты" } ]

Comments

Markdown supported