关于 meta-compile
meta-compile 是面向 1C 配置开发的技能,可从 JSON 定义生成元数据 XML 和模块,并登记到 Configuration.xml。支持单个对象或批量生成,且保留平台管理的版本文件不变。
主要功能
- 01从 JSON 生成元数据 XML 和模块
- 02支持单对象及批量输入
- 03生成对象登记到 Configuration.xml
- 04支持多类配置对象及属性定义
适用场景
- 01根据对象定义创建 1C 配置元数据
- 02一次生成多个枚举、目录和常量
- 03为后续编辑与校验准备生成对象
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ nikolay-shirokov/ cc-1c-skills --skill meta-compile安装后在 Claude Code 中输入/meta-compile确认已加载。
包含的文件
除 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.py详细介绍
/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 格式
单个对象 { ... } 或对象数组 [{ ... }, { ... }](批量处理——每次运行处理多个对象)。
{ "type": "Catalog", "name": "Номенклатура", "...свойства типа...": "..." }
type 和 name 为必填项。其余属性取决于类型(见下方索引)。默认情况下,synonym 根据 name 生成(CamelCase → 以空格分隔的单词);也可以显式指定字符串或多语言值:"synonym": { "ru": "…", "en": "…" }。
属性(简写形式)
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(累积寄存器) |
如果属性需要简写形式之外的属性(填充值、选择参数、格式、提示等),则使用对象形式指定,参见 reference/attributes.md。
表格部分
"tabularSections": { "Товары": ["Номенклатура: CatalogRef.Номенклатура", "Количество: Number(15,3)"] }
键为表格部分名称,值为列数组(简写形式)或包含表格部分属性的对象(参见 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.Валюты" } ]