mcpField
M
meta-compile

meta-compile

github.com/nikolay-shirokov开发74158 次安装今天更新
代码仓库

关于 meta-compile

meta-compile 是面向 1C 配置开发的技能,可从 JSON 定义生成元数据 XML 和模块,并登记到 Configuration.xml。支持单个对象或批量生成,且保留平台管理的版本文件不变。

主要功能

  1. 01从 JSON 生成元数据 XML 和模块
  2. 02支持单对象及批量输入
  3. 03生成对象登记到 Configuration.xml
  4. 04支持多类配置对象及属性定义

适用场景

  1. 01根据对象定义创建 1C 配置元数据
  2. 02一次生成多个枚举、目录和常量
  3. 03为后续编辑与校验准备生成对象

安装

复制下面的命令,在终端中运行。

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

安装后在 Claude Code 中输入/meta-compile确认已加载。

包含的文件

除 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

详细介绍

/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>"
参数说明
JsonPathJSON 文件路径
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、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.Валюты" } ]

评论

支持 Markdown