diff --git a/.claude/skills/meta-compile/scripts/meta-compile.ps1 b/.claude/skills/meta-compile/scripts/meta-compile.ps1 index acea668d2..1cc91bcb1 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.115 — Compile 1C metadata object from JSON +# meta-compile v1.116 — Compile 1C metadata object from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills [CmdletBinding(PositionalBinding=$false)] param( @@ -2847,11 +2847,13 @@ function Emit-DocumentProperties { Emit-Characteristics $i $def.characteristics Emit-BasedOn $i $def.basedOn - # InputByString: override `inputByString` ЛИБО дефолт [Номер]. + # InputByString: override `inputByString` ЛИБО дефолт [Номер при N>0]. + # Номер — в дефолт ввода по строке только при ненулевой длине номера, как код у справочника: + # «Указано неверное поле для ввода по строке: Номер» (8.3.24, 8.5.1). if (Test-DefKey 'inputByString') { $ibFields = @($def.inputByString | ForEach-Object { Expand-DataPath "$_" }) } else { - $ibFields = @("Document.$objName.StandardAttribute.Number") + $ibFields = @(if ($null -eq $def.numberLength -or [int]"$($def.numberLength)" -gt 0) { "Document.$objName.StandardAttribute.Number" }) } Emit-FieldBlock $i "InputByString" $ibFields X "$i$(Get-EnumProp 'CreateOnInput' 'createOnInput' 'Use')" @@ -4129,7 +4131,7 @@ function Emit-BusinessProcessProperties { X "$i$(Get-EnumProp 'EditType' 'editType' 'InDialog')" if (Test-DefKey 'inputByString') { $ibFields = @($def.inputByString | ForEach-Object { Expand-DataPath "$_" }) } - else { $ibFields = @("BusinessProcess.$objName.StandardAttribute.Number") } + else { $ibFields = @(if ($null -eq $def.numberLength -or [int]"$($def.numberLength)" -gt 0) { "BusinessProcess.$objName.StandardAttribute.Number" }) } # Номер — при N>0 Emit-FieldBlock $i "InputByString" $ibFields X "$i$(Get-EnumProp 'CreateOnInput' 'createOnInput' 'DontUse')" X "$i$(Get-EnumProp 'SearchStringModeOnInputByString' 'searchStringModeOnInputByString' 'Begin')" @@ -4214,7 +4216,7 @@ function Emit-TaskProperties { X "$i$(Get-EnumProp 'DefaultPresentation' 'defaultPresentation' 'AsDescription')" X "$i$(Get-EnumProp 'EditType' 'editType' 'InDialog')" if (Test-DefKey 'inputByString') { $ibFields = @($def.inputByString | ForEach-Object { Expand-DataPath "$_" }) } - else { $ibFields = @("Task.$objName.StandardAttribute.Number") } + else { $ibFields = @(if ($null -eq $def.numberLength -or [int]"$($def.numberLength)" -gt 0) { "Task.$objName.StandardAttribute.Number" }) } # Номер — при N>0 Emit-FieldBlock $i "InputByString" $ibFields X "$i$(Get-EnumProp 'SearchStringModeOnInputByString' 'searchStringModeOnInputByString' 'Begin')" X "$i$(Get-EnumProp 'FullTextSearchOnInputByString' 'fullTextSearchOnInputByString' 'DontUse')" diff --git a/.claude/skills/meta-compile/scripts/meta-compile.py b/.claude/skills/meta-compile/scripts/meta-compile.py index cd4a62e3b..282daf0ef 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.115 — Compile 1C metadata object from JSON +# meta-compile v1.116 — Compile 1C metadata object from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -2943,11 +2943,13 @@ def emit_document_properties(indent): emit_standard_attributes(i, 'Document') emit_characteristics(i, defn.get('characteristics')) emit_based_on(i, defn.get('basedOn')) - # InputByString: override `inputByString` ЛИБО дефолт [Номер]. + # InputByString: override `inputByString` ЛИБО дефолт [Номер при N>0]. + # Номер — в дефолт ввода по строке только при ненулевой длине номера, как код у справочника: + # «Указано неверное поле для ввода по строке: Номер» (8.3.24, 8.5.1). if 'inputByString' in defn: ib_fields = [expand_data_path(str(x)) for x in (defn.get('inputByString') or [])] else: - ib_fields = [f'Document.{obj_name}.StandardAttribute.Number'] + ib_fields = [f'Document.{obj_name}.StandardAttribute.Number'] if (defn.get('numberLength') is None or int(defn['numberLength']) > 0) else [] emit_field_block(i, 'InputByString', ib_fields) X(f'{i}{get_enum_prop("CreateOnInput", "createOnInput", "Use")}') X(f'{i}{get_enum_prop("SearchStringModeOnInputByString", "searchStringModeOnInputByString", "Begin")}') @@ -4155,7 +4157,7 @@ def emit_business_process_properties(indent): if 'inputByString' in defn: ib_fields = [expand_data_path(str(x)) for x in (defn.get('inputByString') or [])] else: - ib_fields = [f'BusinessProcess.{obj_name}.StandardAttribute.Number'] + ib_fields = [f'BusinessProcess.{obj_name}.StandardAttribute.Number'] if (defn.get('numberLength') is None or int(defn['numberLength']) > 0) else [] # Номер — при N>0 emit_field_block(i, 'InputByString', ib_fields) X(f'{i}{get_enum_prop("CreateOnInput", "createOnInput", "DontUse")}') X(f'{i}{get_enum_prop("SearchStringModeOnInputByString", "searchStringModeOnInputByString", "Begin")}') @@ -4235,7 +4237,7 @@ def emit_task_properties(indent): if 'inputByString' in defn: ib_fields = [expand_data_path(str(x)) for x in (defn.get('inputByString') or [])] else: - ib_fields = [f'Task.{obj_name}.StandardAttribute.Number'] + ib_fields = [f'Task.{obj_name}.StandardAttribute.Number'] if (defn.get('numberLength') is None or int(defn['numberLength']) > 0) else [] # Номер — при N>0 emit_field_block(i, 'InputByString', ib_fields) X(f'{i}{get_enum_prop("SearchStringModeOnInputByString", "searchStringModeOnInputByString", "Begin")}') X(f'{i}{get_enum_prop("FullTextSearchOnInputByString", "fullTextSearchOnInputByString", "DontUse")}') diff --git a/tests/skills/cases/meta-compile/number-length-zero.json b/tests/skills/cases/meta-compile/number-length-zero.json new file mode 100644 index 000000000..1e6e81042 --- /dev/null +++ b/tests/skills/cases/meta-compile/number-length-zero.json @@ -0,0 +1,38 @@ +{ + "name": "Документ, бизнес-процесс и задача без номера (numberLength 0) — номер не попадает во ввод по строке", + "input": [ + { + "type": "Document", + "name": "БезНомераД", + "numberLength": 0 + }, + { + "type": "BusinessProcess", + "name": "БезНомераБП", + "numberLength": 0, + "task": "Task.БезНомераЗ" + }, + { + "type": "Task", + "name": "БезНомераЗ", + "numberLength": 0 + } + ], + "validatePath": "Tasks/БезНомераЗ.xml", + "expect": { + "fileContains": [ + { + "file": "Documents/БезНомераД.xml", + "text": "" + }, + { + "file": "BusinessProcesses/БезНомераБП.xml", + "text": "" + }, + { + "file": "Tasks/БезНомераЗ.xml", + "text": "" + } + ] + } +} diff --git a/tests/skills/cases/meta-compile/snapshots/number-length-zero/BusinessProcesses/БезНомераБП.xml b/tests/skills/cases/meta-compile/snapshots/number-length-zero/BusinessProcesses/БезНомераБП.xml new file mode 100644 index 000000000..5e958fea0 --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/number-length-zero/BusinessProcesses/БезНомераБП.xml @@ -0,0 +1,262 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + UUID-008 + UUID-009 + + + UUID-010 + UUID-011 + + + UUID-012 + UUID-013 + + + + БезНомераБП + + + ru + Без номера БП + + + + true + InDialog + + DontUse + Begin + Directly + DontUse + + + + + + + Auto + String + 0 + 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 + 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 + + + + + + + + true + + Nonperiodical + Task.БезНомераЗ + true + + Managed + false + Use + + + + + + DontUse + false + false + + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-compile/snapshots/number-length-zero/BusinessProcesses/БезНомераБП/Ext/Flowchart.xml b/tests/skills/cases/meta-compile/snapshots/number-length-zero/BusinessProcesses/БезНомераБП/Ext/Flowchart.xml new file mode 100644 index 000000000..ca7a2f53f --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/number-length-zero/BusinessProcesses/БезНомераБП/Ext/Flowchart.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/tests/skills/cases/meta-compile/snapshots/number-length-zero/BusinessProcesses/БезНомераБП/Ext/ObjectModule.bsl b/tests/skills/cases/meta-compile/snapshots/number-length-zero/BusinessProcesses/БезНомераБП/Ext/ObjectModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/meta-compile/snapshots/number-length-zero/Configuration.xml b/tests/skills/cases/meta-compile/snapshots/number-length-zero/Configuration.xml new file mode 100644 index 000000000..0f1554290 --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/number-length-zero/Configuration.xml @@ -0,0 +1,254 @@ + + + + + + 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/number-length-zero/Documents/БезНомераД.xml b/tests/skills/cases/meta-compile/snapshots/number-length-zero/Documents/БезНомераД.xml new file mode 100644 index 000000000..e7c3513f2 --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/number-length-zero/Documents/БезНомераД.xml @@ -0,0 +1,80 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + UUID-008 + UUID-009 + + + UUID-010 + UUID-011 + + + + БезНомераД + + + ru + Без номера д + + + + true + + String + 0 + Variable + Year + true + true + + + + Use + Begin + DontUse + Directly + + + + + + + Allow + Deny + AutoDelete + WriteSelected + AutoFill + + true + true + false + + Managed + Use + + + + + + Auto + DontUse + false + false + + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-compile/snapshots/number-length-zero/Documents/БезНомераД/Ext/ObjectModule.bsl b/tests/skills/cases/meta-compile/snapshots/number-length-zero/Documents/БезНомераД/Ext/ObjectModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/tests/skills/cases/meta-compile/snapshots/number-length-zero/Ext/ClientApplicationInterface.xml b/tests/skills/cases/meta-compile/snapshots/number-length-zero/Ext/ClientApplicationInterface.xml new file mode 100644 index 000000000..3c1161b2d --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/number-length-zero/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/number-length-zero/Languages/Русский.xml b/tests/skills/cases/meta-compile/snapshots/number-length-zero/Languages/Русский.xml new file mode 100644 index 000000000..37c60d786 --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/number-length-zero/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-compile/snapshots/number-length-zero/Tasks/БезНомераЗ.xml b/tests/skills/cases/meta-compile/snapshots/number-length-zero/Tasks/БезНомераЗ.xml new file mode 100644 index 000000000..d37a91633 --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/number-length-zero/Tasks/БезНомераЗ.xml @@ -0,0 +1,287 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + UUID-008 + UUID-009 + + + UUID-010 + UUID-011 + + + + БезНомераЗ + + + ru + Без номера з + + + + true + String + 0 + Variable + true + true + BusinessProcessNumber + 150 + + + + + + + + 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 + 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 + InDialog + + Begin + DontUse + Directly + DontUse + + + + + + + Auto + false + + Managed + Use + + + + + + DontUse + false + false + + + + \ No newline at end of file diff --git a/tests/skills/cases/meta-compile/snapshots/number-length-zero/Tasks/БезНомераЗ/Ext/ObjectModule.bsl b/tests/skills/cases/meta-compile/snapshots/number-length-zero/Tasks/БезНомераЗ/Ext/ObjectModule.bsl new file mode 100644 index 000000000..e69de29bb