diff --git a/.claude/skills/meta-compile/scripts/meta-compile.ps1 b/.claude/skills/meta-compile/scripts/meta-compile.ps1 index f3063052..7332905b 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.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$(Esc-XmlText $url)" } else { X "$i" } } +function Emit-CommonPictureProperties { + param([string]$indent) + $i = $indent + X "$i$(Esc-Xml $objName)" + Emit-MLText $i "Synonym" $synonym + if ($def.comment) { X "$i$(Esc-XmlText $def.comment)" } else { X "$i" } + X "$i$(if (Get-BoolProp 'availabilityForChoice' $false) { 'true' } else { 'false' })" + X "$i$(if (Get-BoolProp 'availabilityForAppearance' $false) { 'true' } else { 'false' })" +} + +function Emit-CommonTemplateProperties { + param([string]$indent) + $i = $indent + X "$i$(Esc-Xml $objName)" + Emit-MLText $i "Synonym" $synonym + if ($def.comment) { X "$i$(Esc-XmlText $def.comment)" } else { X "$i" } + X "$i$(Get-EnumProp 'TemplateType' 'templateType' 'SpreadsheetDocument')" +} + 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] diff --git a/.claude/skills/meta-compile/scripts/meta-compile.py b/.claude/skills/meta-compile/scripts/meta-compile.py index f0e92734..7888dbc3 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.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}') +def emit_common_picture_properties(indent): + i = indent + X(f'{i}{esc_xml(obj_name)}') + emit_mltext(i, 'Synonym', synonym) + _emit_comment(i) + X(f'{i}{"true" if get_bool_prop("availabilityForChoice", False) else "false"}') + X(f'{i}{"true" if get_bool_prop("availabilityForAppearance", False) else "false"}') + +def emit_common_template_properties(indent): + i = indent + X(f'{i}{esc_xml(obj_name)}') + emit_mltext(i, 'Synonym', synonym) + _emit_comment(i) + X(f'{i}{get_enum_prop("TemplateType", "templateType", "SpreadsheetDocument")}') + def emit_command_group_properties(indent): i = indent X(f'{i}{esc_xml(obj_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] diff --git a/.claude/skills/meta-decompile/scripts/meta-decompile.ps1 b/.claude/skills/meta-decompile/scripts/meta-decompile.ps1 index d62b3fa8..373236d7 100644 --- a/.claude/skills/meta-decompile/scripts/meta-decompile.ps1 +++ b/.claude/skills/meta-decompile/scripts/meta-decompile.ps1 @@ -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' +} # Общий захват структурного (зеркало Emit-CommandPicture). Пишет в $tgt ключи picture/loadTransparent. function Get-PictureToDsl { param($propsNode, $tgt) $refN = $propsNode.SelectSingleNode('md:Picture/xr:Ref', $nsm) diff --git a/docs/meta-dsl-spec.md b/docs/meta-dsl-spec.md index 368c98f9..a198b3eb 100644 --- a/docs/meta-dsl-spec.md +++ b/docs/meta-dsl-spec.md @@ -1284,6 +1284,19 @@ ChildObjects и модулей. "autoUse": "Use", "content": ["Документ.РеализацияТоваров", { "metadata": "Документ.ПоступлениеТоваров" }] } ``` +### 7.15g CommonPicture / CommonTemplate (Общие картинки и макеты) + +Только метаданные + регистрация; СОДЕРЖИМОЕ (`Ext/Picture*`, `Ext/Template.*` — бинарь/MXL) вне скоупа +(импортируется отдельно / `/mxl-compile` для SpreadsheetDocument). + +- **CommonPicture** — `availabilityForChoice` / `availabilityForAppearance` (bool, дефолт false). +- **CommonTemplate** — `templateType` (SpreadsheetDocument[дефолт]/TextDocument/HTMLDocument/BinaryData/AddIn/ + DataCompositionSchema/DataCompositionAppearanceTemplate/GraphicalSchema). + +```json +{ "type": "CommonTemplate", "name": "ПечатьЗаказа", "templateType": "SpreadsheetDocument" } +``` + ### 7.16 ChartOfAccounts Полное описание типа (все поля, стандартные реквизиты, грамматика предопределённых счетов) — см. **§7.2c**. diff --git a/tests/skills/cases/meta-compile/common-picture.json b/tests/skills/cases/meta-compile/common-picture.json new file mode 100644 index 00000000..76e846d6 --- /dev/null +++ b/tests/skills/cases/meta-compile/common-picture.json @@ -0,0 +1 @@ +{ "name": "Общая картинка", "input": { "type": "CommonPicture", "name": "Логотип", "availabilityForChoice": true }, "validatePath": "CommonPictures/Логотип", "skipValidation": true, "expect": { "files": ["CommonPictures/Логотип.xml"] } } diff --git a/tests/skills/cases/meta-compile/common-template.json b/tests/skills/cases/meta-compile/common-template.json new file mode 100644 index 00000000..2f7e167b --- /dev/null +++ b/tests/skills/cases/meta-compile/common-template.json @@ -0,0 +1 @@ +{ "name": "Общий макет", "input": { "type": "CommonTemplate", "name": "ПечатьЗаказа", "templateType": "SpreadsheetDocument" }, "validatePath": "CommonTemplates/ПечатьЗаказа", "skipValidation": true, "expect": { "files": ["CommonTemplates/ПечатьЗаказа.xml"] } } diff --git a/tests/skills/cases/meta-compile/snapshots/common-picture/CommonPictures/Логотип.xml b/tests/skills/cases/meta-compile/snapshots/common-picture/CommonPictures/Логотип.xml new file mode 100644 index 00000000..62b3a3ba --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/common-picture/CommonPictures/Логотип.xml @@ -0,0 +1,17 @@ + + + + + Логотип + + + ru + Логотип + + + + true + false + + + diff --git a/tests/skills/cases/meta-compile/snapshots/common-picture/Configuration.xml b/tests/skills/cases/meta-compile/snapshots/common-picture/Configuration.xml new file mode 100644 index 00000000..a671d2dc --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/common-picture/Configuration.xml @@ -0,0 +1,252 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + UUID-008 + UUID-009 + + + UUID-010 + UUID-011 + + + UUID-012 + UUID-013 + + + UUID-014 + UUID-015 + + + + TestConfig + + + ru + TestConfig + + + + + Version8_3_24 + ManagedApplication + + PlatformApplication + + Russian + + + + + false + false + false + + + + + + + + + + + + + + + + + + + + + + Biometrics + true + + + Location + false + + + BackgroundLocation + false + + + BluetoothPrinters + false + + + WiFiPrinters + false + + + Contacts + false + + + Calendars + false + + + PushNotifications + false + + + LocalNotifications + false + + + InAppPurchases + false + + + PersonalComputerFileExchange + false + + + Ads + false + + + NumberDialing + false + + + CallProcessing + false + + + CallLog + false + + + AutoSendSMS + false + + + ReceiveSMS + false + + + SMSLog + false + + + Camera + false + + + Microphone + false + + + MusicLibrary + false + + + PictureAndVideoLibraries + false + + + AudioPlaybackAndVibration + false + + + BackgroundAudioPlaybackAndVibration + false + + + InstallPackages + false + + + OSBackup + true + + + ApplicationUsageStatistics + false + + + BarcodeScanning + false + + + BackgroundAudioRecording + false + + + AllFilesAccess + false + + + Videoconferences + false + + + NFC + false + + + DocumentScanning + false + + + SpeechToText + false + + + Geofences + false + + + IncomingShareRequests + false + + + AllIncomingShareRequestsTypesProcessing + false + + + + + + Normal + + + Language.Русский + + + + + + Managed + NotAutoFree + DontUse + DontUse + TaxiEnableVersion8_2 + DontUse + Version8_3_24 + + + + Русский + Логотип + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-compile/snapshots/common-picture/Ext/ClientApplicationInterface.xml b/tests/skills/cases/meta-compile/snapshots/common-picture/Ext/ClientApplicationInterface.xml new file mode 100644 index 00000000..3c1161b2 --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/common-picture/Ext/ClientApplicationInterface.xml @@ -0,0 +1,18 @@ + + + + + UUID-002 + + + + + UUID-004 + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-compile/snapshots/common-picture/Languages/Русский.xml b/tests/skills/cases/meta-compile/snapshots/common-picture/Languages/Русский.xml new file mode 100644 index 00000000..37c60d78 --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/common-picture/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-compile/snapshots/common-template/CommonTemplates/ПечатьЗаказа.xml b/tests/skills/cases/meta-compile/snapshots/common-template/CommonTemplates/ПечатьЗаказа.xml new file mode 100644 index 00000000..00dd1d3e --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/common-template/CommonTemplates/ПечатьЗаказа.xml @@ -0,0 +1,16 @@ + + + + + ПечатьЗаказа + + + ru + Печать заказа + + + + SpreadsheetDocument + + + diff --git a/tests/skills/cases/meta-compile/snapshots/common-template/Configuration.xml b/tests/skills/cases/meta-compile/snapshots/common-template/Configuration.xml new file mode 100644 index 00000000..240a7864 --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/common-template/Configuration.xml @@ -0,0 +1,252 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + UUID-008 + UUID-009 + + + UUID-010 + UUID-011 + + + UUID-012 + UUID-013 + + + UUID-014 + UUID-015 + + + + TestConfig + + + ru + TestConfig + + + + + Version8_3_24 + ManagedApplication + + PlatformApplication + + Russian + + + + + false + false + false + + + + + + + + + + + + + + + + + + + + + + Biometrics + true + + + Location + false + + + BackgroundLocation + false + + + BluetoothPrinters + false + + + WiFiPrinters + false + + + Contacts + false + + + Calendars + false + + + PushNotifications + false + + + LocalNotifications + false + + + InAppPurchases + false + + + PersonalComputerFileExchange + false + + + Ads + false + + + NumberDialing + false + + + CallProcessing + false + + + CallLog + false + + + AutoSendSMS + false + + + ReceiveSMS + false + + + SMSLog + false + + + Camera + false + + + Microphone + false + + + MusicLibrary + false + + + PictureAndVideoLibraries + false + + + AudioPlaybackAndVibration + false + + + BackgroundAudioPlaybackAndVibration + false + + + InstallPackages + false + + + OSBackup + true + + + ApplicationUsageStatistics + false + + + BarcodeScanning + false + + + BackgroundAudioRecording + false + + + AllFilesAccess + false + + + Videoconferences + false + + + NFC + false + + + DocumentScanning + false + + + SpeechToText + false + + + Geofences + false + + + IncomingShareRequests + false + + + AllIncomingShareRequestsTypesProcessing + false + + + + + + Normal + + + Language.Русский + + + + + + Managed + NotAutoFree + DontUse + DontUse + TaxiEnableVersion8_2 + DontUse + Version8_3_24 + + + + Русский + ПечатьЗаказа + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-compile/snapshots/common-template/Ext/ClientApplicationInterface.xml b/tests/skills/cases/meta-compile/snapshots/common-template/Ext/ClientApplicationInterface.xml new file mode 100644 index 00000000..3c1161b2 --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/common-template/Ext/ClientApplicationInterface.xml @@ -0,0 +1,18 @@ + + + + + UUID-002 + + + + + UUID-004 + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-compile/snapshots/common-template/Languages/Русский.xml b/tests/skills/cases/meta-compile/snapshots/common-template/Languages/Русский.xml new file mode 100644 index 00000000..37c60d78 --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/common-template/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file