mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-21 02:29:42 +03:00
feat(mxl-compile,mxl-decompile): рисунки и палитра картинок
Рисунок поверх сетки — картинка, фигура, надпись — теперь описывается в DSL и возвращается из макета: два якоря «ячейка + смещение», тип, ссылка на картинку, надпись, расшифровка, имя, порядок перекрытия. Оформление рисунка разложено надвое: общее (заливка, шрифт, выравнивание) берётся из именованного стиля, а линия и её стороны — собственные ключи рисунка. У ячейки таких свойств не бывает: все 2 135 записей палитры с ними принадлежат рисункам. Палитра картинок: ссылка на библиотеку платформы, данные base64, пустая запись «картинка не задана» (151 в корпусе) и координата пикселя прозрачного цвета (tx/ty — проверено, это не размеры картинки). Заодно: висячий пустой колонтитул в ps1-порте (пустой словарь в PowerShell истинен, порты расходились на 3 макетах из 40) и проверка индекса формата рисунка в mxl-validate. Стенды Рисунки, Рисунки2, КартинкаВЯчейке проходят раундтрип байт в байт в обоих портах; на 35 корпусных макетах с рисунками расхождение сократилось у всех 35.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# mxl-validate v1.6 — Validate 1C spreadsheet
|
||||
# mxl-validate v1.7 — Validate 1C spreadsheet
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
param(
|
||||
[Alias('Path')]
|
||||
@@ -408,6 +408,16 @@ foreach ($drawing in $root.SelectNodes("d:drawing", $nsMgr)) {
|
||||
Report-Error "Drawing id=${drawId}: pictureIndex=$picIdx > picture count ($pictureCount)"
|
||||
}
|
||||
}
|
||||
# Оформление рисунка — такая же запись палитры форматов, как у ячейки, и висячая
|
||||
# ссылка на неё так же валит загрузку макета.
|
||||
$fmtIdxNode = $drawing.SelectSingleNode("d:formatIndex", $nsMgr)
|
||||
if ($fmtIdxNode) {
|
||||
$fmtIdx = [int]$fmtIdxNode.InnerText
|
||||
if ($fmtIdx -gt $formatCount) {
|
||||
$drawId = $drawing.SelectSingleNode("d:id", $nsMgr).InnerText
|
||||
Report-Error "Drawing id=${drawId}: formatIndex=$fmtIdx > format palette size ($formatCount)"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# --- Check 13: value cells (input fields) ---
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# mxl-validate v1.6 — Validate 1C spreadsheet document Template.xml
|
||||
# mxl-validate v1.7 — Validate 1C spreadsheet document Template.xml
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
"""Validates spreadsheet Template.xml: height, palette refs, column/row indices, areas, merges."""
|
||||
import sys, os, argparse
|
||||
@@ -405,6 +405,16 @@ def main():
|
||||
draw_id = draw_id_node.text if draw_id_node is not None else '?'
|
||||
r.error(f'Drawing id={draw_id}: pictureIndex={pic_idx} > picture count ({picture_count})')
|
||||
|
||||
# Оформление рисунка — такая же запись палитры форматов, как у ячейки, и висячая
|
||||
# ссылка на неё так же валит загрузку макета.
|
||||
fmt_idx_node = drawing.find(f'{{{NS_D}}}formatIndex')
|
||||
if fmt_idx_node is not None and fmt_idx_node.text:
|
||||
fmt_idx = int(fmt_idx_node.text)
|
||||
if fmt_idx > format_count:
|
||||
draw_id_node = drawing.find(f'{{{NS_D}}}id')
|
||||
draw_id = draw_id_node.text if draw_id_node is not None else '?'
|
||||
r.error(f'Drawing id={draw_id}: formatIndex={fmt_idx} > format palette size ({format_count})')
|
||||
|
||||
# --- Check 13: value cells (input fields) ---
|
||||
# Свойства containsValue/valueType/controlType принадлежат ЯЧЕЙКЕ: на корпусе ERP
|
||||
# (370 197 ссылок) на такие записи палитры ссылаются только <f>, ни строка, ни колонка,
|
||||
|
||||
Reference in New Issue
Block a user