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