From cbe7abdcbbbf8d4be5e79e153158667c33efa2a8 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Mon, 10 Aug 2026 19:58:35 +0300 Subject: [PATCH] =?UTF-8?q?fix(mxl-compile):=20=D0=BD=D0=B5=20=D1=8D=D0=BC?= =?UTF-8?q?=D0=B8=D1=82=D0=B8=D1=82=D1=8C=20fillType=3DText,=20UUID=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=B8=D0=B4=D0=B5=D0=BD=D1=82=D0=B8=D1=84?= =?UTF-8?q?=D0=B8=D0=BA=D0=B0=D1=82=D0=BE=D1=80=D0=B0=20=D1=80=D0=B0=D1=81?= =?UTF-8?q?=D0=BA=D0=BB=D0=B0=D0=B4=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Две правки по корпусу и по 1С-сертификации. fillType=Text платформа практически не пишет: на выборке корпуса 344 981 текстовая ячейка из 348 023 (99,1%) ссылается на формат БЕЗ fillType — наличие и так означает текст. Parameter и Template платформа пишет, их оставляем. Правило то же, что и везде: эмитим то, что эмитит платформа, а не то, что верно в рантайме. Идентификатор колоночной раскладки платформа хранит как UUID и другой не принимает — макет с узкая она отвергала целиком. Имя, похожее на UUID (то есть пришедшее декомпиляцией), проходит насквозь, иначе поехал бы раундтрип; читаемое имя автора превращается в UUID ДЕТЕРМИНИРОВАННО, из хэша имени, чтобы повторная компиляция давала тот же файл. Оба порта дают одинаковый хэш. Дефект с идентификатором нашла 1С-сертификация: ни юнит-кейсы, ни раундтрип по корпусу его не видели — там идентификаторы приходят из исходных макетов и уже являются UUID. Дрейф 33 снэпшотов разобран построчно, посторонних строк нет: 116 сменившихся индексов формата, 49 удалённых fillType, 43 перестановки свойств внутри палитры, 16 границ (палитра стала короче). Проверено: тесты 53/53 на обоих рантаймах, verify-snapshots 23/23. Замечание на будущее: на корпусе эта правка снимает лишь 170 расхождений из 64 865 в категории формата ячейки. Основная причина другая — платформа даёт неоформленной ячейке ссылку на формат по умолчанию, а компилятор заводит ей собственный формат с . Это отдельный заход, он сдвинет снэпшоты повторно. Co-Authored-By: Claude Opus 5 (1M context) --- .../mxl-compile/scripts/mxl-compile.ps1 | 37 +++++++++++++----- .../skills/mxl-compile/scripts/mxl-compile.py | 38 +++++++++++++------ .../skills/cases/mxl-compile/column-sets.json | 5 ++- .../snapshots/column-sets/Template.xml | 5 +-- .../snapshots/column-widths/Template.xml | 20 +++------- .../snapshots/empty-rows/Template.xml | 1 - .../font-fractional-size/Template.xml | 2 - .../snapshots/format-strings/Template.xml | 25 ++++-------- .../Демо/Templates/Макет/Ext/Template.xml | 1 - .../lenient-implicit-cols/Template.xml | 1 - .../snapshots/lenient-key-case/Template.xml | 1 - .../snapshots/merged-cells/Template.xml | 2 - .../snapshots/minimal/Template.xml | 1 - .../snapshots/multiple-areas/Template.xml | 29 +++++--------- .../snapshots/named-areas-coords/Template.xml | 1 - .../Templates/Макет/Ext/Template.xml | 1 - .../snapshots/page-a4-landscape/Template.xml | 29 +++++--------- .../parameters-and-templates/Template.xml | 1 - .../snapshots/print-form/Template.xml | 4 -- .../snapshots/shorthand-merges/Template.xml | 1 - .../snapshots/shorthand-rows/Template.xml | 2 - .../snapshots/simple-template/Template.xml | 1 - .../styles-fonts-borders/Template.xml | 38 +++++++------------ .../snapshots/unnamed-blocks/Template.xml | 1 - .../output-absolute-path/Template.xml | 1 - .../roundtrip-merged-cells/Template.xml | 13 +------ .../roundtrip-multiple-areas/Template.xml | 1 - .../snapshots/roundtrip-styles/Template.xml | 3 -- .../roundtrip-templates/Template.xml | 1 - .../snapshots/roundtrip/Template.xml | 1 - .../snapshots/areas-and-params/Template.xml | 2 - .../snapshots/template-overview/Template.xml | 1 - .../mxl-info/snapshots/with-text/Template.xml | 1 - .../snapshots/valid-complex/Template.xml | 35 +++++------------ .../snapshots/valid-print-form/Template.xml | 1 - .../snapshots/valid-template/Template.xml | 1 - 36 files changed, 119 insertions(+), 189 deletions(-) diff --git a/.claude/skills/mxl-compile/scripts/mxl-compile.ps1 b/.claude/skills/mxl-compile/scripts/mxl-compile.ps1 index 27773fe3..5bfa3ea4 100644 --- a/.claude/skills/mxl-compile/scripts/mxl-compile.ps1 +++ b/.claude/skills/mxl-compile/scripts/mxl-compile.ps1 @@ -1,4 +1,4 @@ -# mxl-compile v1.20 — Compile 1C spreadsheet from JSON (+write_xml_file/write_utf8_bom: общий эталон записи) +# mxl-compile v1.21 — Compile 1C spreadsheet from JSON (+write_xml_file/write_utf8_bom: общий эталон записи) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills param( [Parameter(Mandatory)] @@ -391,14 +391,29 @@ $colWidthMap = Build-ColWidthMap $def.columnWidths # columnSets, ключ — идентификатор, на него ссылается область ключом columnSet. # Склейки по содержимому нет: в корпусе полно раскладок с одинаковым содержимым и разными # идентификаторами, поэтому опознаёт раскладку только идентификатор. +# Платформа хранит идентификатор раскладки как UUID и другой не принимает. Имя из +# columnSets, полученное декомпиляцией, уже UUID — оставляем как есть, иначе раундтрип +# перестал бы совпадать. Читаемое имя, написанное автором, превращаем в UUID ДЕТЕРМИНИРОВАННО +# (из хэша имени), чтобы повторная компиляция давала тот же файл. +function ConvertTo-LayoutId { + param([string]$name) + if ($name -match '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$') { + return $name + } + $md5 = [System.Security.Cryptography.MD5]::Create() + $h = ($md5.ComputeHash([System.Text.Encoding]::UTF8.GetBytes($name)) | ForEach-Object { $_.ToString('x2') }) -join '' + return "$($h.Substring(0,8))-$($h.Substring(8,4))-$($h.Substring(12,4))-$($h.Substring(16,4))-$($h.Substring(20,12))" +} + $columnLayouts = @() -$columnLayouts += @{ Id = $null; Size = $totalColumns; Widths = $colWidthMap } +$columnLayouts += @{ Id = $null; Name = $null; Size = $totalColumns; Widths = $colWidthMap } if ($def.columnSets) { foreach ($prop in $def.columnSets.PSObject.Properties) { $cs = $prop.Value $size = if ($cs.columns) { [int]$cs.columns } else { $totalColumns } $columnLayouts += @{ - Id = $prop.Name + Id = ConvertTo-LayoutId $prop.Name + Name = $prop.Name Size = $size Widths = Build-ColWidthMap $cs.columnWidths } @@ -539,11 +554,13 @@ function Esc-XmlText { } # Helper: determine fillType from cell content +# Text НЕ эмитим: платформа его практически не пишет — на выборке корпуса 344 981 текстовая +# ячейка из 348 023 (99,1%) ссылается на формат БЕЗ fillType. Наличие и так означает +# текст, поэтому тег избыточен. Parameter и Template платформа пишет — их оставляем. function Get-FillType { param($cell) if ($cell.param) { return "Parameter" } if ($cell.template) { return "Template" } - if ($cell.text) { return "Text" } return "" } @@ -679,7 +696,7 @@ foreach ($area in $def.areas) { # Ширина сетки берётся из раскладки области: у каждой она своя. $areaMaxCols = $totalColumns if ($area.PSObject.Properties['columnSet'] -and "$($area.columnSet)" -ne '') { - $lay = @($columnLayouts | Where-Object { $_.Id -eq "$($area.columnSet)" })[0] + $lay = @($columnLayouts | Where-Object { $_.Name -eq "$($area.columnSet)" })[0] if ($lay) { $areaMaxCols = [int]$lay.Size } } $openByCol = @{} @@ -797,14 +814,16 @@ foreach ($area in $def.areas) { [Console]::Error.WriteLine("'columnSet' must be a name declared in columnSets, got an object: area `"$($area.name)`"") exit 1 } - $areaColumnSet = if ($area.PSObject.Properties['columnSet']) { "$($area.columnSet)" } else { '' } + $areaColumnSetName = if ($area.PSObject.Properties['columnSet']) { "$($area.columnSet)" } else { '' } + $areaColumnSet = '' $areaLayout = $columnLayouts[0] - if ($areaColumnSet) { - $areaLayout = @($columnLayouts | Where-Object { $_.Id -eq $areaColumnSet })[0] + if ($areaColumnSetName) { + $areaLayout = @($columnLayouts | Where-Object { $_.Name -eq $areaColumnSetName })[0] if (-not $areaLayout) { - [Console]::Error.WriteLine("Unknown 'columnSet': `"$areaColumnSet`" is not declared in columnSets") + [Console]::Error.WriteLine("Unknown 'columnSet': `"$areaColumnSetName`" is not declared in columnSets") exit 1 } + $areaColumnSet = $areaLayout.Id } # Ширина сетки — у КАЖДОЙ раскладки своя, поэтому позиции колонок сверяем с ней, # а не с документным columns (у макетов с раскладками умолчание бывает и пустым). diff --git a/.claude/skills/mxl-compile/scripts/mxl-compile.py b/.claude/skills/mxl-compile/scripts/mxl-compile.py index e69477a2..b88aa428 100644 --- a/.claude/skills/mxl-compile/scripts/mxl-compile.py +++ b/.claude/skills/mxl-compile/scripts/mxl-compile.py @@ -1,7 +1,8 @@ #!/usr/bin/env python3 -# mxl-compile v1.20 — Compile 1C spreadsheet from JSON (+write_xml_file/write_utf8_bom: общий эталон записи) +# mxl-compile v1.21 — Compile 1C spreadsheet from JSON (+write_xml_file/write_utf8_bom: общий эталон записи) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse +import hashlib import json import math import os @@ -495,11 +496,23 @@ def main(): # columnSets, ключ — идентификатор, на него ссылается область ключом columnSet. # Склейки по содержимому нет: в корпусе полно раскладок с одинаковым содержимым и разными # идентификаторами, поэтому опознаёт раскладку только идентификатор. - column_layouts = [{'Id': None, 'Size': total_columns, 'Widths': col_width_map}] - for set_id, cs in (defn.get('columnSets') or {}).items(): + def to_layout_id(name): + """Платформа хранит идентификатор раскладки как UUID и другой не принимает. Имя, + полученное декомпиляцией, уже UUID — оставляем как есть, иначе раундтрип перестал бы + совпадать. Читаемое имя автора превращаем в UUID ДЕТЕРМИНИРОВАННО (из хэша имени), + чтобы повторная компиляция давала тот же файл.""" + if re.match(r'^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + r'[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$', name): + return name + h = hashlib.md5(name.encode('utf-8')).hexdigest() + return f'{h[0:8]}-{h[8:12]}-{h[12:16]}-{h[16:20]}-{h[20:32]}' + + column_layouts = [{'Id': None, 'Name': None, 'Size': total_columns, 'Widths': col_width_map}] + for set_name, cs in (defn.get('columnSets') or {}).items(): size = int(cs['columns']) if cs.get('columns') is not None else total_columns column_layouts.append({ - 'Id': set_id, + 'Id': to_layout_id(set_name), + 'Name': set_name, 'Size': size, 'Widths': build_col_width_map(cs.get('columnWidths')), }) @@ -589,12 +602,13 @@ def main(): # 6c. Helper: determine fillType from cell content def get_fill_type(cell): + """Text НЕ эмитим: платформа его практически не пишет — на выборке корпуса 344 981 + текстовая ячейка из 348 023 (99,1%) ссылается на формат БЕЗ fillType. Наличие + и так означает текст. Parameter и Template платформа пишет — их оставляем.""" if cell.get('param'): return 'Parameter' if cell.get('template'): return 'Template' - if cell.get('text'): - return 'Text' return '' # Helper: register a cell format and return its index @@ -715,7 +729,7 @@ def main(): # Ширина сетки берётся из раскладки области: у каждой она своя. area_max_cols = total_columns if area.get('columnSet'): - lay = next((x for x in column_layouts if x['Id'] == str(area['columnSet'])), None) + lay = next((x for x in column_layouts if x['Name'] == str(area['columnSet'])), None) if lay: area_max_cols = int(lay['Size']) open_by_col = {} @@ -821,14 +835,16 @@ def main(): print(f'\'columnSet\' must be a name declared in columnSets, got an object:' f' area "{area.get("name", "")}"', file=sys.stderr) sys.exit(1) - area_column_set = str(area.get('columnSet') or '') + area_column_set_name = str(area.get('columnSet') or '') + area_column_set = '' area_layout = column_layouts[0] - if area_column_set: - area_layout = next((x for x in column_layouts if x['Id'] == area_column_set), None) + if area_column_set_name: + area_layout = next((x for x in column_layouts if x['Name'] == area_column_set_name), None) if area_layout is None: - print(f'Unknown \'columnSet\': "{area_column_set}" is not declared in columnSets', + print(f'Unknown \'columnSet\': "{area_column_set_name}" is not declared in columnSets', file=sys.stderr) sys.exit(1) + area_column_set = area_layout['Id'] # Ширина сетки — у КАЖДОЙ раскладки своя, поэтому позиции колонок сверяем с ней, # а не с документным columns (у макетов с раскладками умолчание бывает и пустым). area_columns = int(area_layout['Size']) diff --git a/tests/skills/cases/mxl-compile/column-sets.json b/tests/skills/cases/mxl-compile/column-sets.json index 0bcd22f5..da76056f 100644 --- a/tests/skills/cases/mxl-compile/column-sets.json +++ b/tests/skills/cases/mxl-compile/column-sets.json @@ -19,7 +19,10 @@ "files": ["Template.xml"], "fileContains": { "file": "Template.xml", - "text": ["узкая", "узкая"] + "text": [ + "12320174-2b07-7806-1f7f-ec3834007fdb", + "12320174-2b07-7806-1f7f-ec3834007fdb" + ] } } } diff --git a/tests/skills/cases/mxl-compile/snapshots/column-sets/Template.xml b/tests/skills/cases/mxl-compile/snapshots/column-sets/Template.xml index 8cd9d95f..16f46637 100644 --- a/tests/skills/cases/mxl-compile/snapshots/column-sets/Template.xml +++ b/tests/skills/cases/mxl-compile/snapshots/column-sets/Template.xml @@ -31,7 +31,7 @@ - узкая + 12320174-2b07-7806-1f7f-ec3834007fdb 3 0 @@ -96,7 +96,7 @@ 1 - узкая + 12320174-2b07-7806-1f7f-ec3834007fdb 0 @@ -156,7 +156,6 @@ 0 - Text 0 diff --git a/tests/skills/cases/mxl-compile/snapshots/column-widths/Template.xml b/tests/skills/cases/mxl-compile/snapshots/column-widths/Template.xml index fc3177f9..b238d5e8 100644 --- a/tests/skills/cases/mxl-compile/snapshots/column-widths/Template.xml +++ b/tests/skills/cases/mxl-compile/snapshots/column-widths/Template.xml @@ -54,7 +54,7 @@ 0 - 6 + 5 ru @@ -66,7 +66,7 @@ 1 - 6 + 5 ru @@ -78,7 +78,7 @@ 2 - 6 + 5 ru @@ -90,7 +90,7 @@ 3 - 6 + 5 ru @@ -102,7 +102,7 @@ 4 - 6 + 5 ru @@ -114,7 +114,7 @@ 5 - 6 + 5 ru @@ -162,12 +162,4 @@ 0 0 - - 0 - 0 - 0 - 0 - 0 - Text - \ No newline at end of file diff --git a/tests/skills/cases/mxl-compile/snapshots/empty-rows/Template.xml b/tests/skills/cases/mxl-compile/snapshots/empty-rows/Template.xml index 46edb9b6..07a6c8ab 100644 --- a/tests/skills/cases/mxl-compile/snapshots/empty-rows/Template.xml +++ b/tests/skills/cases/mxl-compile/snapshots/empty-rows/Template.xml @@ -107,7 +107,6 @@ 1 Center - Text 0 diff --git a/tests/skills/cases/mxl-compile/snapshots/font-fractional-size/Template.xml b/tests/skills/cases/mxl-compile/snapshots/font-fractional-size/Template.xml index f7ec565c..f7cf7835 100644 --- a/tests/skills/cases/mxl-compile/snapshots/font-fractional-size/Template.xml +++ b/tests/skills/cases/mxl-compile/snapshots/font-fractional-size/Template.xml @@ -63,10 +63,8 @@ 2 - Text 1 - Text \ No newline at end of file diff --git a/tests/skills/cases/mxl-compile/snapshots/format-strings/Template.xml b/tests/skills/cases/mxl-compile/snapshots/format-strings/Template.xml index 2a8be3ed..5c165820 100644 --- a/tests/skills/cases/mxl-compile/snapshots/format-strings/Template.xml +++ b/tests/skills/cases/mxl-compile/snapshots/format-strings/Template.xml @@ -18,7 +18,7 @@ 0 - 3 + 2 ru @@ -30,7 +30,7 @@ 1 - 3 + 2 ru @@ -42,7 +42,7 @@ 2 - 3 + 2 ru @@ -54,7 +54,7 @@ 3 - 3 + 2 ru @@ -71,28 +71,28 @@ 0 - 5 + 4 Дата 1 - 6 + 5 Товар 2 - 7 + 6 Количество 3 - 7 + 6 Цена @@ -137,15 +137,6 @@ 0 Center - - 0 - 0 - 0 - 0 - 0 - Center - Text - 0 0 diff --git a/tests/skills/cases/mxl-compile/snapshots/guard-allow-external/print-forms/Демо/Templates/Макет/Ext/Template.xml b/tests/skills/cases/mxl-compile/snapshots/guard-allow-external/print-forms/Демо/Templates/Макет/Ext/Template.xml index 2e907022..6a1227f0 100644 --- a/tests/skills/cases/mxl-compile/snapshots/guard-allow-external/print-forms/Демо/Templates/Макет/Ext/Template.xml +++ b/tests/skills/cases/mxl-compile/snapshots/guard-allow-external/print-forms/Демо/Templates/Макет/Ext/Template.xml @@ -49,6 +49,5 @@ 0 - Text \ No newline at end of file diff --git a/tests/skills/cases/mxl-compile/snapshots/lenient-implicit-cols/Template.xml b/tests/skills/cases/mxl-compile/snapshots/lenient-implicit-cols/Template.xml index e0a92019..df9334ef 100644 --- a/tests/skills/cases/mxl-compile/snapshots/lenient-implicit-cols/Template.xml +++ b/tests/skills/cases/mxl-compile/snapshots/lenient-implicit-cols/Template.xml @@ -183,6 +183,5 @@ 0 - Text \ No newline at end of file diff --git a/tests/skills/cases/mxl-compile/snapshots/lenient-key-case/Template.xml b/tests/skills/cases/mxl-compile/snapshots/lenient-key-case/Template.xml index e27634fd..58df6a32 100644 --- a/tests/skills/cases/mxl-compile/snapshots/lenient-key-case/Template.xml +++ b/tests/skills/cases/mxl-compile/snapshots/lenient-key-case/Template.xml @@ -73,6 +73,5 @@ 0 - Text \ No newline at end of file diff --git a/tests/skills/cases/mxl-compile/snapshots/merged-cells/Template.xml b/tests/skills/cases/mxl-compile/snapshots/merged-cells/Template.xml index e9746f5a..412cf046 100644 --- a/tests/skills/cases/mxl-compile/snapshots/merged-cells/Template.xml +++ b/tests/skills/cases/mxl-compile/snapshots/merged-cells/Template.xml @@ -178,7 +178,6 @@ 0 0 Center - Text 0 @@ -187,7 +186,6 @@ 0 0 Center - Text 0 diff --git a/tests/skills/cases/mxl-compile/snapshots/minimal/Template.xml b/tests/skills/cases/mxl-compile/snapshots/minimal/Template.xml index 65aea278..2dad0c61 100644 --- a/tests/skills/cases/mxl-compile/snapshots/minimal/Template.xml +++ b/tests/skills/cases/mxl-compile/snapshots/minimal/Template.xml @@ -49,6 +49,5 @@ 0 - Text \ No newline at end of file diff --git a/tests/skills/cases/mxl-compile/snapshots/multiple-areas/Template.xml b/tests/skills/cases/mxl-compile/snapshots/multiple-areas/Template.xml index fd0d3713..e159efe9 100644 --- a/tests/skills/cases/mxl-compile/snapshots/multiple-areas/Template.xml +++ b/tests/skills/cases/mxl-compile/snapshots/multiple-areas/Template.xml @@ -31,7 +31,7 @@ 0 - 5 + 4 ru @@ -43,7 +43,7 @@ 1 - 5 + 4 ru @@ -55,7 +55,7 @@ 2 - 5 + 4 ru @@ -67,7 +67,7 @@ 3 - 5 + 4 ru @@ -84,14 +84,14 @@ 0 - 6 + 5 НомерСтроки 1 - 6 + 5 Товар Номенклатура @@ -99,14 +99,14 @@ 2 - 7 + 6 Количество 3 - 7 + 6 Сумма @@ -118,7 +118,7 @@ 2 - 8 + 7 ru @@ -130,7 +130,7 @@ 3 - 9 + 8 Всего @@ -209,14 +209,6 @@ 0 0 - - 0 - 0 - 0 - 0 - 0 - Text - 0 0 @@ -238,7 +230,6 @@ 1 0 Right - Text 1 diff --git a/tests/skills/cases/mxl-compile/snapshots/named-areas-coords/Template.xml b/tests/skills/cases/mxl-compile/snapshots/named-areas-coords/Template.xml index 191d4cc7..ede71b0e 100644 --- a/tests/skills/cases/mxl-compile/snapshots/named-areas-coords/Template.xml +++ b/tests/skills/cases/mxl-compile/snapshots/named-areas-coords/Template.xml @@ -148,7 +148,6 @@ 0 - Text 0 diff --git a/tests/skills/cases/mxl-compile/snapshots/nested-output-dir/Templates/Макет/Ext/Template.xml b/tests/skills/cases/mxl-compile/snapshots/nested-output-dir/Templates/Макет/Ext/Template.xml index 9fc37649..9f5d9caa 100644 --- a/tests/skills/cases/mxl-compile/snapshots/nested-output-dir/Templates/Макет/Ext/Template.xml +++ b/tests/skills/cases/mxl-compile/snapshots/nested-output-dir/Templates/Макет/Ext/Template.xml @@ -49,6 +49,5 @@ 0 - Text \ No newline at end of file diff --git a/tests/skills/cases/mxl-compile/snapshots/page-a4-landscape/Template.xml b/tests/skills/cases/mxl-compile/snapshots/page-a4-landscape/Template.xml index fc1211a7..9c9e8b9e 100644 --- a/tests/skills/cases/mxl-compile/snapshots/page-a4-landscape/Template.xml +++ b/tests/skills/cases/mxl-compile/snapshots/page-a4-landscape/Template.xml @@ -48,7 +48,7 @@ 0 - 4 + 3 ru @@ -60,7 +60,7 @@ 1 - 4 + 3 ru @@ -72,7 +72,7 @@ 2 - 4 + 3 ru @@ -84,7 +84,7 @@ 3 - 4 + 3 ru @@ -96,7 +96,7 @@ 4 - 4 + 3 ru @@ -113,35 +113,35 @@ 0 - 6 + 5 Номер 1 - 7 + 6 Описание 2 - 6 + 5 ЕдИзм 3 - 6 + 5 Количество 4 - 7 + 6 Сумма @@ -190,15 +190,6 @@ 0 Center - - 1 - 0 - 0 - 0 - 0 - Center - Text - 0 0 diff --git a/tests/skills/cases/mxl-compile/snapshots/parameters-and-templates/Template.xml b/tests/skills/cases/mxl-compile/snapshots/parameters-and-templates/Template.xml index c9e3636b..4d365bee 100644 --- a/tests/skills/cases/mxl-compile/snapshots/parameters-and-templates/Template.xml +++ b/tests/skills/cases/mxl-compile/snapshots/parameters-and-templates/Template.xml @@ -140,7 +140,6 @@ 1 - Text 0 diff --git a/tests/skills/cases/mxl-compile/snapshots/print-form/Template.xml b/tests/skills/cases/mxl-compile/snapshots/print-form/Template.xml index 47589ded..513fc806 100644 --- a/tests/skills/cases/mxl-compile/snapshots/print-form/Template.xml +++ b/tests/skills/cases/mxl-compile/snapshots/print-form/Template.xml @@ -561,7 +561,6 @@ 1 - Text 0 @@ -581,7 +580,6 @@ 0 0 Center - Text 0 @@ -612,7 +610,6 @@ 1 Right - Text 1 @@ -628,6 +625,5 @@ 3 Center - Text \ No newline at end of file diff --git a/tests/skills/cases/mxl-compile/snapshots/shorthand-merges/Template.xml b/tests/skills/cases/mxl-compile/snapshots/shorthand-merges/Template.xml index 735529b4..3367a8ef 100644 --- a/tests/skills/cases/mxl-compile/snapshots/shorthand-merges/Template.xml +++ b/tests/skills/cases/mxl-compile/snapshots/shorthand-merges/Template.xml @@ -152,7 +152,6 @@ 0 - Text 0 diff --git a/tests/skills/cases/mxl-compile/snapshots/shorthand-rows/Template.xml b/tests/skills/cases/mxl-compile/snapshots/shorthand-rows/Template.xml index 929aada0..755c8940 100644 --- a/tests/skills/cases/mxl-compile/snapshots/shorthand-rows/Template.xml +++ b/tests/skills/cases/mxl-compile/snapshots/shorthand-rows/Template.xml @@ -119,7 +119,6 @@ 0 - Text 0 @@ -132,6 +131,5 @@ 0 0 Center - Text \ No newline at end of file diff --git a/tests/skills/cases/mxl-compile/snapshots/simple-template/Template.xml b/tests/skills/cases/mxl-compile/snapshots/simple-template/Template.xml index e27634fd..58df6a32 100644 --- a/tests/skills/cases/mxl-compile/snapshots/simple-template/Template.xml +++ b/tests/skills/cases/mxl-compile/snapshots/simple-template/Template.xml @@ -73,6 +73,5 @@ 0 - Text \ No newline at end of file diff --git a/tests/skills/cases/mxl-compile/snapshots/styles-fonts-borders/Template.xml b/tests/skills/cases/mxl-compile/snapshots/styles-fonts-borders/Template.xml index 69a32bc1..00733052 100644 --- a/tests/skills/cases/mxl-compile/snapshots/styles-fonts-borders/Template.xml +++ b/tests/skills/cases/mxl-compile/snapshots/styles-fonts-borders/Template.xml @@ -60,7 +60,7 @@ 0 - 7 + 6 ru @@ -72,7 +72,7 @@ 1 - 7 + 6 ru @@ -84,7 +84,7 @@ 2 - 7 + 6 ru @@ -96,7 +96,7 @@ 3 - 7 + 6 ru @@ -108,7 +108,7 @@ 4 - 7 + 6 ru @@ -125,35 +125,35 @@ 0 - 9 + 8 НомерСтроки 1 - 10 + 9 Товар 2 - 11 + 10 Количество 3 - 11 + 10 Цена 4 - 11 + 10 Сумма @@ -165,7 +165,7 @@ 3 - 12 + 11 ru @@ -177,7 +177,7 @@ 4 - 13 + 12 Всего @@ -189,7 +189,7 @@ 0 - 14 + 13 ru @@ -305,12 +305,10 @@ 3 Center - Text 1 0 - Text 5 @@ -323,14 +321,6 @@ 1 1 - - 1 - 1 - 1 - 1 - 1 - Text - 0 0 @@ -369,7 +359,6 @@ 0 0 0 - Text 0 @@ -380,6 +369,5 @@ 4 Center - Text \ No newline at end of file diff --git a/tests/skills/cases/mxl-compile/snapshots/unnamed-blocks/Template.xml b/tests/skills/cases/mxl-compile/snapshots/unnamed-blocks/Template.xml index caadd1a9..e2cf29c4 100644 --- a/tests/skills/cases/mxl-compile/snapshots/unnamed-blocks/Template.xml +++ b/tests/skills/cases/mxl-compile/snapshots/unnamed-blocks/Template.xml @@ -131,7 +131,6 @@ 0 - Text 0 diff --git a/tests/skills/cases/mxl-decompile/snapshots/output-absolute-path/Template.xml b/tests/skills/cases/mxl-decompile/snapshots/output-absolute-path/Template.xml index e2c0a9af..fd7e6e66 100644 --- a/tests/skills/cases/mxl-decompile/snapshots/output-absolute-path/Template.xml +++ b/tests/skills/cases/mxl-decompile/snapshots/output-absolute-path/Template.xml @@ -61,6 +61,5 @@ 0 - Text \ No newline at end of file diff --git a/tests/skills/cases/mxl-decompile/snapshots/roundtrip-merged-cells/Template.xml b/tests/skills/cases/mxl-decompile/snapshots/roundtrip-merged-cells/Template.xml index fbb683a5..737fbeb5 100644 --- a/tests/skills/cases/mxl-decompile/snapshots/roundtrip-merged-cells/Template.xml +++ b/tests/skills/cases/mxl-decompile/snapshots/roundtrip-merged-cells/Template.xml @@ -47,7 +47,7 @@ 1 - 4 + 2 ru @@ -59,7 +59,7 @@ 2 - 4 + 2 ru @@ -117,14 +117,5 @@ 0 0 Center - Text - - - 0 - 0 - 0 - 0 - 0 - Text \ No newline at end of file diff --git a/tests/skills/cases/mxl-decompile/snapshots/roundtrip-multiple-areas/Template.xml b/tests/skills/cases/mxl-decompile/snapshots/roundtrip-multiple-areas/Template.xml index 94d3f45f..3a25c290 100644 --- a/tests/skills/cases/mxl-decompile/snapshots/roundtrip-multiple-areas/Template.xml +++ b/tests/skills/cases/mxl-decompile/snapshots/roundtrip-multiple-areas/Template.xml @@ -164,7 +164,6 @@ 1 0 Right - Text 1 diff --git a/tests/skills/cases/mxl-decompile/snapshots/roundtrip-styles/Template.xml b/tests/skills/cases/mxl-decompile/snapshots/roundtrip-styles/Template.xml index 71dd69eb..7ff2cb59 100644 --- a/tests/skills/cases/mxl-decompile/snapshots/roundtrip-styles/Template.xml +++ b/tests/skills/cases/mxl-decompile/snapshots/roundtrip-styles/Template.xml @@ -83,12 +83,10 @@ 0 0 Center - Text 2 Right - Text 0 @@ -96,6 +94,5 @@ 0 0 0 - Text \ No newline at end of file diff --git a/tests/skills/cases/mxl-decompile/snapshots/roundtrip-templates/Template.xml b/tests/skills/cases/mxl-decompile/snapshots/roundtrip-templates/Template.xml index c90e50b3..d26bbdeb 100644 --- a/tests/skills/cases/mxl-decompile/snapshots/roundtrip-templates/Template.xml +++ b/tests/skills/cases/mxl-decompile/snapshots/roundtrip-templates/Template.xml @@ -61,7 +61,6 @@ 0 - Text 0 diff --git a/tests/skills/cases/mxl-decompile/snapshots/roundtrip/Template.xml b/tests/skills/cases/mxl-decompile/snapshots/roundtrip/Template.xml index 0f05cee4..620356d4 100644 --- a/tests/skills/cases/mxl-decompile/snapshots/roundtrip/Template.xml +++ b/tests/skills/cases/mxl-decompile/snapshots/roundtrip/Template.xml @@ -73,6 +73,5 @@ 0 - Text \ No newline at end of file diff --git a/tests/skills/cases/mxl-info/snapshots/areas-and-params/Template.xml b/tests/skills/cases/mxl-info/snapshots/areas-and-params/Template.xml index 0b602866..d6f1a402 100644 --- a/tests/skills/cases/mxl-info/snapshots/areas-and-params/Template.xml +++ b/tests/skills/cases/mxl-info/snapshots/areas-and-params/Template.xml @@ -187,7 +187,6 @@ 0 - Text 0 @@ -217,7 +216,6 @@ 1 0 Right - Text 1 diff --git a/tests/skills/cases/mxl-info/snapshots/template-overview/Template.xml b/tests/skills/cases/mxl-info/snapshots/template-overview/Template.xml index 19739083..64a68b76 100644 --- a/tests/skills/cases/mxl-info/snapshots/template-overview/Template.xml +++ b/tests/skills/cases/mxl-info/snapshots/template-overview/Template.xml @@ -73,6 +73,5 @@ 0 - Text \ No newline at end of file diff --git a/tests/skills/cases/mxl-info/snapshots/with-text/Template.xml b/tests/skills/cases/mxl-info/snapshots/with-text/Template.xml index 7c5b1349..98e63617 100644 --- a/tests/skills/cases/mxl-info/snapshots/with-text/Template.xml +++ b/tests/skills/cases/mxl-info/snapshots/with-text/Template.xml @@ -153,7 +153,6 @@ 0 - Text 0 diff --git a/tests/skills/cases/mxl-validate/snapshots/valid-complex/Template.xml b/tests/skills/cases/mxl-validate/snapshots/valid-complex/Template.xml index 4a993107..4b83ce26 100644 --- a/tests/skills/cases/mxl-validate/snapshots/valid-complex/Template.xml +++ b/tests/skills/cases/mxl-validate/snapshots/valid-complex/Template.xml @@ -30,7 +30,7 @@ 0 - 4 + 3 ru @@ -42,7 +42,7 @@ 1 - 4 + 3 ru @@ -54,7 +54,7 @@ 3 - 4 + 3 ru @@ -71,7 +71,7 @@ 1 - 6 + 4 ru @@ -83,7 +83,7 @@ 2 - 6 + 4 ru @@ -100,28 +100,28 @@ 0 - 7 + 5 Номер 1 - 7 + 5 Имя 2 - 7 + 5 Код 3 - 7 + 5 Сумма @@ -208,15 +208,6 @@ 0 Center - - 1 - 0 - 0 - 0 - 0 - Center - Text - 0 0 @@ -224,14 +215,6 @@ 0 0 - - 0 - 0 - 0 - 0 - 0 - Text - 0 0 diff --git a/tests/skills/cases/mxl-validate/snapshots/valid-print-form/Template.xml b/tests/skills/cases/mxl-validate/snapshots/valid-print-form/Template.xml index 97d074f3..1fafbad4 100644 --- a/tests/skills/cases/mxl-validate/snapshots/valid-print-form/Template.xml +++ b/tests/skills/cases/mxl-validate/snapshots/valid-print-form/Template.xml @@ -206,7 +206,6 @@ 1 0 Right - Text 1 diff --git a/tests/skills/cases/mxl-validate/snapshots/valid-template/Template.xml b/tests/skills/cases/mxl-validate/snapshots/valid-template/Template.xml index 0f05cee4..620356d4 100644 --- a/tests/skills/cases/mxl-validate/snapshots/valid-template/Template.xml +++ b/tests/skills/cases/mxl-validate/snapshots/valid-template/Template.xml @@ -73,6 +73,5 @@ 0 - Text \ No newline at end of file