diff --git a/.claude/skills/meta-compile/scripts/meta-compile.ps1 b/.claude/skills/meta-compile/scripts/meta-compile.ps1 index 8166b47e..a5e18f94 100644 --- a/.claude/skills/meta-compile/scripts/meta-compile.ps1 +++ b/.claude/skills/meta-compile/scripts/meta-compile.ps1 @@ -1,4 +1,4 @@ -# meta-compile v1.85 — Compile 1C metadata object from JSON +# meta-compile v1.86 — Compile 1C metadata object from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -1300,16 +1300,17 @@ $script:standardAttributesByType = @{ "Enum" = @("Order","Ref") "InformationRegister" = @("Active","LineNumber","Recorder","Period") "AccumulationRegister" = @("Active","LineNumber","Recorder","Period") - "AccountingRegister" = @("Active","Period","Recorder","LineNumber","Account") + "AccountingRegister" = @("Account","Active","LineNumber","Recorder","Period") "CalculationRegister" = @("Active","Recorder","LineNumber","RegistrationPeriod","CalculationType","ReversingEntry") "ChartOfAccounts" = @("PredefinedDataName","Order","OffBalance","Type","Description","Code","Parent","Predefined","DeletionMark","Ref") - "ChartOfCharacteristicTypes" = @("PredefinedDataName","Predefined","Ref","DeletionMark","Description","Code","Parent","ValueType") + "ChartOfCharacteristicTypes" = @("PredefinedDataName","ValueType","Description","Code","IsFolder","Parent","Predefined","DeletionMark","Ref") "ChartOfCalculationTypes" = @("PredefinedDataName","Predefined","Ref","DeletionMark","ActionPeriodIsBasic","Description","Code") - "BusinessProcess" = @("Ref","DeletionMark","Date","Number","Started","Completed","HeadTask") - "Task" = @("Ref","DeletionMark","Date","Number","Executed","Description","RoutePoint","BusinessProcess") - # Порядок снят с выгрузки: у плана обмена блок начинается с ThisNode, а не с Ref - # (acc+erp, 8 объектов, разброса нет). Прочие типы в этой таблице совпадают с - # платформой — расхождений порядка по ним корпусный раундтрип не показал. + "BusinessProcess" = @("Started","HeadTask","Completed","Ref","DeletionMark","Date","Number") + "Task" = @("Executed","Description","RoutePoint","BusinessProcess","Ref","DeletionMark","Date","Number") + # Порядок в каждом списке — канон выгрузки, снят с корпуса acc+erp (внутри типа разброса нет). + # У ПВХ IsFolder входит в фикс-список: он есть у всех 23 объектов корпуса с этим блоком. + # У бухрегистра PeriodAdjustment, наоборот, условен (1 из 3) — он приходит как «лишний» + # ключ и эмитится ПЕРЕД фикс-списком, что совпадает с платформой. "ExchangePlan" = @("ThisNode","ReceivedNo","SentNo","Ref","DeletionMark","Description","Code") "DocumentJournal" = @("Type","Ref","Date","Posted","DeletionMark","Number") } @@ -2003,9 +2004,12 @@ function Emit-Attribute { } } - # Use — only for catalog top-level attributes + # Use — у реквизитов справочника и ПВХ. Позиция РАЗНАЯ: справочник пишет Use ПЕРЕД + # Indexing, ПВХ — ПОСЛЕ него (корпус acc+erp: Catalog `Use,Indexing,FullTextSearch`, + # ПВХ `Indexing,Use,FullTextSearch,DataHistory`). Отсюда отдельный контекст "cct": + # структурно реквизит ПВХ совпадает со справочником, расходится только этим порядком. + $use = if ($parsed.use) { $parsed.use } else { "ForItem" } if ($context -eq "catalog") { - $use = if ($parsed.use) { $parsed.use } else { "ForItem" } X "$indent`t`t$use" } @@ -2021,6 +2025,7 @@ function Emit-Attribute { if ($parsed.indexing) { $indexing = $parsed.indexing } X "$indent`t`t$indexing" } + if ($context -eq "cct") { X "$indent`t`t$use" } # Реквизит адресации задачи: AddressingDimension (ссылка на измерение регистра исполнителей), между Indexing и FullTextSearch. if ($context -eq "task-addressing" -and $elemTag -eq "AddressingAttribute") { @@ -4328,7 +4333,7 @@ if ($objType -in $typesWithAttrTS) { "Catalog" { "catalog" } "Document" { "document" } { $_ -in @("DataProcessor","Report") } { "processor" } - "ChartOfCharacteristicTypes" { "catalog" } # реквизиты ПВХ структурно как у справочника (Use/FillFromFillingValue/DataHistory) + "ChartOfCharacteristicTypes" { "cct" } # как catalog (Use/FillFromFillingValue/DataHistory), но Use ПОСЛЕ Indexing { $_ -in @("ChartOfAccounts","ChartOfCalculationTypes") } { "account" } # как catalog, но БЕЗ (реквизиты ПС/ПВР не иерархичны как справочник) default { "object" } } diff --git a/.claude/skills/meta-compile/scripts/meta-compile.py b/.claude/skills/meta-compile/scripts/meta-compile.py index 8da7fa90..e98ca59a 100644 --- a/.claude/skills/meta-compile/scripts/meta-compile.py +++ b/.claude/skills/meta-compile/scripts/meta-compile.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# meta-compile v1.85 — Compile 1C metadata object from JSON +# meta-compile v1.86 — Compile 1C metadata object from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -1333,13 +1333,17 @@ standard_attributes_by_type = { 'Enum': ['Order', 'Ref'], 'InformationRegister': ['Active', 'LineNumber', 'Recorder', 'Period'], 'AccumulationRegister': ['Active', 'LineNumber', 'Recorder', 'Period'], - 'AccountingRegister': ['Active', 'Period', 'Recorder', 'LineNumber', 'Account'], + 'AccountingRegister': ['Account', 'Active', 'LineNumber', 'Recorder', 'Period'], 'CalculationRegister': ['Active', 'Recorder', 'LineNumber', 'RegistrationPeriod', 'CalculationType', 'ReversingEntry'], 'ChartOfAccounts': ['PredefinedDataName', 'Order', 'OffBalance', 'Type', 'Description', 'Code', 'Parent', 'Predefined', 'DeletionMark', 'Ref'], - 'ChartOfCharacteristicTypes': ['PredefinedDataName', 'Predefined', 'Ref', 'DeletionMark', 'Description', 'Code', 'Parent', 'ValueType'], + 'ChartOfCharacteristicTypes': ['PredefinedDataName', 'ValueType', 'Description', 'Code', 'IsFolder', 'Parent', 'Predefined', 'DeletionMark', 'Ref'], 'ChartOfCalculationTypes': ['PredefinedDataName', 'Predefined', 'Ref', 'DeletionMark', 'ActionPeriodIsBasic', 'Description', 'Code'], - 'BusinessProcess': ['Ref', 'DeletionMark', 'Date', 'Number', 'Started', 'Completed', 'HeadTask'], - 'Task': ['Ref', 'DeletionMark', 'Date', 'Number', 'Executed', 'Description', 'RoutePoint', 'BusinessProcess'], + # Порядок в каждом списке — канон выгрузки, снят с корпуса acc+erp (внутри типа разброса нет). + # У ПВХ IsFolder входит в фикс-список: он есть у всех 23 объектов корпуса с этим блоком. + # У бухрегистра PeriodAdjustment, наоборот, условен (1 из 3) — он приходит как «лишний» + # ключ и эмитится ПЕРЕД фикс-списком, что совпадает с платформой. + 'BusinessProcess': ['Started', 'HeadTask', 'Completed', 'Ref', 'DeletionMark', 'Date', 'Number'], + 'Task': ['Executed', 'Description', 'RoutePoint', 'BusinessProcess', 'Ref', 'DeletionMark', 'Date', 'Number'], # Порядок снят с выгрузки: у плана обмена блок начинается с ThisNode, а не с Ref # (acc+erp, 8 объектов, разброса нет). Прочие типы в этой таблице совпадают с # платформой — расхождений порядка по ним корпусный раундтрип не показал. @@ -2081,8 +2085,13 @@ def emit_attribute(indent, parsed, context, elem_tag='Attribute'): X(f'{indent}\t\t{esc_xml_text(str(parsed["extDimensionAccountingFlag"]))}') else: X(f'{indent}\t\t') + # Use — у реквизитов справочника и ПВХ. Позиция РАЗНАЯ: справочник пишет Use ПЕРЕД + # Indexing, ПВХ — ПОСЛЕ него (корпус acc+erp: Catalog `Use,Indexing,FullTextSearch`, + # ПВХ `Indexing,Use,FullTextSearch,DataHistory`). Отсюда отдельный контекст 'cct': + # структурно реквизит ПВХ совпадает со справочником, расходится только этим порядком. + use_value = parsed.get("use") or "ForItem" if context == 'catalog': - X(f'{indent}\t\t{parsed.get("use") or "ForItem"}') + X(f'{indent}\t\t{use_value}') if context not in ('processor', 'processor-tabular'): # Признаки учёта ПС (account-flag) не имеют /, но имеют . if context != 'account-flag': @@ -2096,6 +2105,8 @@ def emit_attribute(indent, parsed, context, elem_tag='Attribute'): if parsed.get('indexing'): indexing = parsed['indexing'] X(f'{indent}\t\t{indexing}') + if context == 'cct': + X(f'{indent}\t\t{use_value}') # Реквизит адресации задачи: AddressingDimension (между Indexing и FullTextSearch). if context == 'task-addressing' and elem_tag == 'AddressingAttribute': if parsed.get('addressingDimension'): @@ -4245,7 +4256,7 @@ if obj_type in types_with_attr_ts: elif obj_type in ('DataProcessor', 'Report'): context = 'processor' elif obj_type == 'ChartOfCharacteristicTypes': - context = 'catalog' # реквизиты ПВХ структурно как у справочника (Use/FillFromFillingValue/DataHistory) + context = 'cct' # как catalog (Use/FillFromFillingValue/DataHistory), но Use ПОСЛЕ Indexing elif obj_type in ('ChartOfAccounts', 'ChartOfCalculationTypes'): context = 'account' # как catalog, но БЕЗ (реквизиты ПС/ПВР не иерархичны как справочник) else: diff --git a/tests/skills/cases/meta-compile/snapshots/accounting-register/AccountingRegisters/Хозрасчетный.xml b/tests/skills/cases/meta-compile/snapshots/accounting-register/AccountingRegisters/Хозрасчетный.xml index f90a91ca..fce7b5b5 100644 --- a/tests/skills/cases/meta-compile/snapshots/accounting-register/AccountingRegisters/Хозрасчетный.xml +++ b/tests/skills/cases/meta-compile/snapshots/accounting-register/AccountingRegisters/Хозрасчетный.xml @@ -48,6 +48,32 @@ + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + DontCheck @@ -74,58 +100,6 @@ - - - DontCheck - false - false - Auto - - - false - - - Auto - Auto - - false - Use - false - - - - Use - - - - - - - - DontCheck - false - false - Auto - - - false - - - Auto - Auto - - false - Use - false - - - - Use - - - - - DontCheck @@ -152,7 +126,33 @@ - + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + + DontCheck false diff --git a/tests/skills/cases/meta-compile/snapshots/business-process/BusinessProcesses/СогласованиеДокумента.xml b/tests/skills/cases/meta-compile/snapshots/business-process/BusinessProcesses/СогласованиеДокумента.xml index 60093cd6..00734df7 100644 --- a/tests/skills/cases/meta-compile/snapshots/business-process/BusinessProcesses/СогласованиеДокумента.xml +++ b/tests/skills/cases/meta-compile/snapshots/business-process/BusinessProcesses/СогласованиеДокумента.xml @@ -57,6 +57,84 @@ Variable true + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + DontCheck @@ -161,84 +239,6 @@ - - - DontCheck - false - false - Auto - - - false - - - Auto - Auto - - false - Use - false - - - - Use - - - - - - - - DontCheck - false - false - Auto - - - false - - - Auto - Auto - - false - Use - false - - - - Use - - - - - - - - DontCheck - false - false - Auto - - - false - - - Auto - Auto - - false - Use - false - - - - Use - - - - - true diff --git a/tests/skills/cases/meta-compile/snapshots/chart-of-characteristic-types/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения.xml b/tests/skills/cases/meta-compile/snapshots/chart-of-characteristic-types/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения.xml index 8099e88e..1e75a304 100644 --- a/tests/skills/cases/meta-compile/snapshots/chart-of-characteristic-types/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения.xml +++ b/tests/skills/cases/meta-compile/snapshots/chart-of-characteristic-types/ChartsOfCharacteristicTypes/ДополнительныеРеквизитыИСведения.xml @@ -94,59 +94,7 @@ - - - DontCheck - false - false - Auto - - - false - - - Auto - Auto - - false - Use - false - - - - Use - - - - - - - - DontCheck - false - false - Auto - - - false - - - Auto - Auto - - false - Use - false - - - - Use - - - - - - + DontCheck false @@ -229,6 +177,32 @@ + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + DontCheck @@ -255,7 +229,59 @@ - + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + + DontCheck false @@ -358,8 +384,8 @@ Auto - ForItem DontIndex + ForItem Use Use diff --git a/tests/skills/cases/meta-compile/snapshots/task/Tasks/ЗадачаИсполнителя.xml b/tests/skills/cases/meta-compile/snapshots/task/Tasks/ЗадачаИсполнителя.xml index c48fb3d6..3a1812e3 100644 --- a/tests/skills/cases/meta-compile/snapshots/task/Tasks/ЗадачаИсполнителя.xml +++ b/tests/skills/cases/meta-compile/snapshots/task/Tasks/ЗадачаИсполнителя.xml @@ -45,110 +45,6 @@ - - - DontCheck - false - false - Auto - - - false - - - Auto - Auto - - false - Use - false - - - - Use - - - - - - - - DontCheck - false - false - Auto - - - false - - - Auto - Auto - - false - Use - false - - - - Use - - - - - - - - DontCheck - false - false - Auto - - - false - - - Auto - Auto - - false - Use - false - - - - Use - - - - - - - - DontCheck - false - false - Auto - - - false - - - Auto - Auto - - false - Use - false - - - - Use - - - - - DontCheck @@ -253,6 +149,110 @@ + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + AsDescription diff --git a/tests/skills/cases/meta-decompile/snapshots/ccot-value-type-marker/ChartsOfCharacteristicTypes/ВидыСведений.xml b/tests/skills/cases/meta-decompile/snapshots/ccot-value-type-marker/ChartsOfCharacteristicTypes/ВидыСведений.xml index dd5db385..c91f59d2 100644 --- a/tests/skills/cases/meta-decompile/snapshots/ccot-value-type-marker/ChartsOfCharacteristicTypes/ВидыСведений.xml +++ b/tests/skills/cases/meta-decompile/snapshots/ccot-value-type-marker/ChartsOfCharacteristicTypes/ВидыСведений.xml @@ -82,7 +82,7 @@ - + DontCheck false @@ -104,59 +104,7 @@ Use - - - - - - - DontCheck - false - false - Auto - - - false - - - Auto - Auto - - false - Use - false - - - - Use - - - - - - - - DontCheck - false - false - Auto - - - false - - - Auto - Auto - - false - Use - false - - - - Use - - + @@ -212,6 +160,32 @@ + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + DontCheck @@ -238,7 +212,7 @@ - + DontCheck false @@ -260,7 +234,59 @@ Use - + + + + + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + + + + DontCheck + false + false + Auto + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + diff --git a/tests/skills/cases/meta-decompile/snapshots/ccot-value-type-marker/draft.json b/tests/skills/cases/meta-decompile/snapshots/ccot-value-type-marker/draft.json index 93cc5991..38eee826 100644 --- a/tests/skills/cases/meta-decompile/snapshots/ccot-value-type-marker/draft.json +++ b/tests/skills/cases/meta-decompile/snapshots/ccot-value-type-marker/draft.json @@ -7,6 +7,7 @@ "fillValue": { "typeDescription": true } - } + }, + "IsFolder": {} } } \ No newline at end of file