From 53ee51a37ab7a4b530b4d645665434f254e3828e Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Wed, 12 Aug 2026 16:52:42 +0300 Subject: [PATCH] =?UTF-8?q?fix(cfe-borrow):=20=D0=BD=D0=B5=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=BD=D0=BE=D1=81=D0=B8=D1=82=D1=8C=20NumberPeriod?= =?UTF-8?q?icity=20=D0=B2=20=D0=BE=D0=B1=D0=BE=D0=BB=D0=BE=D1=87=D0=BA?= =?UTF-8?q?=D1=83=20=D0=B7=D0=B0=D0=B8=D0=BC=D1=81=D1=82=D0=B2=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=B4=D0=BE=D0=BA=D1=83?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Платформа считает это свойство модификацией настроек нумерации и тогда требует объявить ещё и : /UpdateDBCfg падает с «Для заимствованного документа, настройки нумерации которого модифицированы, отключать контролируемость свойства "Нумератор" недопустимо». Загрузка при этом проходит — ошибка вылезает только на обновлении конфигурации БД, поэтому ручной E2E её не видел, а verify-snapshots поймал. Эталон Конфигуратора переносит NumberType/NumberLength/NumberAllowedLength и не переносит NumberPeriodicity — приводим к тому же. Свойство попало в список ещё при появлении -BorrowMainAttribute, набор тогда был угадан, а не выверен по эталону. Заодно две мои фикстуры доведены до платформенной валидности: form-choice-param-links задавала в ИСХОДНОЙ форме ссылку на несуществующий реквизит — такая конфигурация не грузится сама, проверять на ней вырезание висячей связи нельзя; gentypes-full не имела регистратора для регистра бухгалтерии и задачи для бизнес-процесса. verify-snapshots по cfe-borrow: 11 из 12 (container-types падал и раньше, дефект его фикстуры). Регресс 12/12 на обоих рантаймах, все гарды зелёные. --- .../skills/cfe-borrow/scripts/cfe-borrow.ps1 | 9 +- .../skills/cfe-borrow/scripts/cfe-borrow.py | 9 +- .../cfe-borrow/form-choice-param-links.json | 5 +- .../cases/cfe-borrow/gentypes-full.json | 118 +++++-- .../Forms/ФормаДокумента/Ext/Form.xml | 5 - .../Ext/Documents/ЗаказКлиента.xml | 1 - .../BusinessProcesses/Согласование.xml | 2 +- .../snapshots/gentypes-full/Configuration.xml | 2 + .../gentypes-full/Documents/Операция.xml | 85 ++++++ .../Documents/Операция/Ext/ObjectModule.bsl | 0 .../gentypes-full/Tasks/ЗадачаИсполнителя.xml | 289 ++++++++++++++++++ .../ЗадачаИсполнителя/Ext/ObjectModule.bsl | 0 12 files changed, 490 insertions(+), 35 deletions(-) create mode 100644 tests/skills/cases/cfe-borrow/snapshots/gentypes-full/Documents/Операция.xml create mode 100644 tests/skills/cases/cfe-borrow/snapshots/gentypes-full/Documents/Операция/Ext/ObjectModule.bsl create mode 100644 tests/skills/cases/cfe-borrow/snapshots/gentypes-full/Tasks/ЗадачаИсполнителя.xml create mode 100644 tests/skills/cases/cfe-borrow/snapshots/gentypes-full/Tasks/ЗадачаИсполнителя/Ext/ObjectModule.bsl diff --git a/.claude/skills/cfe-borrow/scripts/cfe-borrow.ps1 b/.claude/skills/cfe-borrow/scripts/cfe-borrow.ps1 index ad422929..e0349bce 100644 --- a/.claude/skills/cfe-borrow/scripts/cfe-borrow.ps1 +++ b/.claude/skills/cfe-borrow/scripts/cfe-borrow.ps1 @@ -1,4 +1,4 @@ -# cfe-borrow v1.23 — Borrow objects from configuration into extension (CFE) (ссылки параметров выбора по uuid) +# cfe-borrow v1.24 — Borrow objects from configuration into extension (CFE) (не переносить NumberPeriodicity в оболочку документа) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)][string]$ExtensionPath, @@ -1397,8 +1397,13 @@ function Resolve-SourceAttributes { $extraProps = [ordered]@{} $propsNode = $srcEl.SelectSingleNode("md:Properties", $srcNs) if ($propsNode) { + # NumberPeriodicity сюда НЕ входит: платформа считает его модификацией настроек нумерации и + # тогда требует объявить ещё и , иначе /UpdateDBCfg падает — «отключать + # контролируемость свойства "Нумератор" недопустимо». Конфигуратор его не переносит + # (эталон заимствования документа: NumberType/NumberLength/NumberAllowedLength и всё). + # Загрузку это не ломает, ошибка вылезает только на обновлении конфигурации БД. $propsToExtract = @("Hierarchical","FoldersOnTop","CodeLength","DescriptionLength","CodeType","CodeAllowedLength", - "NumberType","NumberLength","NumberAllowedLength","NumberPeriodicity") + "NumberType","NumberLength","NumberAllowedLength") foreach ($pName in $propsToExtract) { $pNode = $propsNode.SelectSingleNode("md:${pName}", $srcNs) if ($pNode) { $extraProps[$pName] = $pNode.InnerText } diff --git a/.claude/skills/cfe-borrow/scripts/cfe-borrow.py b/.claude/skills/cfe-borrow/scripts/cfe-borrow.py index e6fa21b9..c9f01081 100644 --- a/.claude/skills/cfe-borrow/scripts/cfe-borrow.py +++ b/.claude/skills/cfe-borrow/scripts/cfe-borrow.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# cfe-borrow v1.23 — Borrow objects from configuration into extension (CFE) (ссылки параметров выбора по uuid) +# cfe-borrow v1.24 — Borrow objects from configuration into extension (CFE) (не переносить NumberPeriodicity в оболочку документа) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -1086,10 +1086,15 @@ def main(): extra_props = {} props_node = src_el.find(f"{{{MD_NS}}}Properties") if props_node is not None: + # NumberPeriodicity сюда НЕ входит: платформа считает его модификацией настроек нумерации и + # тогда требует объявить ещё и , иначе /UpdateDBCfg падает — «отключать + # контролируемость свойства "Нумератор" недопустимо». Конфигуратор его не переносит + # (эталон заимствования документа: NumberType/NumberLength/NumberAllowedLength и всё). + # Загрузку это не ломает, ошибка вылезает только на обновлении конфигурации БД. props_to_extract = [ "Hierarchical", "FoldersOnTop", "CodeLength", "DescriptionLength", "CodeType", "CodeAllowedLength", "NumberType", "NumberLength", - "NumberAllowedLength", "NumberPeriodicity", + "NumberAllowedLength", ] for p_name in props_to_extract: p_node = props_node.find(f"{{{MD_NS}}}{p_name}") diff --git a/tests/skills/cases/cfe-borrow/form-choice-param-links.json b/tests/skills/cases/cfe-borrow/form-choice-param-links.json index 6516ab8a..6ebcdbbc 100644 --- a/tests/skills/cases/cfe-borrow/form-choice-param-links.json +++ b/tests/skills/cases/cfe-borrow/form-choice-param-links.json @@ -1,5 +1,5 @@ { - "name": "Заимствование формы без основного реквизита: связь параметров выбора переводится на uuid, висячая вырезается", + "name": "Заимствование формы без основного реквизита: связь параметров выбора переводится на uuid реквизита", "preRun": [ { "script": "meta-compile/scripts/meta-compile", @@ -35,8 +35,7 @@ { "input": "КонтактноеЛицо", "path": "Объект.КонтактноеЛицо", "choiceParameterLinks": [ - { "name": "Отбор.Владелец", "dataPath": "Объект.Партнер" }, - { "name": "Отбор.Прочее", "dataPath": "Объект.НетТакогоРеквизита" } + { "name": "Отбор.Владелец", "dataPath": "Объект.Партнер" } ] } ], diff --git a/tests/skills/cases/cfe-borrow/gentypes-full.json b/tests/skills/cases/cfe-borrow/gentypes-full.json index 147f1b68..7ae6c58b 100644 --- a/tests/skills/cases/cfe-borrow/gentypes-full.json +++ b/tests/skills/cases/cfe-borrow/gentypes-full.json @@ -3,45 +3,121 @@ "preRun": [ { "script": "meta-compile/scripts/meta-compile", - "input": { "type": "ChartOfCharacteristicTypes", "name": "ВидыСубконто", "valueType": "String(50)" }, - "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } - }, - { - "script": "meta-compile/scripts/meta-compile", - "input": { "type": "ChartOfAccounts", "name": "Хозрасчетный", "extDimensionTypes": "ChartOfCharacteristicTypes.ВидыСубконто" }, - "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } - }, - { - "script": "meta-compile/scripts/meta-compile", - "input": { "type": "ChartOfCalculationTypes", "name": "ОсновныеНачисления" }, - "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } + "input": { + "type": "ChartOfCharacteristicTypes", + "name": "ВидыСубконто", + "valueType": "String(50)" + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } }, { "script": "meta-compile/scripts/meta-compile", "input": { - "type": "AccountingRegister", "name": "Хозрасчетный", + "type": "ChartOfAccounts", + "name": "Хозрасчетный", + "extDimensionTypes": "ChartOfCharacteristicTypes.ВидыСубконто" + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } + }, + { + "script": "meta-compile/scripts/meta-compile", + "input": { + "type": "ChartOfCalculationTypes", + "name": "ОсновныеНачисления" + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } + }, + { + "script": "meta-compile/scripts/meta-compile", + "input": { + "type": "AccountingRegister", + "name": "Хозрасчетный", "chartOfAccounts": "ChartOfAccounts.Хозрасчетный", - "resources": [ { "name": "Сумма", "type": "Number(15,2)", "balance": true } ] + "resources": [ + { + "name": "Сумма", + "type": "Number(15,2)", + "balance": true + } + ] }, - "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } }, { "script": "meta-compile/scripts/meta-compile", "input": { - "type": "CalculationRegister", "name": "Начисления", + "type": "CalculationRegister", + "name": "Начисления", "chartOfCalculationTypes": "ChartOfCalculationTypes.ОсновныеНачисления", - "resources": [ { "name": "Результат", "type": "Number(15,2)" } ] + "resources": [ + { + "name": "Результат", + "type": "Number(15,2)" + } + ] }, - "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } }, { "script": "meta-compile/scripts/meta-compile", - "input": { "type": "BusinessProcess", "name": "Согласование" }, - "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" } + "input": { + "type": "Task", + "name": "ЗадачаИсполнителя" + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } + }, + { + "script": "meta-compile/scripts/meta-compile", + "input": { + "type": "BusinessProcess", + "name": "Согласование", + "task": "Task.ЗадачаИсполнителя" + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } + }, + { + "script": "meta-compile/scripts/meta-compile", + "input": { + "type": "Document", + "name": "Операция", + "registerRecords": [ + "AccountingRegister.Хозрасчетный", + "CalculationRegister.Начисления" + ] + }, + "args": { + "-JsonPath": "{inputFile}", + "-OutputDir": "{workDir}" + } }, { "script": "cfe-init/scripts/cfe-init", - "args": { "-Name": "Тест", "-OutputDir": "{workDir}/ext", "-ConfigPath": "{workDir}" } + "args": { + "-Name": "Тест", + "-OutputDir": "{workDir}/ext", + "-ConfigPath": "{workDir}" + } } ], "params": { diff --git a/tests/skills/cases/cfe-borrow/snapshots/form-choice-param-links/Documents/ЗаказПоставщику/Forms/ФормаДокумента/Ext/Form.xml b/tests/skills/cases/cfe-borrow/snapshots/form-choice-param-links/Documents/ЗаказПоставщику/Forms/ФормаДокумента/Ext/Form.xml index 0c598eee..e1b99b75 100644 --- a/tests/skills/cases/cfe-borrow/snapshots/form-choice-param-links/Documents/ЗаказПоставщику/Forms/ФормаДокумента/Ext/Form.xml +++ b/tests/skills/cases/cfe-borrow/snapshots/form-choice-param-links/Documents/ЗаказПоставщику/Forms/ФормаДокумента/Ext/Form.xml @@ -22,11 +22,6 @@ Объект.Партнер Clear - - Отбор.Прочее - Объект.НетТакогоРеквизита - Clear - diff --git a/tests/skills/cases/cfe-borrow/snapshots/form-main-attr-columns/Ext/Documents/ЗаказКлиента.xml b/tests/skills/cases/cfe-borrow/snapshots/form-main-attr-columns/Ext/Documents/ЗаказКлиента.xml index c139a861..5004df57 100644 --- a/tests/skills/cases/cfe-borrow/snapshots/form-main-attr-columns/Ext/Documents/ЗаказКлиента.xml +++ b/tests/skills/cases/cfe-borrow/snapshots/form-main-attr-columns/Ext/Documents/ЗаказКлиента.xml @@ -31,7 +31,6 @@ String 11 Variable - Year
ФормаДокумента
diff --git a/tests/skills/cases/cfe-borrow/snapshots/gentypes-full/BusinessProcesses/Согласование.xml b/tests/skills/cases/cfe-borrow/snapshots/gentypes-full/BusinessProcesses/Согласование.xml index ace70616..7dad2974 100644 --- a/tests/skills/cases/cfe-borrow/snapshots/gentypes-full/BusinessProcesses/Согласование.xml +++ b/tests/skills/cases/cfe-borrow/snapshots/gentypes-full/BusinessProcesses/Согласование.xml @@ -244,7 +244,7 @@ true Nonperiodical - + Task.ЗадачаИсполнителя true Managed diff --git a/tests/skills/cases/cfe-borrow/snapshots/gentypes-full/Configuration.xml b/tests/skills/cases/cfe-borrow/snapshots/gentypes-full/Configuration.xml index a0ab6a04..19472a80 100644 --- a/tests/skills/cases/cfe-borrow/snapshots/gentypes-full/Configuration.xml +++ b/tests/skills/cases/cfe-borrow/snapshots/gentypes-full/Configuration.xml @@ -251,7 +251,9 @@ ОсновныеНачисления Хозрасчетный Начисления + ЗадачаИсполнителя Согласование + Операция
\ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/gentypes-full/Documents/Операция.xml b/tests/skills/cases/cfe-borrow/snapshots/gentypes-full/Documents/Операция.xml new file mode 100644 index 00000000..0f614e09 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/gentypes-full/Documents/Операция.xml @@ -0,0 +1,85 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + UUID-008 + UUID-009 + + + UUID-010 + UUID-011 + + + + Операция + + + ru + Операция + + + + true + + String + 11 + Variable + Year + true + true + + + + Document.Операция.StandardAttribute.Number + + Use + Begin + DontUse + Directly + + + + + + + Allow + Deny + AutoDelete + WriteSelected + AutoFill + + AccountingRegister.Хозрасчетный + CalculationRegister.Начисления + + true + true + false + + Managed + Use + + + + + + Auto + DontUse + false + false + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/gentypes-full/Documents/Операция/Ext/ObjectModule.bsl b/tests/skills/cases/cfe-borrow/snapshots/gentypes-full/Documents/Операция/Ext/ObjectModule.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/cfe-borrow/snapshots/gentypes-full/Tasks/ЗадачаИсполнителя.xml b/tests/skills/cases/cfe-borrow/snapshots/gentypes-full/Tasks/ЗадачаИсполнителя.xml new file mode 100644 index 00000000..4e5e2e85 --- /dev/null +++ b/tests/skills/cases/cfe-borrow/snapshots/gentypes-full/Tasks/ЗадачаИсполнителя.xml @@ -0,0 +1,289 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + UUID-006 + UUID-007 + + + UUID-008 + UUID-009 + + + UUID-010 + UUID-011 + + + + ЗадачаИсполнителя + + + ru + Задача исполнителя + + + + true + String + 14 + 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 + + Task.ЗадачаИсполнителя.StandardAttribute.Number + + Begin + DontUse + Directly + DontUse + + + + + + + Auto + false + + Managed + Use + + + + + + DontUse + false + false + + + + \ No newline at end of file diff --git a/tests/skills/cases/cfe-borrow/snapshots/gentypes-full/Tasks/ЗадачаИсполнителя/Ext/ObjectModule.bsl b/tests/skills/cases/cfe-borrow/snapshots/gentypes-full/Tasks/ЗадачаИсполнителя/Ext/ObjectModule.bsl new file mode 100644 index 00000000..e69de29b