fix(mxl-compile): писать номер колонки и пустые строки как платформа

Две правки эмиссии, обе выведены из корпуса erp_8.3.24 (10924 макета,
15.2 млн ячеек) и проверены на нём же без единого контрпримера.

Номер колонки <i> платформа пишет только при разрыве последовательности:
подряд идущая ячейка его не несёт, читатель ведёт счётчик сам. Мы писали
всегда — из 1.2 млн записанных платформой номеров ни один не избыточен.

Подряд идущие одинаковые ПУСТЫЕ строки платформа хранит одним rowsItem
с indexTo; непустые не схлопывает, даже когда они совпадают (98153 таких
случая в корпусе). Мы не эмитили indexTo вовсе.

На пилоте (40 макетов) доля строк документа, совпавших с оригиналом
байт в байт, выросла с 0.3% до 16.7%; все 9 диапазонов indexTo оригинала
воспроизведены точно.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-08-11 13:04:59 +03:00
co-authored by Claude Opus 5
parent 3e7e105c43
commit cd9a800f8b
25 changed files with 141 additions and 209 deletions
@@ -56,7 +56,6 @@
<index>0</index>
<row>
<c>
<i>0</i>
<c>
<f>1</f>
<tl>
@@ -68,7 +67,6 @@
</c>
</c>
<c>
<i>1</i>
<c>
<f>1</f>
<tl>
@@ -80,7 +78,6 @@
</c>
</c>
<c>
<i>2</i>
<c>
<f>1</f>
<tl>
@@ -98,21 +95,18 @@
<row>
<columnsID>12320174-2b07-3806-9f7f-ec3834007fdb</columnsID>
<c>
<i>0</i>
<c>
<f>4</f>
<parameter>Товар</parameter>
</c>
</c>
<c>
<i>1</i>
<c>
<f>4</f>
<parameter>Кол</parameter>
</c>
</c>
<c>
<i>2</i>
<c>
<f>4</f>
<parameter>Сумма</parameter>
@@ -52,7 +52,6 @@
<index>0</index>
<row>
<c>
<i>0</i>
<c>
<f>5</f>
<tl>
@@ -64,7 +63,6 @@
</c>
</c>
<c>
<i>1</i>
<c>
<f>5</f>
<tl>
@@ -76,7 +74,6 @@
</c>
</c>
<c>
<i>2</i>
<c>
<f>5</f>
<tl>
@@ -88,7 +85,6 @@
</c>
</c>
<c>
<i>3</i>
<c>
<f>5</f>
<tl>
@@ -100,7 +96,6 @@
</c>
</c>
<c>
<i>4</i>
<c>
<f>5</f>
<tl>
@@ -112,7 +107,6 @@
</c>
</c>
<c>
<i>5</i>
<c>
<f>5</f>
<tl>
@@ -16,7 +16,6 @@
<index>0</index>
<row>
<c>
<i>0</i>
<c>
<f>2</f>
<tl>
@@ -31,12 +30,7 @@
</rowsItem>
<rowsItem>
<index>1</index>
<row>
<empty>true</empty>
</row>
</rowsItem>
<rowsItem>
<index>2</index>
<indexTo>2</indexTo>
<row>
<empty>true</empty>
</row>
@@ -45,21 +39,18 @@
<index>3</index>
<row>
<c>
<i>0</i>
<c>
<f>4</f>
<parameter>Код</parameter>
</c>
</c>
<c>
<i>1</i>
<c>
<f>4</f>
<parameter>Имя</parameter>
</c>
</c>
<c>
<i>2</i>
<c>
<f>4</f>
<parameter>Значение</parameter>
@@ -16,7 +16,6 @@
<index>0</index>
<row>
<c>
<i>0</i>
<c>
<f>2</f>
<tl>
@@ -28,7 +27,6 @@
</c>
</c>
<c>
<i>1</i>
<c>
<f>3</f>
<tl>
@@ -16,7 +16,6 @@
<index>0</index>
<row>
<c>
<i>0</i>
<c>
<f>2</f>
<tl>
@@ -28,7 +27,6 @@
</c>
</c>
<c>
<i>1</i>
<c>
<f>2</f>
<tl>
@@ -40,7 +38,6 @@
</c>
</c>
<c>
<i>2</i>
<c>
<f>2</f>
<tl>
@@ -52,7 +49,6 @@
</c>
</c>
<c>
<i>3</i>
<c>
<f>2</f>
<tl>
@@ -69,28 +65,24 @@
<index>1</index>
<row>
<c>
<i>0</i>
<c>
<f>4</f>
<parameter>Дата</parameter>
</c>
</c>
<c>
<i>1</i>
<c>
<f>5</f>
<parameter>Товар</parameter>
</c>
</c>
<c>
<i>2</i>
<c>
<f>6</f>
<parameter>Количество</parameter>
</c>
</c>
<c>
<i>3</i>
<c>
<f>6</f>
<parameter>Цена</parameter>
@@ -16,7 +16,6 @@
<index>0</index>
<row>
<c>
<i>0</i>
<c>
<f>1</f>
<tl>
@@ -16,7 +16,6 @@
<index>0</index>
<row>
<c>
<i>0</i>
<c>
<f>1</f>
<tl>
@@ -28,7 +27,6 @@
</c>
</c>
<c>
<i>1</i>
<c>
<f>1</f>
<tl>
@@ -40,7 +38,6 @@
</c>
</c>
<c>
<i>2</i>
<c>
<f>1</f>
<tl>
@@ -57,7 +54,6 @@
<index>1</index>
<row>
<c>
<i>0</i>
<c>
<f>1</f>
<tl>
@@ -69,7 +65,6 @@
</c>
</c>
<c>
<i>1</i>
<c>
<f>1</f>
<tl>
@@ -81,7 +76,6 @@
</c>
</c>
<c>
<i>2</i>
<c>
<f>1</f>
<tl>
@@ -110,7 +104,6 @@
</c>
</c>
<c>
<i>2</i>
<c>
<f>1</f>
<tl>
@@ -127,7 +120,6 @@
<index>3</index>
<row>
<c>
<i>0</i>
<c>
<f>1</f>
<tl>
@@ -16,7 +16,6 @@
<index>0</index>
<row>
<c>
<i>0</i>
<c>
<f>1</f>
<tl>
@@ -28,7 +27,6 @@
</c>
</c>
<c>
<i>1</i>
<c>
<f>1</f>
<tl>
@@ -40,7 +38,6 @@
</c>
</c>
<c>
<i>2</i>
<c>
<f>1</f>
<tl>
@@ -16,7 +16,6 @@
<index>0</index>
<row>
<c>
<i>0</i>
<c>
<f>3</f>
<tl>
@@ -28,7 +27,6 @@
</c>
</c>
<c>
<i>1</i>
<c>
<f>3</f>
<tl>
@@ -69,7 +67,6 @@
</c>
</c>
<c>
<i>2</i>
<c>
<f>4</f>
<tl>
@@ -86,28 +83,24 @@
<index>2</index>
<row>
<c>
<i>0</i>
<c>
<f>5</f>
<parameter>Номер</parameter>
</c>
</c>
<c>
<i>1</i>
<c>
<f>6</f>
<parameter>Наименование</parameter>
</c>
</c>
<c>
<i>2</i>
<c>
<f>6</f>
<parameter>Артикул</parameter>
</c>
</c>
<c>
<i>3</i>
<c>
<f>6</f>
<parameter>Итого</parameter>
@@ -16,7 +16,6 @@
<index>0</index>
<row>
<c>
<i>0</i>
<c>
<f>1</f>
<tl>
@@ -17,7 +17,6 @@
<row>
<formatIndex>2</formatIndex>
<c>
<i>0</i>
<c>
<f>3</f>
<parameter>ТекстЗаголовка</parameter>
@@ -29,7 +28,6 @@
<index>1</index>
<row>
<c>
<i>0</i>
<c>
<f>4</f>
<tl>
@@ -41,7 +39,6 @@
</c>
</c>
<c>
<i>1</i>
<c>
<f>4</f>
<tl>
@@ -53,7 +50,6 @@
</c>
</c>
<c>
<i>2</i>
<c>
<f>4</f>
<tl>
@@ -65,7 +61,6 @@
</c>
</c>
<c>
<i>3</i>
<c>
<f>4</f>
<tl>
@@ -82,14 +77,12 @@
<index>2</index>
<row>
<c>
<i>0</i>
<c>
<f>5</f>
<parameter>НомерСтроки</parameter>
</c>
</c>
<c>
<i>1</i>
<c>
<f>5</f>
<parameter>Товар</parameter>
@@ -97,14 +90,12 @@
</c>
</c>
<c>
<i>2</i>
<c>
<f>6</f>
<parameter>Количество</parameter>
</c>
</c>
<c>
<i>3</i>
<c>
<f>6</f>
<parameter>Сумма</parameter>
@@ -128,7 +119,6 @@
</c>
</c>
<c>
<i>3</i>
<c>
<f>8</f>
<parameter>Всего</parameter>
@@ -16,7 +16,6 @@
<index>0</index>
<row>
<c>
<i>0</i>
<c>
<f>1</f>
<tl>
@@ -28,7 +27,6 @@
</c>
</c>
<c>
<i>1</i>
<c>
<f>1</f>
<tl>
@@ -40,7 +38,6 @@
</c>
</c>
<c>
<i>2</i>
<c>
<f>1</f>
<tl>
@@ -52,7 +49,6 @@
</c>
</c>
<c>
<i>3</i>
<c>
<f>1</f>
<tl>
@@ -69,28 +65,24 @@
<index>1</index>
<row>
<c>
<i>0</i>
<c>
<f>2</f>
<parameter>П1</parameter>
</c>
</c>
<c>
<i>1</i>
<c>
<f>2</f>
<parameter>П2</parameter>
</c>
</c>
<c>
<i>2</i>
<c>
<f>2</f>
<parameter>П3</parameter>
</c>
</c>
<c>
<i>3</i>
<c>
<f>2</f>
<parameter>П4</parameter>
@@ -16,7 +16,6 @@
<index>0</index>
<row>
<c>
<i>0</i>
<c>
<f>1</f>
<tl>
@@ -46,7 +46,6 @@
<index>0</index>
<row>
<c>
<i>0</i>
<c>
<f>3</f>
<tl>
@@ -58,7 +57,6 @@
</c>
</c>
<c>
<i>1</i>
<c>
<f>3</f>
<tl>
@@ -70,7 +68,6 @@
</c>
</c>
<c>
<i>2</i>
<c>
<f>3</f>
<tl>
@@ -82,7 +79,6 @@
</c>
</c>
<c>
<i>3</i>
<c>
<f>3</f>
<tl>
@@ -94,7 +90,6 @@
</c>
</c>
<c>
<i>4</i>
<c>
<f>3</f>
<tl>
@@ -111,35 +106,30 @@
<index>1</index>
<row>
<c>
<i>0</i>
<c>
<f>5</f>
<parameter>Номер</parameter>
</c>
</c>
<c>
<i>1</i>
<c>
<f>6</f>
<parameter>Описание</parameter>
</c>
</c>
<c>
<i>2</i>
<c>
<f>5</f>
<parameter>ЕдИзм</parameter>
</c>
</c>
<c>
<i>3</i>
<c>
<f>5</f>
<parameter>Количество</parameter>
</c>
</c>
<c>
<i>4</i>
<c>
<f>6</f>
<parameter>Сумма</parameter>
@@ -16,7 +16,6 @@
<index>0</index>
<row>
<c>
<i>0</i>
<c>
<f>2</f>
<tl>
@@ -28,7 +27,6 @@
</c>
</c>
<c>
<i>1</i>
<c>
<f>3</f>
<tl>
@@ -45,7 +43,6 @@
<index>1</index>
<row>
<c>
<i>0</i>
<c>
<f>2</f>
<tl>
@@ -57,7 +54,6 @@
</c>
</c>
<c>
<i>1</i>
<c>
<f>3</f>
<tl>
@@ -74,21 +70,18 @@
<index>2</index>
<row>
<c>
<i>0</i>
<c>
<f>5</f>
<parameter>Позиция</parameter>
</c>
</c>
<c>
<i>1</i>
<c>
<f>5</f>
<parameter>Товар</parameter>
</c>
</c>
<c>
<i>2</i>
<c>
<f>5</f>
<parameter>Цена</parameter>
@@ -77,7 +77,6 @@
<row>
<formatIndex>2</formatIndex>
<c>
<i>0</i>
<c>
<f>3</f>
<parameter>ТекстЗаголовка</parameter>
@@ -95,7 +94,6 @@
<index>2</index>
<row>
<c>
<i>0</i>
<c>
<f>4</f>
<tl>
@@ -119,7 +117,6 @@
<index>3</index>
<row>
<c>
<i>0</i>
<c>
<f>4</f>
<tl>
@@ -143,7 +140,6 @@
<index>4</index>
<row>
<c>
<i>0</i>
<c>
<f>7</f>
<tl>
@@ -155,7 +151,6 @@
</c>
</c>
<c>
<i>1</i>
<c>
<f>7</f>
<tl>
@@ -179,7 +174,6 @@
</c>
</c>
<c>
<i>7</i>
<c>
<f>7</f>
<tl>
@@ -191,7 +185,6 @@
</c>
</c>
<c>
<i>8</i>
<c>
<f>7</f>
<tl>
@@ -203,7 +196,6 @@
</c>
</c>
<c>
<i>9</i>
<c>
<f>7</f>
<tl>
@@ -220,14 +212,12 @@
<index>5</index>
<row>
<c>
<i>0</i>
<c>
<f>8</f>
<parameter>НомерСтроки</parameter>
</c>
</c>
<c>
<i>1</i>
<c>
<f>9</f>
<parameter>Товар</parameter>
@@ -242,21 +232,18 @@
</c>
</c>
<c>
<i>7</i>
<c>
<f>10</f>
<parameter>Количество</parameter>
</c>
</c>
<c>
<i>8</i>
<c>
<f>10</f>
<parameter>Цена</parameter>
</c>
</c>
<c>
<i>9</i>
<c>
<f>10</f>
<parameter>Сумма</parameter>
@@ -314,12 +301,7 @@
</rowsItem>
<rowsItem>
<index>8</index>
<row>
<empty>true</empty>
</row>
</rowsItem>
<rowsItem>
<index>9</index>
<indexTo>9</indexTo>
<row>
<empty>true</empty>
</row>
@@ -328,7 +310,6 @@
<index>10</index>
<row>
<c>
<i>0</i>
<c>
<f>4</f>
<tl>
@@ -375,7 +356,6 @@
<index>13</index>
<row>
<c>
<i>0</i>
<c>
<f>4</f>
<tl>
@@ -16,7 +16,6 @@
<index>0</index>
<row>
<c>
<i>0</i>
<c>
<f>1</f>
<tl>
@@ -28,7 +27,6 @@
</c>
</c>
<c>
<i>1</i>
<c>
<f>1</f>
<tl>
@@ -69,7 +67,6 @@
</c>
</c>
<c>
<i>2</i>
<c>
<f>1</f>
<tl>
@@ -86,28 +83,24 @@
<index>2</index>
<row>
<c>
<i>0</i>
<c>
<f>2</f>
<parameter>Вид</parameter>
</c>
</c>
<c>
<i>1</i>
<c>
<f>2</f>
<parameter>Нач</parameter>
</c>
</c>
<c>
<i>2</i>
<c>
<f>2</f>
<parameter>Кон</parameter>
</c>
</c>
<c>
<i>3</i>
<c>
<f>2</f>
<parameter>Итог</parameter>
@@ -16,7 +16,6 @@
<index>0</index>
<row>
<c>
<i>0</i>
<c>
<f>1</f>
<tl>
@@ -28,7 +27,6 @@
</c>
</c>
<c>
<i>1</i>
<c>
<f>1</f>
<tl>
@@ -40,7 +38,6 @@
</c>
</c>
<c>
<i>2</i>
<c>
<f>1</f>
<tl>
@@ -52,7 +49,6 @@
</c>
</c>
<c>
<i>3</i>
<c>
<f>1</f>
<tl>
@@ -69,14 +65,12 @@
<index>1</index>
<row>
<c>
<i>0</i>
<c>
<f>2</f>
<parameter>Товар</parameter>
</c>
</c>
<c>
<i>1</i>
<c>
<f>2</f>
<parameter>Кол</parameter>
@@ -16,7 +16,6 @@
<index>0</index>
<row>
<c>
<i>0</i>
<c>
<f>1</f>
<tl>
@@ -28,7 +27,6 @@
</c>
</c>
<c>
<i>1</i>
<c>
<f>1</f>
<tl>
@@ -40,7 +38,6 @@
</c>
</c>
<c>
<i>2</i>
<c>
<f>1</f>
<tl>
@@ -17,7 +17,6 @@
<row>
<formatIndex>2</formatIndex>
<c>
<i>0</i>
<c>
<f>3</f>
<tl>
@@ -34,7 +33,6 @@
<index>1</index>
<row>
<c>
<i>0</i>
<c>
<f>4</f>
<tl>
@@ -58,7 +56,6 @@
<index>2</index>
<row>
<c>
<i>0</i>
<c>
<f>6</f>
<tl>
@@ -70,7 +67,6 @@
</c>
</c>
<c>
<i>1</i>
<c>
<f>6</f>
<tl>
@@ -82,7 +78,6 @@
</c>
</c>
<c>
<i>2</i>
<c>
<f>6</f>
<tl>
@@ -94,7 +89,6 @@
</c>
</c>
<c>
<i>3</i>
<c>
<f>6</f>
<tl>
@@ -106,7 +100,6 @@
</c>
</c>
<c>
<i>4</i>
<c>
<f>6</f>
<tl>
@@ -123,35 +116,30 @@
<index>3</index>
<row>
<c>
<i>0</i>
<c>
<f>8</f>
<parameter>НомерСтроки</parameter>
</c>
</c>
<c>
<i>1</i>
<c>
<f>9</f>
<parameter>Товар</parameter>
</c>
</c>
<c>
<i>2</i>
<c>
<f>10</f>
<parameter>Количество</parameter>
</c>
</c>
<c>
<i>3</i>
<c>
<f>10</f>
<parameter>Цена</parameter>
</c>
</c>
<c>
<i>4</i>
<c>
<f>10</f>
<parameter>Сумма</parameter>
@@ -175,7 +163,6 @@
</c>
</c>
<c>
<i>4</i>
<c>
<f>12</f>
<parameter>Всего</parameter>
@@ -187,7 +174,6 @@
<index>5</index>
<row>
<c>
<i>0</i>
<c>
<f>13</f>
<tl>
@@ -16,7 +16,6 @@
<index>0</index>
<row>
<c>
<i>0</i>
<c>
<f>1</f>
<tl>
@@ -32,7 +31,6 @@
</c>
</c>
<c>
<i>1</i>
<c>
<f>1</f>
<tl>
@@ -16,7 +16,6 @@
<index>0</index>
<row>
<c>
<i>0</i>
<c>
<f>1</f>
<tl>
@@ -28,7 +27,6 @@
</c>
</c>
<c>
<i>1</i>
<c>
<f>1</f>
<tl>
@@ -44,7 +42,6 @@
</c>
</c>
<c>
<i>2</i>
<c>
<f>2</f>
<tl>
@@ -16,7 +16,6 @@
<index>0</index>
<row>
<c>
<i>0</i>
<c>
<f>1</f>
<tl>
@@ -28,7 +27,6 @@
</c>
</c>
<c>
<i>1</i>
<c>
<f>1</f>
<tl>
@@ -40,7 +38,6 @@
</c>
</c>
<c>
<i>2</i>
<c>
<f>1</f>
<tl>
@@ -57,7 +54,6 @@
<index>1</index>
<row>
<c>
<i>0</i>
<c>
<f>1</f>
<tl>
@@ -74,21 +70,18 @@
<index>2</index>
<row>
<c>
<i>0</i>
<c>
<f>2</f>
<parameter>П1</parameter>
</c>
</c>
<c>
<i>1</i>
<c>
<f>2</f>
<parameter>П2</parameter>
</c>
</c>
<c>
<i>2</i>
<c>
<f>2</f>
<parameter>П3</parameter>