From dac265995e6b032d19d79dd3250a870c0a5b01a9 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sat, 1 Aug 2026 20:58:31 +0300 Subject: [PATCH] =?UTF-8?q?fix(meta-compile):=20LineNumberLength=20=D1=82?= =?UTF-8?q?=D0=BE=D0=BB=D1=8C=D0=BA=D0=BE=20=D0=BE=D0=B1=D1=8A=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D0=B0=D0=BC=20=D1=81=20=D1=85=D1=80=D0=B0=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=D0=BC=20=D0=B2=20=D0=91=D0=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Раундтрип по обработкам и отчётам УТ (7568 объектов) показал 265 лишних строк: мы эмитили LineNumberLength каждой табличной части, а платформа пишет его только объектам, у которых есть таблица в базе. Проверено на двух конфигурациях независимо: у обработок 0 тегов из 235+257 табличных частей, у отчётов 0 из 106+8; у справочников, документов, ПВХ, планов обмена и бизнес-процессов тег стоит поголовно. Свойство задаёт разрядность физического номера строки в таблице БД — у обработок и отчётов таблиц нет, хранить нечего. Исключены DataProcessor и Report, а также ExternalDataProcessor и ExternalReport: внешние обработки той же природы, и при сборке EPF на формате 2.20 мы бы писали тег, которого платформа не пишет. Кейс format-220-props дополнен обработкой с табличной частью: у неё тега нет, у справочника в той же конфигурации LineNumberLength=9. Проверка: УТ tier-2 7543/7543 без расхождений (было 71 diff), сюита 76/76 на обоих портах, 1С-сертификация на 8.3.27 пройдена. Co-Authored-By: Claude Opus 5 (1M context) --- .../meta-compile/scripts/meta-compile.ps1 | 5 +- .../meta-compile/scripts/meta-compile.py | 5 +- .../cases/meta-compile/format-220-props.json | 5 + .../format-220-props/Configuration.xml | 1 + .../DataProcessors/ЗагрузкаКурсов.xml | 129 ++++++++++++++++++ .../ЗагрузкаКурсов/Ext/ManagerModule.bsl | 0 .../ЗагрузкаКурсов/Ext/ObjectModule.bsl | 0 7 files changed, 143 insertions(+), 2 deletions(-) create mode 100644 tests/skills/cases/meta-compile/snapshots/format-220-props/DataProcessors/ЗагрузкаКурсов.xml create mode 100644 tests/skills/cases/meta-compile/snapshots/format-220-props/DataProcessors/ЗагрузкаКурсов/Ext/ManagerModule.bsl create mode 100644 tests/skills/cases/meta-compile/snapshots/format-220-props/DataProcessors/ЗагрузкаКурсов/Ext/ObjectModule.bsl diff --git a/.claude/skills/meta-compile/scripts/meta-compile.ps1 b/.claude/skills/meta-compile/scripts/meta-compile.ps1 index bf0d8c54..e5a0b997 100644 --- a/.claude/skills/meta-compile/scripts/meta-compile.ps1 +++ b/.claude/skills/meta-compile/scripts/meta-compile.ps1 @@ -2094,7 +2094,10 @@ function Emit-TabularSection { } # Формат 2.20 (8.3.27): длина номера строки ТЧ (5..9 → до 999 999 999 строк вместо 99 999). # Последним в Properties. Дефолт платформа берёт из режима совместимости на момент создания ТЧ. - if ($script:isFormat220) { + # ТОЛЬКО у объектов с хранением в БД: обработкам и отчётам платформа тег не пишет вовсе + # (проверено на двух конфигурациях: 0 из 235+257 ТЧ обработок и 0 из 106+8 ТЧ отчётов). + # Свойство задаёт разрядность физического номера строки в таблице — у обработок таблицы нет. + if ($script:isFormat220 -and $objectType -notin @("DataProcessor", "Report", "ExternalDataProcessor", "ExternalReport")) { $lnl = if ($null -ne $tsLineNumberLength -and "$tsLineNumberLength" -ne '') { [int]$tsLineNumberLength } else { $script:lineNumberLengthDefault } X "$indent`t`t$lnl" } diff --git a/.claude/skills/meta-compile/scripts/meta-compile.py b/.claude/skills/meta-compile/scripts/meta-compile.py index c420854f..4014521f 100644 --- a/.claude/skills/meta-compile/scripts/meta-compile.py +++ b/.claude/skills/meta-compile/scripts/meta-compile.py @@ -2151,7 +2151,10 @@ def emit_tabular_section(indent, ts_name, columns, object_type, object_name, ts_ X(f'{indent}\t\t{ts_use if ts_use else "ForItem"}') # Формат 2.20 (8.3.27): длина номера строки ТЧ (5..9 → до 999 999 999 строк вместо 99 999). # Последним в Properties. Дефолт платформа берёт из режима совместимости на момент создания ТЧ. - if is_format_220: + # ТОЛЬКО у объектов с хранением в БД: обработкам и отчётам платформа тег не пишет вовсе + # (проверено на двух конфигурациях: 0 из 235+257 ТЧ обработок и 0 из 106+8 ТЧ отчётов). + # Свойство задаёт разрядность физического номера строки в таблице — у обработок таблицы нет. + if is_format_220 and object_type not in ('DataProcessor', 'Report', 'ExternalDataProcessor', 'ExternalReport'): lnl = int(ts_line_number_length) if ts_line_number_length not in (None, '') else line_number_length_default X(f'{indent}\t\t{lnl}') X(f'{indent}\t') diff --git a/tests/skills/cases/meta-compile/format-220-props.json b/tests/skills/cases/meta-compile/format-220-props.json index 4d0a0b26..36301d06 100644 --- a/tests/skills/cases/meta-compile/format-220-props.json +++ b/tests/skills/cases/meta-compile/format-220-props.json @@ -22,6 +22,11 @@ "periodicity": "Day", "dimensions": ["Валюта: CatalogRef.Валюты | master, mainFilter"], "resources": ["Курс: Number(15,4)"] + }, + { + "type": "DataProcessor", + "name": "ЗагрузкаКурсов", + "tabularSections": { "Строки": ["Значение: Число(15,2)"] } } ], "validatePath": "Catalogs/Договоры", diff --git a/tests/skills/cases/meta-compile/snapshots/format-220-props/Configuration.xml b/tests/skills/cases/meta-compile/snapshots/format-220-props/Configuration.xml index 194639db..457894ef 100644 --- a/tests/skills/cases/meta-compile/snapshots/format-220-props/Configuration.xml +++ b/tests/skills/cases/meta-compile/snapshots/format-220-props/Configuration.xml @@ -249,6 +249,7 @@ Валюты Договоры КурсыВалют + ЗагрузкаКурсов \ No newline at end of file diff --git a/tests/skills/cases/meta-compile/snapshots/format-220-props/DataProcessors/ЗагрузкаКурсов.xml b/tests/skills/cases/meta-compile/snapshots/format-220-props/DataProcessors/ЗагрузкаКурсов.xml new file mode 100644 index 00000000..f8825da7 --- /dev/null +++ b/tests/skills/cases/meta-compile/snapshots/format-220-props/DataProcessors/ЗагрузкаКурсов.xml @@ -0,0 +1,129 @@ + + + + + + UUID-002 + UUID-003 + + + UUID-004 + UUID-005 + + + + ЗагрузкаКурсов + + + ru + Загрузка курсов + + + + true + + + false + + + + + + + + UUID-007 + UUID-008 + + + UUID-009 + UUID-010 + + + + Строки + + + ru + Строки + + + + + DontCheck + + + + DontCheck + false + false + Auto + TransformValues + + + false + + + Auto + Auto + + false + Use + false + + + + Use + + + + + + + + + + + Значение + + + ru + Значение + + + + + xs:decimal + + 15 + 2 + Any + + + false + + + + false + + false + false + + + false + 0 + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + + + diff --git a/tests/skills/cases/meta-compile/snapshots/format-220-props/DataProcessors/ЗагрузкаКурсов/Ext/ManagerModule.bsl b/tests/skills/cases/meta-compile/snapshots/format-220-props/DataProcessors/ЗагрузкаКурсов/Ext/ManagerModule.bsl new file mode 100644 index 00000000..e69de29b diff --git a/tests/skills/cases/meta-compile/snapshots/format-220-props/DataProcessors/ЗагрузкаКурсов/Ext/ObjectModule.bsl b/tests/skills/cases/meta-compile/snapshots/format-220-props/DataProcessors/ЗагрузкаКурсов/Ext/ObjectModule.bsl new file mode 100644 index 00000000..e69de29b