fix(cfe-borrow): не затирать существующий Module.bsl при повторном заимствовании формы

Повторный borrow формы записывал пустой Module.bsl безусловно → терялся
пользовательский код, добавленный в модуль формы (аналог IngvarConsulting/unica#4,
воспроизведено: 150→3 байта). Теперь пустой модуль создаётся только если файла ещё
нет; существующий сохраняется ("Preserved existing Module.bsl"). Дополняет
идемпотентность re-borrow (форма-обёртка/uuid уже были закрыты в v1.5).

Тест form-bindings усилен: между первым и вторым заимствованием в модуль пишется
код (writeFile), idempotent:true теперь проверяет его сохранность побайтно.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-06-23 12:57:41 +03:00
parent 36c2fd9233
commit 0dc014dc47
4 changed files with 28 additions and 9 deletions
@@ -1,5 +1,5 @@
{
"name": "Заимствование формы: вырезание привязок (Multiple*/Footer) + идемпотентность повторного заимствования",
"name": "Заимствование формы: вырезание привязок (Multiple*/Footer) + идемпотентность (модуль и uuid не затираются при повторе)",
"preRun": [
{
"script": "meta-compile/scripts/meta-compile",
@@ -34,6 +34,12 @@
{
"script": "cfe-borrow/scripts/cfe-borrow",
"args": { "-ExtensionPath": "{workDir}/ext", "-ConfigPath": "{workDir}", "-Object": "Catalog.Товары.Form.ФормаЭлемента", "-BorrowMainAttribute": "Form" }
},
{
"writeFile": {
"path": "ext/Catalogs/Товары/Forms/ФормаЭлемента/Ext/Form/Module.bsl",
"content": "&НаСервере\nПроцедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)\n\t// пользовательский код — не должен затираться повторным заимствованием\nКонецПроцедуры"
}
}
],
"params": { "extensionPath": "ext", "object": "Catalog.Товары.Form.ФормаЭлемента" },
@@ -0,0 +1,4 @@
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// пользовательский код — не должен затираться повторным заимствованием
КонецПроцедуры