mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-20 09:30:59 +03:00
feat(meta-compile,meta-decompile): поддержка CommonPicture + CommonTemplate (v1.60/v0.51)
31-32-й типы, 4506 объектов acc+erp. Только МЕТАДАННЫЕ + регистрация; содержимое (Ext/Picture*, Ext/Template.* — бинарь/MXL) вне скоупа (импорт/mxl-compile отдельно). - CommonPicture: AvailabilityForChoice/AvailabilityForAppearance (дефолт false). - CommonTemplate: TemplateType (дефолт SpreadsheetDocument, корпус 725). ПОЛНЫЙ КОРПУС 4506/4506 byte-exact, TOTAL 0, 0 крашей (метаданные). Регресс 70/70 ps1+py, ps1==py identical. spec §7.15g, кейсы common-picture/common-template. **Модель meta-compile: 32 типа метаданных.** Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
df42f6cc79
commit
30d5174351
@@ -1,4 +1,4 @@
|
||||
# meta-compile v1.59 — Compile 1C metadata object from JSON
|
||||
# meta-compile v1.60 — Compile 1C metadata object from JSON
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
param(
|
||||
[Parameter(Mandatory)]
|
||||
@@ -349,7 +349,8 @@ $validTypes = @("Catalog","Document","Enum","Constant","InformationRegister","Ac
|
||||
"Report","DataProcessor","CommonModule","ScheduledJob","EventSubscription",
|
||||
"HTTPService","WebService","DefinedType","FunctionalOption",
|
||||
"Sequence","FilterCriterion","DocumentNumerator","SettingsStorage","CommonForm",
|
||||
"SessionParameter","CommonCommand","CommandGroup","CommonAttribute","FunctionalOptionsParameter","WSReference")
|
||||
"SessionParameter","CommonCommand","CommandGroup","CommonAttribute","FunctionalOptionsParameter","WSReference",
|
||||
"CommonPicture","CommonTemplate")
|
||||
if ($objType -notin $validTypes) {
|
||||
Write-Error "Unsupported type: $objType. Valid: $($validTypes -join ', ')"
|
||||
exit 1
|
||||
@@ -2683,6 +2684,25 @@ function Emit-WSReferenceProperties {
|
||||
if ($url) { X "$i<LocationURL>$(Esc-XmlText $url)</LocationURL>" } else { X "$i<LocationURL/>" }
|
||||
}
|
||||
|
||||
function Emit-CommonPictureProperties {
|
||||
param([string]$indent)
|
||||
$i = $indent
|
||||
X "$i<Name>$(Esc-Xml $objName)</Name>"
|
||||
Emit-MLText $i "Synonym" $synonym
|
||||
if ($def.comment) { X "$i<Comment>$(Esc-XmlText $def.comment)</Comment>" } else { X "$i<Comment/>" }
|
||||
X "$i<AvailabilityForChoice>$(if (Get-BoolProp 'availabilityForChoice' $false) { 'true' } else { 'false' })</AvailabilityForChoice>"
|
||||
X "$i<AvailabilityForAppearance>$(if (Get-BoolProp 'availabilityForAppearance' $false) { 'true' } else { 'false' })</AvailabilityForAppearance>"
|
||||
}
|
||||
|
||||
function Emit-CommonTemplateProperties {
|
||||
param([string]$indent)
|
||||
$i = $indent
|
||||
X "$i<Name>$(Esc-Xml $objName)</Name>"
|
||||
Emit-MLText $i "Synonym" $synonym
|
||||
if ($def.comment) { X "$i<Comment>$(Esc-XmlText $def.comment)</Comment>" } else { X "$i<Comment/>" }
|
||||
X "$i<TemplateType>$(Get-EnumProp 'TemplateType' 'templateType' 'SpreadsheetDocument')</TemplateType>"
|
||||
}
|
||||
|
||||
function Emit-CommandGroupProperties {
|
||||
param([string]$indent)
|
||||
$i = $indent
|
||||
@@ -3901,6 +3921,8 @@ switch ($objType) {
|
||||
"CommonAttribute" { Emit-CommonAttributeProperties "`t`t`t" }
|
||||
"FunctionalOptionsParameter" { Emit-FunctionalOptionsParameterProperties "`t`t`t" }
|
||||
"WSReference" { Emit-WSReferenceProperties "`t`t`t" }
|
||||
"CommonPicture" { Emit-CommonPictureProperties "`t`t`t" }
|
||||
"CommonTemplate" { Emit-CommonTemplateProperties "`t`t`t" }
|
||||
"CommonModule" { Emit-CommonModuleProperties "`t`t`t" }
|
||||
"ScheduledJob" { Emit-ScheduledJobProperties "`t`t`t" }
|
||||
"EventSubscription" { Emit-EventSubscriptionProperties "`t`t`t" }
|
||||
@@ -4242,6 +4264,8 @@ $script:typePluralMap = @{
|
||||
"CommonAttribute" = "CommonAttributes"
|
||||
"FunctionalOptionsParameter" = "FunctionalOptionsParameters"
|
||||
"WSReference" = "WSReferences"
|
||||
"CommonPicture" = "CommonPictures"
|
||||
"CommonTemplate" = "CommonTemplates"
|
||||
}
|
||||
|
||||
$typePlural = $script:typePluralMap[$objType]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# meta-compile v1.59 — Compile 1C metadata object from JSON
|
||||
# meta-compile v1.60 — Compile 1C metadata object from JSON
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
|
||||
import argparse
|
||||
@@ -465,6 +465,7 @@ valid_types = [
|
||||
'Sequence', 'FilterCriterion', 'DocumentNumerator', 'SettingsStorage',
|
||||
'CommonForm',
|
||||
'SessionParameter', 'CommonCommand', 'CommandGroup', 'CommonAttribute', 'FunctionalOptionsParameter', 'WSReference',
|
||||
'CommonPicture', 'CommonTemplate',
|
||||
]
|
||||
if obj_type not in valid_types:
|
||||
print(f"Unsupported type: {obj_type}. Valid: {', '.join(valid_types)}", file=sys.stderr)
|
||||
@@ -2702,6 +2703,21 @@ def emit_ws_reference_properties(indent):
|
||||
else:
|
||||
X(f'{i}<LocationURL/>')
|
||||
|
||||
def emit_common_picture_properties(indent):
|
||||
i = indent
|
||||
X(f'{i}<Name>{esc_xml(obj_name)}</Name>')
|
||||
emit_mltext(i, 'Synonym', synonym)
|
||||
_emit_comment(i)
|
||||
X(f'{i}<AvailabilityForChoice>{"true" if get_bool_prop("availabilityForChoice", False) else "false"}</AvailabilityForChoice>')
|
||||
X(f'{i}<AvailabilityForAppearance>{"true" if get_bool_prop("availabilityForAppearance", False) else "false"}</AvailabilityForAppearance>')
|
||||
|
||||
def emit_common_template_properties(indent):
|
||||
i = indent
|
||||
X(f'{i}<Name>{esc_xml(obj_name)}</Name>')
|
||||
emit_mltext(i, 'Synonym', synonym)
|
||||
_emit_comment(i)
|
||||
X(f'{i}<TemplateType>{get_enum_prop("TemplateType", "templateType", "SpreadsheetDocument")}</TemplateType>')
|
||||
|
||||
def emit_command_group_properties(indent):
|
||||
i = indent
|
||||
X(f'{i}<Name>{esc_xml(obj_name)}</Name>')
|
||||
@@ -3801,6 +3817,8 @@ property_emitters = {
|
||||
'CommonAttribute': emit_common_attribute_properties,
|
||||
'FunctionalOptionsParameter': emit_functional_options_parameter_properties,
|
||||
'WSReference': emit_ws_reference_properties,
|
||||
'CommonPicture': emit_common_picture_properties,
|
||||
'CommonTemplate': emit_common_template_properties,
|
||||
'CommonModule': emit_common_module_properties,
|
||||
'ScheduledJob': emit_scheduled_job_properties,
|
||||
'EventSubscription': emit_event_subscription_properties,
|
||||
@@ -4126,6 +4144,8 @@ type_plural_map = {
|
||||
'CommonAttribute': 'CommonAttributes',
|
||||
'FunctionalOptionsParameter': 'FunctionalOptionsParameters',
|
||||
'WSReference': 'WSReferences',
|
||||
'CommonPicture': 'CommonPictures',
|
||||
'CommonTemplate': 'CommonTemplates',
|
||||
}
|
||||
|
||||
type_plural = type_plural_map[obj_type]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# meta-decompile v0.50 — XML объекта метаданных 1С → JSON-черновик формата meta-compile
|
||||
# meta-decompile v0.51 — XML объекта метаданных 1С → JSON-черновик формата meta-compile
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
#
|
||||
# Поддержаны: Catalog, ExchangePlan, ChartOfCharacteristicTypes, ChartOfAccounts, ChartOfCalculationTypes, Document,
|
||||
@@ -92,8 +92,8 @@ foreach ($c in $rootEl.ChildNodes) { if ($c.NodeType -eq 'Element') { $objNode =
|
||||
if (-not $objNode) { [Console]::Error.WriteLine("meta-decompile: пустой MetaDataObject"); exit 3 }
|
||||
$objType = $objNode.LocalName
|
||||
|
||||
if ($objType -notin @('Catalog', 'ExchangePlan', 'ChartOfCharacteristicTypes', 'ChartOfAccounts', 'ChartOfCalculationTypes', 'Document', 'InformationRegister', 'AccumulationRegister', 'AccountingRegister', 'CalculationRegister', 'BusinessProcess', 'Task', 'Enum', 'Report', 'DataProcessor', 'Constant', 'DefinedType', 'FunctionalOption', 'DocumentJournal', 'Sequence', 'FilterCriterion', 'DocumentNumerator', 'SettingsStorage', 'CommonModule', 'EventSubscription', 'ScheduledJob', 'CommonForm', 'SessionParameter', 'CommonCommand', 'CommandGroup', 'CommonAttribute', 'FunctionalOptionsParameter', 'WSReference')) {
|
||||
[Console]::Error.WriteLine("meta-decompile: тип '$objType' пока не поддержан (…, SessionParameter, CommonCommand, CommandGroup, CommonAttribute, FunctionalOptionsParameter, WSReference)"); exit 3
|
||||
if ($objType -notin @('Catalog', 'ExchangePlan', 'ChartOfCharacteristicTypes', 'ChartOfAccounts', 'ChartOfCalculationTypes', 'Document', 'InformationRegister', 'AccumulationRegister', 'AccountingRegister', 'CalculationRegister', 'BusinessProcess', 'Task', 'Enum', 'Report', 'DataProcessor', 'Constant', 'DefinedType', 'FunctionalOption', 'DocumentJournal', 'Sequence', 'FilterCriterion', 'DocumentNumerator', 'SettingsStorage', 'CommonModule', 'EventSubscription', 'ScheduledJob', 'CommonForm', 'SessionParameter', 'CommonCommand', 'CommandGroup', 'CommonAttribute', 'FunctionalOptionsParameter', 'WSReference', 'CommonPicture', 'CommonTemplate')) {
|
||||
[Console]::Error.WriteLine("meta-decompile: тип '$objType' пока не поддержан (…, CommonPicture, CommonTemplate)"); exit 3
|
||||
}
|
||||
|
||||
$props = $objNode.SelectSingleNode('md:Properties', $nsm)
|
||||
@@ -704,6 +704,15 @@ if ($objType -eq 'FunctionalOptionsParameter') {
|
||||
if ($objType -eq 'WSReference') {
|
||||
$url = P 'LocationURL'; if ($url) { $dsl['locationURL'] = $url }
|
||||
}
|
||||
# CommonPicture — общая картинка: доступность (содержимое Ext/Picture вне скоупа).
|
||||
if ($objType -eq 'CommonPicture') {
|
||||
Add-BoolProp 'availabilityForChoice' 'AvailabilityForChoice' $false
|
||||
Add-BoolProp 'availabilityForAppearance' 'AvailabilityForAppearance' $false
|
||||
}
|
||||
# CommonTemplate — общий макет: тип макета (содержимое Ext/Template.* вне скоупа).
|
||||
if ($objType -eq 'CommonTemplate') {
|
||||
Add-EnumProp 'templateType' 'TemplateType' 'SpreadsheetDocument'
|
||||
}
|
||||
# Общий захват структурного <Picture> (зеркало Emit-CommandPicture). Пишет в $tgt ключи picture/loadTransparent.
|
||||
function Get-PictureToDsl { param($propsNode, $tgt)
|
||||
$refN = $propsNode.SelectSingleNode('md:Picture/xr:Ref', $nsm)
|
||||
|
||||
Reference in New Issue
Block a user