mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-17 08:40:23 +03:00
Инкремент A кампании mxl-roundtrip. Блочная форма DSL не выражала больше половины корпуса: у 34% макетов ERP есть строки вне именованных областей, у 21% нет ни одной области типа Rows. Декомпилятор такие строки терял, а на макетах целиком из Rectangle отдавал areas: [] — компилятор отвечал "Required field 'areas' is missing". На пилоте из 40 макетов это 10 отказов из 26. Что сделано: - имя у блока стало необязательным. Блок без имени — просто кусок сетки; именованную область он не создаёт. Отдельный «плоский режим» не нужен: макет без выразимых блоков это один безымянный блок; - namedAreas — именованные области координатами, для всего, что блоком не ложится (не-Rows и пересекающиеся). Тип области НЕ указывается: он выводится из заданных осей, ровно как в ТабличныйДокумент.Область() — только строки дают полосу строк, только колонки полосу колонок, обе оси прямоугольник. Так нельзя написать противоречие вроде type: Rows с колоночными координатами; - диапазон записывается уже существующей грамматикой DSL (как ключи columnWidths): число или "N-M". Список через запятую запрещён — область непрерывна, платформа разрывную не хранит; - прощающим вводом принимается платформенный адрес "R1C1:R2C2" и правило «0 значит 1»; в документацию не вынесено; - декомпилятор перестал пропускать области не-Rows (там стоял безусловный continue) и режет сетку на блоки детерминированно: непересекающиеся Rows задают границы, дыры становятся безымянными блоками, остальное уходит в namedAreas. Отдельно: именованные элементы теперь эмитятся отсортированными по имени. Платформа хранит их именно так — на выборке 541 макета с несколькими элементами иного порядка нет ни разу. Сортировка ординальная и регистронезависимая; Sort-Object по умолчанию сортирует по текущей культуре и на кириллице дал бы другой порядок. Отсюда дрейф 13 снэпшотов — чистая перестановка, диффы симметричны, число элементов не изменилось. На пилоте отказы areas: [] закрыты полностью (10 → 0), цикл переживают 24 макета вместо 14. Оставшиеся 16 отказов — колоночные раскладки, это инкремент B. Правка на ps1, зазеркалена в py; вывод портов и в компиляции, и в декомпиляции совпадает байт в байт. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
633 lines
11 KiB
XML
633 lines
11 KiB
XML
<?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>10</size>
|
||
<columnsItem>
|
||
<index>0</index>
|
||
<column>
|
||
<formatIndex>1</formatIndex>
|
||
</column>
|
||
</columnsItem>
|
||
<columnsItem>
|
||
<index>1</index>
|
||
<column>
|
||
<formatIndex>1</formatIndex>
|
||
</column>
|
||
</columnsItem>
|
||
<columnsItem>
|
||
<index>2</index>
|
||
<column>
|
||
<formatIndex>1</formatIndex>
|
||
</column>
|
||
</columnsItem>
|
||
<columnsItem>
|
||
<index>3</index>
|
||
<column>
|
||
<formatIndex>1</formatIndex>
|
||
</column>
|
||
</columnsItem>
|
||
<columnsItem>
|
||
<index>4</index>
|
||
<column>
|
||
<formatIndex>1</formatIndex>
|
||
</column>
|
||
</columnsItem>
|
||
<columnsItem>
|
||
<index>5</index>
|
||
<column>
|
||
<formatIndex>1</formatIndex>
|
||
</column>
|
||
</columnsItem>
|
||
<columnsItem>
|
||
<index>6</index>
|
||
<column>
|
||
<formatIndex>1</formatIndex>
|
||
</column>
|
||
</columnsItem>
|
||
<columnsItem>
|
||
<index>7</index>
|
||
<column>
|
||
<formatIndex>1</formatIndex>
|
||
</column>
|
||
</columnsItem>
|
||
<columnsItem>
|
||
<index>8</index>
|
||
<column>
|
||
<formatIndex>1</formatIndex>
|
||
</column>
|
||
</columnsItem>
|
||
<columnsItem>
|
||
<index>9</index>
|
||
<column>
|
||
<formatIndex>1</formatIndex>
|
||
</column>
|
||
</columnsItem>
|
||
</columns>
|
||
<rowsItem>
|
||
<index>0</index>
|
||
<row>
|
||
<formatIndex>2</formatIndex>
|
||
<c>
|
||
<i>0</i>
|
||
<c>
|
||
<f>3</f>
|
||
<parameter>ТекстЗаголовка</parameter>
|
||
</c>
|
||
</c>
|
||
</row>
|
||
</rowsItem>
|
||
<rowsItem>
|
||
<index>1</index>
|
||
<row>
|
||
<empty>true</empty>
|
||
</row>
|
||
</rowsItem>
|
||
<rowsItem>
|
||
<index>2</index>
|
||
<row>
|
||
<c>
|
||
<i>0</i>
|
||
<c>
|
||
<f>4</f>
|
||
<tl>
|
||
<v8:item>
|
||
<v8:lang>ru</v8:lang>
|
||
<v8:content>Организация:</v8:content>
|
||
</v8:item>
|
||
</tl>
|
||
</c>
|
||
</c>
|
||
<c>
|
||
<i>3</i>
|
||
<c>
|
||
<f>5</f>
|
||
<parameter>Организация</parameter>
|
||
</c>
|
||
</c>
|
||
</row>
|
||
</rowsItem>
|
||
<rowsItem>
|
||
<index>3</index>
|
||
<row>
|
||
<c>
|
||
<i>0</i>
|
||
<c>
|
||
<f>4</f>
|
||
<tl>
|
||
<v8:item>
|
||
<v8:lang>ru</v8:lang>
|
||
<v8:content>Контрагент:</v8:content>
|
||
</v8:item>
|
||
</tl>
|
||
</c>
|
||
</c>
|
||
<c>
|
||
<i>3</i>
|
||
<c>
|
||
<f>5</f>
|
||
<parameter>Контрагент</parameter>
|
||
</c>
|
||
</c>
|
||
</row>
|
||
</rowsItem>
|
||
<rowsItem>
|
||
<index>4</index>
|
||
<row>
|
||
<c>
|
||
<i>0</i>
|
||
<c>
|
||
<f>7</f>
|
||
<tl>
|
||
<v8:item>
|
||
<v8:lang>ru</v8:lang>
|
||
<v8:content>№</v8:content>
|
||
</v8:item>
|
||
</tl>
|
||
</c>
|
||
</c>
|
||
<c>
|
||
<i>1</i>
|
||
<c>
|
||
<f>7</f>
|
||
<tl>
|
||
<v8:item>
|
||
<v8:lang>ru</v8:lang>
|
||
<v8:content>Наименование</v8:content>
|
||
</v8:item>
|
||
</tl>
|
||
</c>
|
||
</c>
|
||
<c>
|
||
<i>6</i>
|
||
<c>
|
||
<f>7</f>
|
||
<tl>
|
||
<v8:item>
|
||
<v8:lang>ru</v8:lang>
|
||
<v8:content>Ед.</v8:content>
|
||
</v8:item>
|
||
</tl>
|
||
</c>
|
||
</c>
|
||
<c>
|
||
<i>7</i>
|
||
<c>
|
||
<f>7</f>
|
||
<tl>
|
||
<v8:item>
|
||
<v8:lang>ru</v8:lang>
|
||
<v8:content>Кол-во</v8:content>
|
||
</v8:item>
|
||
</tl>
|
||
</c>
|
||
</c>
|
||
<c>
|
||
<i>8</i>
|
||
<c>
|
||
<f>7</f>
|
||
<tl>
|
||
<v8:item>
|
||
<v8:lang>ru</v8:lang>
|
||
<v8:content>Цена</v8:content>
|
||
</v8:item>
|
||
</tl>
|
||
</c>
|
||
</c>
|
||
<c>
|
||
<i>9</i>
|
||
<c>
|
||
<f>7</f>
|
||
<tl>
|
||
<v8:item>
|
||
<v8:lang>ru</v8:lang>
|
||
<v8:content>Сумма</v8:content>
|
||
</v8:item>
|
||
</tl>
|
||
</c>
|
||
</c>
|
||
</row>
|
||
</rowsItem>
|
||
<rowsItem>
|
||
<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>
|
||
<detailParameter>Номенклатура</detailParameter>
|
||
</c>
|
||
</c>
|
||
<c>
|
||
<i>6</i>
|
||
<c>
|
||
<f>8</f>
|
||
<parameter>ЕдИзм</parameter>
|
||
</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>
|
||
</c>
|
||
</c>
|
||
</row>
|
||
</rowsItem>
|
||
<rowsItem>
|
||
<index>6</index>
|
||
<row>
|
||
<c>
|
||
<i>7</i>
|
||
<c>
|
||
<f>11</f>
|
||
<tl>
|
||
<v8:item>
|
||
<v8:lang>ru</v8:lang>
|
||
<v8:content>Итого:</v8:content>
|
||
</v8:item>
|
||
</tl>
|
||
</c>
|
||
</c>
|
||
<c>
|
||
<i>9</i>
|
||
<c>
|
||
<f>12</f>
|
||
<parameter>ИтогоСумма</parameter>
|
||
</c>
|
||
</c>
|
||
</row>
|
||
</rowsItem>
|
||
<rowsItem>
|
||
<index>7</index>
|
||
<row>
|
||
<c>
|
||
<i>7</i>
|
||
<c>
|
||
<f>11</f>
|
||
<tl>
|
||
<v8:item>
|
||
<v8:lang>ru</v8:lang>
|
||
<v8:content>В т.ч. НДС:</v8:content>
|
||
</v8:item>
|
||
</tl>
|
||
</c>
|
||
</c>
|
||
<c>
|
||
<i>9</i>
|
||
<c>
|
||
<f>12</f>
|
||
<parameter>ИтогоНДС</parameter>
|
||
</c>
|
||
</c>
|
||
</row>
|
||
</rowsItem>
|
||
<rowsItem>
|
||
<index>8</index>
|
||
<row>
|
||
<empty>true</empty>
|
||
</row>
|
||
</rowsItem>
|
||
<rowsItem>
|
||
<index>9</index>
|
||
<row>
|
||
<empty>true</empty>
|
||
</row>
|
||
</rowsItem>
|
||
<rowsItem>
|
||
<index>10</index>
|
||
<row>
|
||
<c>
|
||
<i>0</i>
|
||
<c>
|
||
<f>4</f>
|
||
<tl>
|
||
<v8:item>
|
||
<v8:lang>ru</v8:lang>
|
||
<v8:content>Отпустил:</v8:content>
|
||
</v8:item>
|
||
</tl>
|
||
</c>
|
||
</c>
|
||
<c>
|
||
<i>3</i>
|
||
<c>
|
||
<f>13</f>
|
||
<parameter>Отпустил</parameter>
|
||
</c>
|
||
</c>
|
||
</row>
|
||
</rowsItem>
|
||
<rowsItem>
|
||
<index>11</index>
|
||
<row>
|
||
<c>
|
||
<i>3</i>
|
||
<c>
|
||
<f>14</f>
|
||
<tl>
|
||
<v8:item>
|
||
<v8:lang>ru</v8:lang>
|
||
<v8:content>(подпись)</v8:content>
|
||
</v8:item>
|
||
</tl>
|
||
</c>
|
||
</c>
|
||
</row>
|
||
</rowsItem>
|
||
<rowsItem>
|
||
<index>12</index>
|
||
<row>
|
||
<empty>true</empty>
|
||
</row>
|
||
</rowsItem>
|
||
<rowsItem>
|
||
<index>13</index>
|
||
<row>
|
||
<c>
|
||
<i>0</i>
|
||
<c>
|
||
<f>4</f>
|
||
<tl>
|
||
<v8:item>
|
||
<v8:lang>ru</v8:lang>
|
||
<v8:content>Получил:</v8:content>
|
||
</v8:item>
|
||
</tl>
|
||
</c>
|
||
</c>
|
||
<c>
|
||
<i>3</i>
|
||
<c>
|
||
<f>13</f>
|
||
<parameter>Получил</parameter>
|
||
</c>
|
||
</c>
|
||
</row>
|
||
</rowsItem>
|
||
<rowsItem>
|
||
<index>14</index>
|
||
<row>
|
||
<c>
|
||
<i>3</i>
|
||
<c>
|
||
<f>14</f>
|
||
<tl>
|
||
<v8:item>
|
||
<v8:lang>ru</v8:lang>
|
||
<v8:content>(подпись)</v8:content>
|
||
</v8:item>
|
||
</tl>
|
||
</c>
|
||
</c>
|
||
</row>
|
||
</rowsItem>
|
||
<templateMode>true</templateMode>
|
||
<defaultFormatIndex>1</defaultFormatIndex>
|
||
<height>15</height>
|
||
<vgRows>15</vgRows>
|
||
<merge>
|
||
<r>0</r>
|
||
<c>0</c>
|
||
<w>9</w>
|
||
</merge>
|
||
<merge>
|
||
<r>2</r>
|
||
<c>0</c>
|
||
<w>2</w>
|
||
</merge>
|
||
<merge>
|
||
<r>2</r>
|
||
<c>3</c>
|
||
<w>6</w>
|
||
</merge>
|
||
<merge>
|
||
<r>3</r>
|
||
<c>0</c>
|
||
<w>2</w>
|
||
</merge>
|
||
<merge>
|
||
<r>3</r>
|
||
<c>3</c>
|
||
<w>6</w>
|
||
</merge>
|
||
<merge>
|
||
<r>4</r>
|
||
<c>1</c>
|
||
<w>4</w>
|
||
</merge>
|
||
<merge>
|
||
<r>5</r>
|
||
<c>1</c>
|
||
<w>4</w>
|
||
</merge>
|
||
<merge>
|
||
<r>6</r>
|
||
<c>7</c>
|
||
<w>1</w>
|
||
</merge>
|
||
<merge>
|
||
<r>7</r>
|
||
<c>7</c>
|
||
<w>1</w>
|
||
</merge>
|
||
<merge>
|
||
<r>10</r>
|
||
<c>0</c>
|
||
<w>2</w>
|
||
</merge>
|
||
<merge>
|
||
<r>10</r>
|
||
<c>3</c>
|
||
<w>2</w>
|
||
</merge>
|
||
<merge>
|
||
<r>11</r>
|
||
<c>3</c>
|
||
<w>2</w>
|
||
</merge>
|
||
<merge>
|
||
<r>13</r>
|
||
<c>0</c>
|
||
<w>2</w>
|
||
</merge>
|
||
<merge>
|
||
<r>13</r>
|
||
<c>3</c>
|
||
<w>2</w>
|
||
</merge>
|
||
<merge>
|
||
<r>14</r>
|
||
<c>3</c>
|
||
<w>2</w>
|
||
</merge>
|
||
<namedItem xsi:type="NamedItemCells">
|
||
<name>Заголовок</name>
|
||
<area>
|
||
<type>Rows</type>
|
||
<beginRow>0</beginRow>
|
||
<endRow>3</endRow>
|
||
<beginColumn>-1</beginColumn>
|
||
<endColumn>-1</endColumn>
|
||
</area>
|
||
</namedItem>
|
||
<namedItem xsi:type="NamedItemCells">
|
||
<name>Итого</name>
|
||
<area>
|
||
<type>Rows</type>
|
||
<beginRow>6</beginRow>
|
||
<endRow>7</endRow>
|
||
<beginColumn>-1</beginColumn>
|
||
<endColumn>-1</endColumn>
|
||
</area>
|
||
</namedItem>
|
||
<namedItem xsi:type="NamedItemCells">
|
||
<name>Подвал</name>
|
||
<area>
|
||
<type>Rows</type>
|
||
<beginRow>8</beginRow>
|
||
<endRow>14</endRow>
|
||
<beginColumn>-1</beginColumn>
|
||
<endColumn>-1</endColumn>
|
||
</area>
|
||
</namedItem>
|
||
<namedItem xsi:type="NamedItemCells">
|
||
<name>Строка</name>
|
||
<area>
|
||
<type>Rows</type>
|
||
<beginRow>5</beginRow>
|
||
<endRow>5</endRow>
|
||
<beginColumn>-1</beginColumn>
|
||
<endColumn>-1</endColumn>
|
||
</area>
|
||
</namedItem>
|
||
<namedItem xsi:type="NamedItemCells">
|
||
<name>ШапкаТаблицы</name>
|
||
<area>
|
||
<type>Rows</type>
|
||
<beginRow>4</beginRow>
|
||
<endRow>4</endRow>
|
||
<beginColumn>-1</beginColumn>
|
||
<endColumn>-1</endColumn>
|
||
</area>
|
||
</namedItem>
|
||
<line width="1" gap="false">
|
||
<v8ui:style xsi:type="v8ui:SpreadsheetDocumentCellLineType">Solid</v8ui:style>
|
||
</line>
|
||
<font faceName="Arial" height="10" bold="false" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
|
||
<font faceName="Arial" height="10" bold="true" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
|
||
<font faceName="Arial" height="14" bold="true" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
|
||
<font faceName="Arial" height="8" bold="false" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
|
||
<format>
|
||
<width>54</width>
|
||
</format>
|
||
<format>
|
||
<height>20</height>
|
||
</format>
|
||
<format>
|
||
<font>2</font>
|
||
<horizontalAlignment>Center</horizontalAlignment>
|
||
<fillType>Parameter</fillType>
|
||
</format>
|
||
<format>
|
||
<font>1</font>
|
||
<fillType>Text</fillType>
|
||
</format>
|
||
<format>
|
||
<font>0</font>
|
||
<fillType>Parameter</fillType>
|
||
</format>
|
||
<format>
|
||
<font>0</font>
|
||
<leftBorder>0</leftBorder>
|
||
<topBorder>0</topBorder>
|
||
<rightBorder>0</rightBorder>
|
||
<bottomBorder>0</bottomBorder>
|
||
</format>
|
||
<format>
|
||
<font>0</font>
|
||
<leftBorder>0</leftBorder>
|
||
<topBorder>0</topBorder>
|
||
<rightBorder>0</rightBorder>
|
||
<bottomBorder>0</bottomBorder>
|
||
<horizontalAlignment>Center</horizontalAlignment>
|
||
<fillType>Text</fillType>
|
||
</format>
|
||
<format>
|
||
<font>0</font>
|
||
<leftBorder>0</leftBorder>
|
||
<topBorder>0</topBorder>
|
||
<rightBorder>0</rightBorder>
|
||
<bottomBorder>0</bottomBorder>
|
||
<horizontalAlignment>Center</horizontalAlignment>
|
||
<fillType>Parameter</fillType>
|
||
</format>
|
||
<format>
|
||
<font>0</font>
|
||
<leftBorder>0</leftBorder>
|
||
<topBorder>0</topBorder>
|
||
<rightBorder>0</rightBorder>
|
||
<bottomBorder>0</bottomBorder>
|
||
<fillType>Parameter</fillType>
|
||
</format>
|
||
<format>
|
||
<font>0</font>
|
||
<leftBorder>0</leftBorder>
|
||
<topBorder>0</topBorder>
|
||
<rightBorder>0</rightBorder>
|
||
<bottomBorder>0</bottomBorder>
|
||
<horizontalAlignment>Right</horizontalAlignment>
|
||
<fillType>Parameter</fillType>
|
||
</format>
|
||
<format>
|
||
<font>1</font>
|
||
<horizontalAlignment>Right</horizontalAlignment>
|
||
<fillType>Text</fillType>
|
||
</format>
|
||
<format>
|
||
<font>1</font>
|
||
<topBorder>0</topBorder>
|
||
<horizontalAlignment>Right</horizontalAlignment>
|
||
<fillType>Parameter</fillType>
|
||
</format>
|
||
<format>
|
||
<font>0</font>
|
||
<bottomBorder>0</bottomBorder>
|
||
<fillType>Parameter</fillType>
|
||
</format>
|
||
<format>
|
||
<font>3</font>
|
||
<horizontalAlignment>Center</horizontalAlignment>
|
||
<fillType>Text</fillType>
|
||
</format>
|
||
</document> |