mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-19 09:40:22 +03:00
fix(mxl-compile): неоформленная ячейка ссылается на формат по умолчанию
Платформа держит для неоформленного макета ОДИН формат — ширину колонки, он же defaultFormatIndex, и все ячейки указывают на него. Компилятор заводил каждой ячейке собственный формат с <font>0</font>, где ноль означает «шрифт не задан», то есть формат был пуст по смыслу и отличался от умолчания только своим существованием. Теперь ячейка, у которой не задано ничего (шрифт умолчательный, нет рамок, выравнивания, переноса, типа заполнения и формата числа), ссылается на defaultFormatIndex. На минимальном макете палитра сократилась с двух форматов до одного и совпала по форме с платформенной. На корпусе правка закрывает случай неоформленной ячейки начисто: на макете АтрибВыгрузкиXML2015Кв1 расхождения по формату исчезли полностью, блок диффа сократился с 75 строк до 40, и всё оставшееся — многоязычный текст. В агрегате по пилоту это 497 строк из 64 865: остальное держат макеты, где ячейки реально оформлены, и там расходится состав самих форматов — отдельная категория. Дрейф 18 снэпшотов разобран построчно, посторонних строк нет: 170 сменившихся индексов <f>, 36 границ <format> (палитра стала короче), 18 удалённых <font>. Проверено: тесты 53/53 на обоих рантаймах, verify-snapshots 23/23. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
66c7364c37
commit
572b75984a
@@ -1,4 +1,4 @@
|
||||
# mxl-compile v1.22 — Compile 1C spreadsheet from JSON (+write_xml_file/write_utf8_bom: общий эталон записи)
|
||||
# mxl-compile v1.23 — Compile 1C spreadsheet from JSON (+write_xml_file/write_utf8_bom: общий эталон записи)
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
param(
|
||||
[Parameter(Mandatory)]
|
||||
@@ -573,6 +573,16 @@ function Get-FillType {
|
||||
function Register-CellFormat {
|
||||
param($styleName, [string]$fillType)
|
||||
$resolved = Resolve-Style -styleName $styleName -fillType $fillType
|
||||
# Ячейка без собственного оформления ссылается на формат ПО УМОЛЧАНИЮ — так делает
|
||||
# платформа: в её палитре у неоформленного макета один формат (ширина колонки), и все
|
||||
# ячейки указывают на него. Мы же заводили каждой свой формат с <font>0</font>, где ноль
|
||||
# означает «шрифт не задан», то есть формат был пуст по смыслу.
|
||||
if ($resolved.FontIdx -eq $fontMap["default"] -and
|
||||
$resolved.LB -lt 0 -and $resolved.TB -lt 0 -and $resolved.RB -lt 0 -and $resolved.BB -lt 0 -and
|
||||
-not $resolved.HA -and -not $resolved.VA -and -not $resolved.Wrap -and
|
||||
-not $resolved.FillType -and -not $resolved.NumberFormat) {
|
||||
return $script:defaultFormatIndex
|
||||
}
|
||||
$key = Get-FormatKey -fontIdx $resolved.FontIdx `
|
||||
-lb $resolved.LB -tb $resolved.TB -rb $resolved.RB -bb $resolved.BB `
|
||||
-ha $resolved.HA -va $resolved.VA `
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# mxl-compile v1.22 — Compile 1C spreadsheet from JSON (+write_xml_file/write_utf8_bom: общий эталон записи)
|
||||
# mxl-compile v1.23 — Compile 1C spreadsheet from JSON (+write_xml_file/write_utf8_bom: общий эталон записи)
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
import argparse
|
||||
import hashlib
|
||||
@@ -619,6 +619,16 @@ def main():
|
||||
# Helper: register a cell format and return its index
|
||||
def register_cell_format(style_name, fill_type):
|
||||
resolved = resolve_style(style_name, fill_type)
|
||||
# Ячейка без собственного оформления ссылается на формат ПО УМОЛЧАНИЮ — так делает
|
||||
# платформа: в её палитре у неоформленного макета один формат (ширина колонки), и все
|
||||
# ячейки указывают на него. Мы же заводили каждой свой формат с <font>0</font>, где ноль
|
||||
# означает «шрифт не задан», то есть формат был пуст по смыслу.
|
||||
if (resolved['FontIdx'] == font_map.get('default', 0)
|
||||
and resolved['LB'] < 0 and resolved['TB'] < 0
|
||||
and resolved['RB'] < 0 and resolved['BB'] < 0
|
||||
and not resolved['HA'] and not resolved['VA'] and not resolved['Wrap']
|
||||
and not resolved['FillType'] and not resolved['NumberFormat']):
|
||||
return default_format_index
|
||||
key = get_format_key(
|
||||
font_idx=resolved['FontIdx'],
|
||||
lb=resolved['LB'], tb=resolved['TB'], rb=resolved['RB'], bb=resolved['BB'],
|
||||
|
||||
Reference in New Issue
Block a user