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
- 01Generate metadata XML and modules from JSON
- 02Accept single objects or batches
- 03Register generated objects in Configuration.xml
- 04Support many object types and property definitions
Use cases
- 01Create 1C configuration metadata from object definitions
- 02Generate enums, catalogs, and constants in one run
- 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-compileAfter installing, type/meta-compilein Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
reference/attributes.mdblocks.mdcatalog.mdcharts.mdcode.mddocument.mdexchangeplan.mdexternal-data-source.mdother-types.mdprocess.mdregisters.mdreport-dataprocessor.mdsimple.mdweb.mdscripts/meta-compile.ps1meta-compile.pyDetails
From the project README/meta-compile — генерация объектов метаданных из JSON
Принимает JSON-определение объекта → генерирует XML + модули в структуре выгрузки конфигурации и
регистрирует объект в Configuration.xml.
ConfigDumpInfo.xml намеренно не трогается: это служебный файл версий объектов, которым управляет
платформа (для инкрементальной выгрузки).
Порядок работы
- Составь JSON по синтаксису ниже → запиши во временный файл.
- Запусти скрипт.
- Изменить созданный объект —
/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, 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 |
| 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.Валюты" } ]