feat(mxl-compile,mxl-decompile): привязка именованной области к колоночной раскладке

Именованная область ссылается на дополнительный набор колонок тегом
columnsID, и эта ссылка терялась целиком: на пилоте кампании она давала
3572 расхождения из 3572 в своей категории, на корпусе таких областей
913 483 прямоугольных, 20 063 полосы строк и 743 полосы колонок.

Ключ namedAreas[].columnSet имеет три состояния: ключа нет — привязка
выводится из накрытых строк (совпадает у 1 021 570 областей корпуса из
1 044 339), "" — привязки нет вовсе, имя набора — явная привязка.
Переопределение обязательно: у областей типа Rows 13 623 повторяют
раскладку строк, а 8 179 её не несут при тех же строках.

Декомпилятор пишет ключ, только когда он не выводится, а область, чья
привязка расходится с раскладкой её строк, уводит из блочной формы в
namedAreas — иначе блоком её не выразить.

Пустая строка тоже попадает в карту «строка → раскладка»: без этого
привязка области, накрывающей пустые строки, не выводилась.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-08-15 17:49:24 +03:00
co-authored by Claude Opus 5
parent 702a3b6a8d
commit b32bb5899b
11 changed files with 278 additions and 14 deletions
@@ -0,0 +1,17 @@
{
"name": "Именованная область с привязкой к колоночной раскладке",
"input": {
"columns": 3,
"columnSets": { "узкая": { "columns": 2, "columnWidths": { "1-2": 20 } } },
"areas": [
{ "name": "Шапка", "rows": [["Заголовок"]] },
{ "name": "Таблица", "columnSet": "узкая", "rows": [["Товар", "Цена"]] }
],
"namedAreas": [
{ "name": "ПоУзкой", "rows": 2, "cols": "1-2" },
{ "name": "БезПривязки", "rows": 2, "cols": 1, "columnSet": "" },
{ "name": "ЯвнаяПривязка", "rows": 1, "cols": 1, "columnSet": "узкая" }
]
},
"params": { "outputPath": "Template.xml" }
}
@@ -126,6 +126,7 @@
<endRow>1</endRow>
<beginColumn>-1</beginColumn>
<endColumn>-1</endColumn>
<columnsID>12320174-2b07-3806-9f7f-ec3834007fdb</columnsID>
</area>
</namedItem>
<namedItem xsi:type="NamedItemCells">
@@ -115,6 +115,7 @@
<endRow>1</endRow>
<beginColumn>-1</beginColumn>
<endColumn>-1</endColumn>
<columnsID>01f06d2d-2103-3169-8cc8-32872f100129</columnsID>
</area>
</namedItem>
<namedItem xsi:type="NamedItemCells">
@@ -0,0 +1,138 @@
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns="http://v8.1c.ru/8.2/data/spreadsheet" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<languageSettings>
<currentLanguage>ru</currentLanguage>
<defaultLanguage>ru</defaultLanguage>
<languageInfo>
<id>ru</id>
<code>Русский</code>
<description>Русский</description>
</languageInfo>
</languageSettings>
<columns>
<size>3</size>
</columns>
<columns>
<id>12320174-2b07-3806-9f7f-ec3834007fdb</id>
<size>2</size>
<columnsItem>
<index>0</index>
<column>
<formatIndex>1</formatIndex>
</column>
</columnsItem>
<columnsItem>
<index>1</index>
<column>
<formatIndex>1</formatIndex>
</column>
</columnsItem>
</columns>
<rowsItem>
<index>0</index>
<row>
<c>
<c>
<f>0</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Заголовок</v8:content>
</v8:item>
</tl>
</c>
</c>
</row>
</rowsItem>
<rowsItem>
<index>1</index>
<row>
<columnsID>12320174-2b07-3806-9f7f-ec3834007fdb</columnsID>
<c>
<c>
<f>0</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Товар</v8:content>
</v8:item>
</tl>
</c>
</c>
<c>
<c>
<f>0</f>
<tl>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Цена</v8:content>
</v8:item>
</tl>
</c>
</c>
</row>
</rowsItem>
<templateMode>true</templateMode>
<defaultFormatIndex>2</defaultFormatIndex>
<height>2</height>
<vgRows>2</vgRows>
<namedItem xsi:type="NamedItemCells">
<name>БезПривязки</name>
<area>
<type>Rectangle</type>
<beginRow>1</beginRow>
<endRow>1</endRow>
<beginColumn>0</beginColumn>
<endColumn>0</endColumn>
</area>
</namedItem>
<namedItem xsi:type="NamedItemCells">
<name>ПоУзкой</name>
<area>
<type>Rectangle</type>
<beginRow>1</beginRow>
<endRow>1</endRow>
<beginColumn>0</beginColumn>
<endColumn>1</endColumn>
<columnsID>12320174-2b07-3806-9f7f-ec3834007fdb</columnsID>
</area>
</namedItem>
<namedItem xsi:type="NamedItemCells">
<name>Таблица</name>
<area>
<type>Rows</type>
<beginRow>1</beginRow>
<endRow>1</endRow>
<beginColumn>-1</beginColumn>
<endColumn>-1</endColumn>
<columnsID>12320174-2b07-3806-9f7f-ec3834007fdb</columnsID>
</area>
</namedItem>
<namedItem xsi:type="NamedItemCells">
<name>Шапка</name>
<area>
<type>Rows</type>
<beginRow>0</beginRow>
<endRow>0</endRow>
<beginColumn>-1</beginColumn>
<endColumn>-1</endColumn>
</area>
</namedItem>
<namedItem xsi:type="NamedItemCells">
<name>ЯвнаяПривязка</name>
<area>
<type>Rectangle</type>
<beginRow>0</beginRow>
<endRow>0</endRow>
<beginColumn>0</beginColumn>
<endColumn>0</endColumn>
<columnsID>12320174-2b07-3806-9f7f-ec3834007fdb</columnsID>
</area>
</namedItem>
<format>
<width>20</width>
</format>
<format>
<width>10</width>
</format>
</document>