From 32bf9c1a3f48651e2efca6ee46fe1873f283ff8f Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Tue, 12 May 2026 12:56:35 +0300 Subject: [PATCH] feat(form-compile): textEdit key for InputField (TextEdit=false) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit v1.20 → v1.21 (ps1 + py). Добавлен ключ DSL `textEdit` для элемента input. Эмитит `false` после AutoMarkIncomplete (значение true — дефолт платформы, не эмитируется). Закрывает блокер для 03-fillfields/direct-edit-form в синтетике web-test: поле с запрещённым ручным вводом → выбор только через pick-кнопку/F4. Snapshot-тест: tests/skills/cases/form-compile/text-edit-flag.json (2 поля, проверяет наличие TextEdit только на втором). 30/30 form-compile зелёные обоих runtime'ов. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../form-compile/scripts/form-compile.ps1 | 4 +- .../form-compile/scripts/form-compile.py | 5 +- .../text-edit-flag/Configuration.xml | 252 ++++++++++++++++++ .../DataProcessors/ЗапретРучногоВвода.xml | 34 +++ .../ЗапретРучногоВвода/Ext/ManagerModule.bsl | 0 .../ЗапретРучногоВвода/Ext/ObjectModule.bsl | 0 .../ЗапретРучногоВвода/Forms/Форма.xml | 22 ++ .../Forms/Форма/Ext/Form.xml | 74 +++++ .../Forms/Форма/Ext/Form/Module.bsl | 19 ++ .../Ext/ClientApplicationInterface.xml | 18 ++ .../text-edit-flag/Languages/Русский.xml | 16 ++ .../cases/form-compile/text-edit-flag.json | 28 ++ 12 files changed, 470 insertions(+), 2 deletions(-) create mode 100644 tests/skills/cases/form-compile/snapshots/text-edit-flag/Configuration.xml create mode 100644 tests/skills/cases/form-compile/snapshots/text-edit-flag/DataProcessors/ЗапретРучногоВвода.xml create mode 100644 tests/skills/cases/form-compile/snapshots/text-edit-flag/DataProcessors/ЗапретРучногоВвода/Ext/ManagerModule.bsl create mode 100644 tests/skills/cases/form-compile/snapshots/text-edit-flag/DataProcessors/ЗапретРучногоВвода/Ext/ObjectModule.bsl create mode 100644 tests/skills/cases/form-compile/snapshots/text-edit-flag/DataProcessors/ЗапретРучногоВвода/Forms/Форма.xml create mode 100644 tests/skills/cases/form-compile/snapshots/text-edit-flag/DataProcessors/ЗапретРучногоВвода/Forms/Форма/Ext/Form.xml create mode 100644 tests/skills/cases/form-compile/snapshots/text-edit-flag/DataProcessors/ЗапретРучногоВвода/Forms/Форма/Ext/Form/Module.bsl create mode 100644 tests/skills/cases/form-compile/snapshots/text-edit-flag/Ext/ClientApplicationInterface.xml create mode 100644 tests/skills/cases/form-compile/snapshots/text-edit-flag/Languages/Русский.xml create mode 100644 tests/skills/cases/form-compile/text-edit-flag.json diff --git a/.claude/skills/form-compile/scripts/form-compile.ps1 b/.claude/skills/form-compile/scripts/form-compile.ps1 index 1e2ca8aa..242cd62a 100644 --- a/.claude/skills/form-compile/scripts/form-compile.ps1 +++ b/.claude/skills/form-compile/scripts/form-compile.ps1 @@ -1,4 +1,4 @@ -# form-compile v1.20 — Compile 1C managed form from JSON or object metadata +# form-compile v1.21 — Compile 1C managed form from JSON or object metadata # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [string]$JsonPath, @@ -1912,6 +1912,7 @@ function Emit-Element { # input-specific "multiLine"=1;"passwordMode"=1;"choiceButton"=1;"clearButton"=1 "spinButton"=1;"dropListButton"=1;"markIncomplete"=1;"skipOnInput"=1;"inputHint"=1 + "textEdit"=1 # label/hyperlink "hyperlink"=1 # group-specific @@ -2137,6 +2138,7 @@ function Emit-Input { if ($el.spinButton -eq $true) { X "$innertrue" } if ($el.dropListButton -eq $true) { X "$innertrue" } if ($el.markIncomplete -eq $true) { X "$innertrue" } + if ($el.textEdit -eq $false) { X "$innerfalse" } if ($el.skipOnInput -eq $true) { X "$innertrue" } $hasAmw = $el.PSObject.Properties.Name -contains 'autoMaxWidth' if ($hasAmw) { diff --git a/.claude/skills/form-compile/scripts/form-compile.py b/.claude/skills/form-compile/scripts/form-compile.py index 992c83f3..97a48a31 100644 --- a/.claude/skills/form-compile/scripts/form-compile.py +++ b/.claude/skills/form-compile/scripts/form-compile.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# form-compile v1.20 — Compile 1C managed form from JSON or object metadata +# form-compile v1.21 — Compile 1C managed form from JSON or object metadata # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import copy @@ -1350,6 +1350,7 @@ KNOWN_KEYS = { "maxWidth", "maxHeight", "multiLine", "passwordMode", "choiceButton", "clearButton", "spinButton", "dropListButton", "markIncomplete", "skipOnInput", "inputHint", + "textEdit", "hyperlink", "showTitle", "united", "collapsed", "children", "columns", @@ -1940,6 +1941,8 @@ def emit_input(lines, el, name, eid, indent): lines.append(f'{inner}true') if el.get('markIncomplete') is True: lines.append(f'{inner}true') + if el.get('textEdit') is False: + lines.append(f'{inner}false') if el.get('skipOnInput') is True: lines.append(f'{inner}true') if 'autoMaxWidth' in el: diff --git a/tests/skills/cases/form-compile/snapshots/text-edit-flag/Configuration.xml b/tests/skills/cases/form-compile/snapshots/text-edit-flag/Configuration.xml new file mode 100644 index 00000000..d34f407a --- /dev/null +++ b/tests/skills/cases/form-compile/snapshots/text-edit-flag/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/form-compile/snapshots/text-edit-flag/DataProcessors/ЗапретРучногоВвода.xml b/tests/skills/cases/form-compile/snapshots/text-edit-flag/DataProcessors/ЗапретРучногоВвода.xml new file mode 100644 index 00000000..6a3fca59 --- /dev/null +++ b/tests/skills/cases/form-compile/snapshots/text-edit-flag/DataProcessors/ЗапретРучногоВвода.xml @@ -0,0 +1,34 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + + ЗапретРучногоВвода + + + ru + Запрет ручного ввода + + + + false + DataProcessor.ЗапретРучногоВвода.Form.Форма + + false + + + + +
Форма
+
+
+
diff --git a/tests/skills/cases/form-compile/snapshots/text-edit-flag/DataProcessors/ЗапретРучногоВвода/Ext/ManagerModule.bsl b/tests/skills/cases/form-compile/snapshots/text-edit-flag/DataProcessors/ЗапретРучногоВвода/Ext/ManagerModule.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/form-compile/snapshots/text-edit-flag/DataProcessors/ЗапретРучногоВвода/Ext/ObjectModule.bsl b/tests/skills/cases/form-compile/snapshots/text-edit-flag/DataProcessors/ЗапретРучногоВвода/Ext/ObjectModule.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/form-compile/snapshots/text-edit-flag/DataProcessors/ЗапретРучногоВвода/Forms/Форма.xml b/tests/skills/cases/form-compile/snapshots/text-edit-flag/DataProcessors/ЗапретРучногоВвода/Forms/Форма.xml new file mode 100644 index 00000000..dffeea01 --- /dev/null +++ b/tests/skills/cases/form-compile/snapshots/text-edit-flag/DataProcessors/ЗапретРучногоВвода/Forms/Форма.xml @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + + +
+
\ No newline at end of file diff --git a/tests/skills/cases/form-compile/snapshots/text-edit-flag/DataProcessors/ЗапретРучногоВвода/Forms/Форма/Ext/Form.xml b/tests/skills/cases/form-compile/snapshots/text-edit-flag/DataProcessors/ЗапретРучногоВвода/Forms/Форма/Ext/Form.xml new file mode 100644 index 00000000..eef7f0e2 --- /dev/null +++ b/tests/skills/cases/form-compile/snapshots/text-edit-flag/DataProcessors/ЗапретРучногоВвода/Forms/Форма/Ext/Form.xml @@ -0,0 +1,74 @@ + +
+ + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Запрет ручного ввода</v8:content> + </v8:item> + + false + + + + ОбычноеПоле + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Обычное поле</v8:content> + </v8:item> + + + + + + ПолеБезРучногоВвода + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Только через выбор</v8:content> + </v8:item> + + false + + + + + + + + cfg:DataProcessorObject.ЗапретРучногоВвода + + true + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Обычное поле</v8:content> + </v8:item> + + + xs:string + + 100 + Variable + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Поле без ручного ввода</v8:content> + </v8:item> + + + xs:string + + 100 + Variable + + + + + diff --git a/tests/skills/cases/form-compile/snapshots/text-edit-flag/DataProcessors/ЗапретРучногоВвода/Forms/Форма/Ext/Form/Module.bsl b/tests/skills/cases/form-compile/snapshots/text-edit-flag/DataProcessors/ЗапретРучногоВвода/Forms/Форма/Ext/Form/Module.bsl new file mode 100644 index 00000000..8ead4cec --- /dev/null +++ b/tests/skills/cases/form-compile/snapshots/text-edit-flag/DataProcessors/ЗапретРучногоВвода/Forms/Форма/Ext/Form/Module.bsl @@ -0,0 +1,19 @@ +#Область ОбработчикиСобытийФормы + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовФормы + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +#КонецОбласти + +#Область ОбработчикиОповещений + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#КонецОбласти \ No newline at end of file diff --git a/tests/skills/cases/form-compile/snapshots/text-edit-flag/Ext/ClientApplicationInterface.xml b/tests/skills/cases/form-compile/snapshots/text-edit-flag/Ext/ClientApplicationInterface.xml new file mode 100644 index 00000000..3c1161b2 --- /dev/null +++ b/tests/skills/cases/form-compile/snapshots/text-edit-flag/Ext/ClientApplicationInterface.xml @@ -0,0 +1,18 @@ + + + + + UUID-002 + + + + + UUID-004 + + + + + + + + \ No newline at end of file diff --git a/tests/skills/cases/form-compile/snapshots/text-edit-flag/Languages/Русский.xml b/tests/skills/cases/form-compile/snapshots/text-edit-flag/Languages/Русский.xml new file mode 100644 index 00000000..37c60d78 --- /dev/null +++ b/tests/skills/cases/form-compile/snapshots/text-edit-flag/Languages/Русский.xml @@ -0,0 +1,16 @@ + + + + + Русский + + + ru + Русский + + + + ru + + + \ No newline at end of file diff --git a/tests/skills/cases/form-compile/text-edit-flag.json b/tests/skills/cases/form-compile/text-edit-flag.json new file mode 100644 index 00000000..2059e168 --- /dev/null +++ b/tests/skills/cases/form-compile/text-edit-flag.json @@ -0,0 +1,28 @@ +{ + "name": "Поле ввода с textEdit:false (запрет ручного ввода)", + "preRun": [ + { + "script": "meta-compile/scripts/meta-compile", + "input": { "type": "DataProcessor", "name": "ЗапретРучногоВвода" }, + "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } + }, + { + "script": "form-add/scripts/form-add", + "args": { "-ObjectPath": "{workDir}/DataProcessors/ЗапретРучногоВвода.xml", "-FormName": "Форма" } + } + ], + "params": { "outputPath": "DataProcessors/ЗапретРучногоВвода/Forms/Форма/Ext/Form.xml" }, + "validatePath": "DataProcessors/ЗапретРучногоВвода/Forms/Форма/Ext/Form.xml", + "input": { + "title": "Запрет ручного ввода", + "elements": [ + { "input": "ОбычноеПоле", "path": "ОбычноеПоле", "title": "Обычное поле" }, + { "input": "ПолеБезРучногоВвода", "path": "ПолеБезРучногоВвода", "textEdit": false, "title": "Только через выбор" } + ], + "attributes": [ + { "name": "Объект", "type": "DataProcessorObject.ЗапретРучногоВвода", "main": true }, + { "name": "ОбычноеПоле", "type": "string(100)" }, + { "name": "ПолеБезРучногоВвода", "type": "string(100)" } + ] + } +}