mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-13 06:53:21 +03:00
feat(mxl-compile,mxl-decompile): формат самой строки
У строки есть собственный формат: платформа хранит в нём скрытие (17 423 вхождения
в корпусе), шрифт (9 216), фон, выравнивания, защиту. Мы писали туда только высоту,
всё остальное теряли.
Разбор на контролируемом стенде показал, что это два разных случая, а не один.
Оформление, применённое к строке целиком, платформа пишет И строке, И каждой
ячейке (backColor: 13 899 ячеек повторяют против 96). Скрытие — только строке
(24 026 против 62 856). Поэтому одного правила «rowStyle красит ячейки» мало.
Теперь rowStyle — стиль строки: по умолчанию ложится и на строку, и на ячейки,
как это делает платформа. Объектная форма { style, apply } задаёт исключения:
"row" — только строке, "cells" — только ячейкам. Модификатор нужен раундтрипу,
в описании DSL его нет.
Скрытие и высота — собственные свойства строки, ключами рядом: у ячейки таких
свойств не бывает, и в её оформление они не попадают.
На пилоте категория row[].formatIndex упала с 1964 до 201 потерянного факта.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
ccbd488d63
commit
ba25aa4a00
@@ -58,7 +58,7 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/mxl-compile.ps1" -J
|
||||
fonts: { name: { face, size, bold, italic, underline, strikeout } },
|
||||
styles: { name: { font, horizontalAlignment, verticalAlignment, textPlacement,
|
||||
backColor, textColor, border, borderColor, format, hidden } },
|
||||
areas: [{ name, columnSet, rows: [{ height, rowStyle, cells: [
|
||||
areas: [{ name, columnSet, rows: [{ height, hidden, rowStyle, cells: [
|
||||
{ col, span, rowspan, style, param, detail, text, template }
|
||||
]}]}],
|
||||
namedAreas: [{ name, rows, cols }],
|
||||
@@ -73,7 +73,8 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/mxl-compile.ps1" -J
|
||||
- `columnSet` у области — ссылка на раскладку из `columnSets`, когда группе строк нужны свои ширины колонок; без него действует документная раскладка
|
||||
- Ключ стиля — имя свойства как в выгрузке; `columnStyles` вешает стиль на колонку так же, как `style` на ячейку
|
||||
- Рамка — `border` (все стороны) или `leftBorder`/`topBorder`/`rightBorder`/`bottomBorder`; значение `"Solid"` либо `{ style, width }`
|
||||
- `rowStyle` — автозаполнение пустот стилем (рамки по всей ширине)
|
||||
- `rowStyle` — стиль строки: ложится и на строку, и на все её колонки, заполняя пустоты (рамки по всей ширине)
|
||||
- `height` и `hidden` — собственные свойства строки, у ячейки таких нет
|
||||
- `empty` в строке — шорткат для N подряд пустых строк (`{ "empty": 3 }` = три `{}`)
|
||||
- Строку можно писать массивом ячеек — позиция из порядка, `col` не нужен: `"текст"`, `"{Имя}"` — параметр, `">"` — продолжить ячейку слева, `"|"` — сверху, `null` — пропуск колонки
|
||||
- `col` — 1-based позиция колонки
|
||||
|
||||
@@ -127,12 +127,16 @@
|
||||
| Поле | По умолч. | Описание |
|
||||
|------|-----------|----------|
|
||||
| `height` | — | Высота строки (если не задана, используется авто) |
|
||||
| `rowStyle` | — | Стиль для ВСЕХ колонок (заполняет пустоты рамками) |
|
||||
| `hidden` | `false` | Скрыть строку |
|
||||
| `rowStyle` | — | Стиль строки: ложится и на саму строку, и на ВСЕ её колонки (заполняет пустоты рамками) |
|
||||
| `cells` | `[]` | Массив ячеек |
|
||||
| `empty` | — | Количество подряд идущих пустых строк (заменяет N отдельных `{}`) |
|
||||
|
||||
Строка без `cells` и `rowStyle` → пустая строка. `{ "empty": 3 }` эквивалентно трём `{}`.
|
||||
|
||||
`height` и `hidden` — собственные свойства строки: у ячейки таких нет, и в её оформление они
|
||||
не попадают. Всё остальное оформление строки задаётся через `rowStyle`.
|
||||
|
||||
### Короткая форма: строка массивом
|
||||
|
||||
Вместо объекта строка может быть массивом ячеек — позиция определяется порядком, `col` не указывается.
|
||||
@@ -203,9 +207,11 @@
|
||||
|
||||
Пустая строка — это текст: ячейка с `"text": ""` даёт пустую надпись, а не ячейку без текста.
|
||||
|
||||
## `rowStyle` — автозаполнение
|
||||
## `rowStyle` — оформление строки
|
||||
|
||||
Стиль применяется ко ВСЕЙ ширине строки: позиции без явных ячеек получают тот же стиль. Так в табличных строках получаются сплошные рамки.
|
||||
Стиль применяется ко ВСЕЙ ширине строки: позиции без явных ячеек получают тот же стиль. Так в табличных строках получаются сплошные рамки. Он же становится оформлением самой строки — именно так платформа хранит строку, оформленную целиком.
|
||||
|
||||
Стиль конкретной ячейки (`style`) перекрывает `rowStyle` для этой ячейки.
|
||||
|
||||
Если в предыдущих строках той же области есть ячейки с `rowspan`, их колонки при автозаполнении пропускаются.
|
||||
|
||||
@@ -216,8 +222,6 @@ round-trip** (`/mxl-decompile` → `/mxl-compile`): в JSON оно не попа
|
||||
XML не возвращается.
|
||||
|
||||
- ячейки-поля ввода (`containsValue` / `valueType` / `controlType`);
|
||||
- оформление СТРОКИ помимо высоты: у строки задаётся только `height`, а скрытие,
|
||||
шрифт и прочее платформа хранит и у неё тоже;
|
||||
- объединения, не привязанные к ячейке (по всей высоте или ширине документа);
|
||||
- рисунки и картинки, в том числе штрихкоды, и примечания к ячейкам;
|
||||
- группировки строк и колонок;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# mxl-compile v1.32 — Compile 1C spreadsheet from JSON
|
||||
# mxl-compile v1.33 — Compile 1C spreadsheet from JSON
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
param(
|
||||
[Parameter(Mandatory)]
|
||||
@@ -474,6 +474,41 @@ function Get-ColorNamespace {
|
||||
return ''
|
||||
}
|
||||
|
||||
# Стиль строки: имя строкой либо объект { style, apply }. apply — куда лёг стиль:
|
||||
# "both" (умолчание) — и в формат строки, и в форматы ячеек, как пишет платформа, когда
|
||||
# автор оформляет строку целиком; "row" — только строке (так хранится, например, скрытие);
|
||||
# "cells" — только ячейкам. Модификатор нужен раундтрипу, в описании DSL его нет.
|
||||
function Get-RowStyleSpec {
|
||||
param($val, [string]$where)
|
||||
if ($null -eq $val) { return @{ Name = $null; Apply = 'both' } }
|
||||
if ($val -is [string]) { return @{ Name = $val; Apply = 'both' } }
|
||||
$name = "$($val.style)"
|
||||
$apply = if ($val.apply) { "$($val.apply)".ToLower() } else { 'both' }
|
||||
if ($apply -notin @('both', 'row', 'cells')) {
|
||||
[Console]::Error.WriteLine("Unknown 'apply' value `"$($val.apply)`" ($where). Allowed: both, row, cells")
|
||||
exit 1
|
||||
}
|
||||
if (-not $name) {
|
||||
[Console]::Error.WriteLine("rowStyle object requires 'style' ($where)")
|
||||
exit 1
|
||||
}
|
||||
return @{ Name = $name; Apply = $apply }
|
||||
}
|
||||
|
||||
# Формат самой строки: собственные свойства строки (высота, скрытие) плюс стиль строки,
|
||||
# если он ложится на строку. Пустой набор = у строки формата нет.
|
||||
function Get-RowFormatProps {
|
||||
param($row)
|
||||
$props = @{}
|
||||
$spec = Get-RowStyleSpec $row.rowStyle "row"
|
||||
if ($spec.Name -and $spec.Apply -cne 'cells') {
|
||||
$props = Resolve-Style -styleName $spec.Name -fillType "" -noDefaultFont
|
||||
}
|
||||
if ($row.height) { $props['height'] = [int]$row.height }
|
||||
if ($row.hidden -eq $true) { $props['hidden'] = 'true' }
|
||||
return $props
|
||||
}
|
||||
|
||||
function Resolve-Style {
|
||||
param([string]$styleName, [string]$fillType, [switch]$noDefaultFont)
|
||||
|
||||
@@ -957,20 +992,23 @@ foreach ($area in $def.areas) {
|
||||
# Skip empty row placeholder
|
||||
if ($row.empty) { continue }
|
||||
|
||||
# Row height format
|
||||
if ($row.height) {
|
||||
Register-Format @{ height = [int]$row.height } | Out-Null
|
||||
}
|
||||
# Формат САМОЙ строки: высота и скрытие — её собственные свойства (у ячейки таких
|
||||
# нет), плюс стиль строки, если он ложится на строку.
|
||||
$rowProps = Get-RowFormatProps $row
|
||||
if ($rowProps.Count -gt 0) { Register-Format $rowProps | Out-Null }
|
||||
|
||||
$spec = Get-RowStyleSpec $row.rowStyle "row"
|
||||
$cellsStyle = if ($spec.Apply -ceq 'row') { $null } else { $spec.Name }
|
||||
|
||||
# rowStyle gap-fill format (no content → no fillType)
|
||||
if ($row.rowStyle) {
|
||||
Register-CellFormat -styleName $row.rowStyle -fillType "" | Out-Null
|
||||
if ($cellsStyle) {
|
||||
Register-CellFormat -styleName $cellsStyle -fillType "" | Out-Null
|
||||
}
|
||||
|
||||
# Explicit cell formats
|
||||
if ($row.cells) {
|
||||
foreach ($cell in $row.cells) {
|
||||
$cellStyle = if ($cell.style) { $cell.style } elseif ($row.rowStyle) { $row.rowStyle } else { "default" }
|
||||
$cellStyle = if ($cell.style) { $cell.style } elseif ($cellsStyle) { $cellsStyle } else { "default" }
|
||||
$ft = Get-FillType $cell
|
||||
Register-CellFormat -styleName $cellStyle -fillType $ft | Out-Null
|
||||
}
|
||||
@@ -1118,11 +1156,13 @@ foreach ($area in $def.areas) {
|
||||
$rowHasContent = $false
|
||||
$rowCells = @() # array of { Col(0-based), FormatIdx, Content }
|
||||
|
||||
# Determine row height format
|
||||
# Формат самой строки — высота, скрытие и стиль строки, если он ложится на строку
|
||||
$rowFormatIdx = 0
|
||||
if ($row.height) {
|
||||
$rowFormatIdx = Register-Format @{ height = [int]$row.height }
|
||||
}
|
||||
$rowProps = Get-RowFormatProps $row
|
||||
if ($rowProps.Count -gt 0) { $rowFormatIdx = Register-Format $rowProps }
|
||||
|
||||
$spec = Get-RowStyleSpec $row.rowStyle "row"
|
||||
$cellsStyle = if ($spec.Apply -ceq 'row') { $null } else { $spec.Name }
|
||||
|
||||
if ($row.cells -and $row.cells.Count -gt 0) {
|
||||
$rowHasContent = $true
|
||||
@@ -1186,7 +1226,7 @@ foreach ($area in $def.areas) {
|
||||
$colStart = [int]$cell.col
|
||||
$colSpan = if ($cell.span) { [int]$cell.span } else { 1 }
|
||||
$rowspan = if ($cell.rowspan) { [int]$cell.rowspan } else { 1 }
|
||||
$cellStyle = if ($cell.style) { $cell.style } elseif ($row.rowStyle) { $row.rowStyle } else { "default" }
|
||||
$cellStyle = if ($cell.style) { $cell.style } elseif ($cellsStyle) { $cellsStyle } else { "default" }
|
||||
$ft = Get-FillType $cell
|
||||
$fmtIdx = Register-CellFormat -styleName $cellStyle -fillType $ft
|
||||
|
||||
@@ -1219,8 +1259,8 @@ foreach ($area in $def.areas) {
|
||||
}
|
||||
|
||||
# Generate gap-fill cells for rowStyle
|
||||
if ($row.rowStyle) {
|
||||
$gapFmtIdx = Register-CellFormat -styleName $row.rowStyle -fillType ""
|
||||
if ($cellsStyle) {
|
||||
$gapFmtIdx = Register-CellFormat -styleName $cellsStyle -fillType ""
|
||||
for ($c = 1; $c -le $totalColumns; $c++) {
|
||||
if (-not $occupiedCols.ContainsKey($c)) {
|
||||
$rowCells += @{
|
||||
@@ -1238,10 +1278,10 @@ foreach ($area in $def.areas) {
|
||||
# Sort cells by column
|
||||
$rowCells = $rowCells | Sort-Object { $_.Col }
|
||||
|
||||
} elseif ($row.rowStyle) {
|
||||
} elseif ($cellsStyle) {
|
||||
# Row with only rowStyle, no explicit cells — fill non-rowspan columns
|
||||
$rowHasContent = $true
|
||||
$gapFmtIdx = Register-CellFormat -styleName $row.rowStyle -fillType ""
|
||||
$gapFmtIdx = Register-CellFormat -styleName $cellsStyle -fillType ""
|
||||
for ($c = 1; $c -le $totalColumns; $c++) {
|
||||
if ($rowspanOccupied.ContainsKey($c)) { continue }
|
||||
$rowCells += @{
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# mxl-compile v1.32 — Compile 1C spreadsheet from JSON
|
||||
# mxl-compile v1.33 — Compile 1C spreadsheet from JSON
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
import argparse
|
||||
import hashlib
|
||||
@@ -669,6 +669,39 @@ def main():
|
||||
sys.exit(1)
|
||||
return {'Style': canon, 'Width': width, 'Gap': gap}
|
||||
|
||||
def row_style_spec(val, where):
|
||||
"""Стиль строки: имя строкой либо объект { style, apply }. apply — куда лёг стиль:
|
||||
"both" (умолчание) — и в формат строки, и в форматы ячеек, как пишет платформа, когда
|
||||
автор оформляет строку целиком; "row" — только строке (так хранится, например,
|
||||
скрытие); "cells" — только ячейкам. Модификатор нужен раундтрипу, в описании DSL его нет."""
|
||||
if val is None:
|
||||
return None, 'both'
|
||||
if not isinstance(val, dict):
|
||||
return str(val), 'both'
|
||||
name = str(val.get('style') or '')
|
||||
apply_to = str(val.get('apply') or 'both').lower()
|
||||
if apply_to not in ('both', 'row', 'cells'):
|
||||
print(f"Unknown 'apply' value \"{val.get('apply')}\" ({where})."
|
||||
f" Allowed: both, row, cells", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
if not name:
|
||||
print(f"rowStyle object requires 'style' ({where})", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
return name, apply_to
|
||||
|
||||
def row_format_props(row):
|
||||
"""Формат самой строки: собственные свойства строки (высота, скрытие) плюс стиль
|
||||
строки, если он ложится на строку. Пустой набор = у строки формата нет."""
|
||||
props = {}
|
||||
name, apply_to = row_style_spec(row.get('rowStyle'), 'row')
|
||||
if name and apply_to != 'cells':
|
||||
props = resolve_style(name, '', no_default_font=True)
|
||||
if row.get('height'):
|
||||
props['height'] = int(row['height'])
|
||||
if row.get('hidden') is True:
|
||||
props['hidden'] = 'true'
|
||||
return props
|
||||
|
||||
def resolve_style(style_name, fill_type, no_default_font=False):
|
||||
# Набор свойств формата — «тег платформы → значение», только заданные. Порядок вставки
|
||||
# роли не играет: и ключ дедупликации, и эмиссия идут по каноническому порядку тегов.
|
||||
@@ -986,18 +1019,23 @@ def main():
|
||||
if row.get('empty'):
|
||||
continue
|
||||
|
||||
# Row height format
|
||||
if row.get('height'):
|
||||
register_format({'height': int(row['height'])})
|
||||
# Формат САМОЙ строки: высота и скрытие — её собственные свойства (у ячейки
|
||||
# таких нет), плюс стиль строки, если он ложится на строку.
|
||||
row_props = row_format_props(row)
|
||||
if row_props:
|
||||
register_format(row_props)
|
||||
|
||||
rs_name, rs_apply = row_style_spec(row.get('rowStyle'), 'row')
|
||||
cells_style = None if rs_apply == 'row' else rs_name
|
||||
|
||||
# rowStyle gap-fill format
|
||||
if row.get('rowStyle'):
|
||||
register_cell_format(row['rowStyle'], '')
|
||||
if cells_style:
|
||||
register_cell_format(cells_style, '')
|
||||
|
||||
# Explicit cell formats
|
||||
if row.get('cells'):
|
||||
for cell in row['cells']:
|
||||
cell_style = cell.get('style') or row.get('rowStyle') or 'default'
|
||||
cell_style = cell.get('style') or cells_style or 'default'
|
||||
ft = get_fill_type(cell)
|
||||
register_cell_format(cell_style, ft)
|
||||
|
||||
@@ -1133,9 +1171,14 @@ def main():
|
||||
row_cells = []
|
||||
|
||||
# Determine row height format
|
||||
# Формат самой строки — высота, скрытие и стиль строки, если он ложится на строку
|
||||
row_format_idx = 0
|
||||
if row.get('height'):
|
||||
row_format_idx = register_format({'height': int(row['height'])})
|
||||
row_props = row_format_props(row)
|
||||
if row_props:
|
||||
row_format_idx = register_format(row_props)
|
||||
|
||||
rs_name, rs_apply = row_style_spec(row.get('rowStyle'), 'row')
|
||||
cells_style = None if rs_apply == 'row' else rs_name
|
||||
|
||||
if row.get('cells') and len(row['cells']) > 0:
|
||||
row_has_content = True
|
||||
@@ -1185,7 +1228,7 @@ def main():
|
||||
col_start = int(cell['col'])
|
||||
col_span = int(cell.get('span', 1))
|
||||
rowspan = int(cell.get('rowspan', 1))
|
||||
cell_style = cell.get('style') or row.get('rowStyle') or 'default'
|
||||
cell_style = cell.get('style') or cells_style or 'default'
|
||||
ft = get_fill_type(cell)
|
||||
fmt_idx = register_cell_format(cell_style, ft)
|
||||
|
||||
@@ -1216,8 +1259,8 @@ def main():
|
||||
merges.append(merge)
|
||||
|
||||
# Generate gap-fill cells for rowStyle
|
||||
if row.get('rowStyle'):
|
||||
gap_fmt_idx = register_cell_format(row['rowStyle'], '')
|
||||
if cells_style:
|
||||
gap_fmt_idx = register_cell_format(cells_style, '')
|
||||
for c in range(1, total_columns + 1):
|
||||
if c not in occupied_cols:
|
||||
row_cells.append({
|
||||
@@ -1232,10 +1275,10 @@ def main():
|
||||
# Sort cells by column
|
||||
row_cells.sort(key=lambda x: x['Col'])
|
||||
|
||||
elif row.get('rowStyle'):
|
||||
elif cells_style:
|
||||
# Row with only rowStyle, no explicit cells
|
||||
row_has_content = True
|
||||
gap_fmt_idx = register_cell_format(row['rowStyle'], '')
|
||||
gap_fmt_idx = register_cell_format(cells_style, '')
|
||||
for c in range(1, total_columns + 1):
|
||||
if c in rowspan_occupied:
|
||||
continue
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# mxl-decompile v1.12 — Decompile 1C spreadsheet to JSON
|
||||
# mxl-decompile v1.13 — Decompile 1C spreadsheet to JSON
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
param(
|
||||
[Parameter(Mandatory)]
|
||||
@@ -499,6 +499,30 @@ foreach ($r in $rowData.Values) {
|
||||
}
|
||||
}
|
||||
|
||||
# Оформление строки без её собственных свойств: скрытие уезжает инлайном к height,
|
||||
# поэтому в именованный стиль попадать не должно.
|
||||
function Get-RowStyleFmt {
|
||||
param($fmt)
|
||||
if (-not $fmt) { return $null }
|
||||
$props = Get-StyleProps $fmt
|
||||
$props.Remove('hidden') | Out-Null
|
||||
if ($props.Count -eq 0) { return $null }
|
||||
$reduced = [ordered]@{}
|
||||
foreach ($tag in $fmt.Props.Keys) {
|
||||
if ($tag -cne 'hidden') { $reduced[$tag] = $fmt.Props[$tag] }
|
||||
}
|
||||
return @{ FontIdx = $fmt.FontIdx; Width = 0; Height = 0; FillType = ""; Props = $reduced }
|
||||
}
|
||||
|
||||
# Строка — тоже владелец формата: её оформление становится именованным стилем.
|
||||
foreach ($rd in $rowData.Values) {
|
||||
if ($rd.FormatIdx -le 0) { continue }
|
||||
$rf = Get-RowStyleFmt (Get-Format $rd.FormatIdx)
|
||||
if (-not $rf) { continue }
|
||||
$key = Get-StyleKey $rf
|
||||
if (-not $styleKeys.Contains($key)) { $styleKeys[$key] = $rf }
|
||||
}
|
||||
|
||||
# Колонка — третий владелец формата, её оформление тоже становится именованным стилем.
|
||||
foreach ($cs in $columnSets) {
|
||||
foreach ($fi in $cs.FmtIdx.Values) {
|
||||
@@ -740,11 +764,13 @@ foreach ($area in $blocks) {
|
||||
|
||||
$dslRow = [ordered]@{}
|
||||
|
||||
# Row height
|
||||
if ($rd.FormatIdx -gt 0) {
|
||||
$rowFmt = Get-Format $rd.FormatIdx
|
||||
if ($rowFmt -and $rowFmt.Height -gt 0) { $dslRow["height"] = $rowFmt.Height }
|
||||
}
|
||||
# Формат самой строки: высота и скрытие — её собственные свойства (у ячейки таких
|
||||
# нет), остальное — оформление, оно же может лежать и на ячейках.
|
||||
$rowFmt = if ($rd.FormatIdx -gt 0) { Get-Format $rd.FormatIdx } else { $null }
|
||||
$rowOwn = if ($rowFmt) { Get-StyleProps $rowFmt } else { [ordered]@{} }
|
||||
$rowHidden = ($rowOwn['hidden'] -eq $true)
|
||||
if ($rowFmt -and $rowFmt.Height -gt 0) { $dslRow["height"] = $rowFmt.Height }
|
||||
if ($rowHidden) { $dslRow["hidden"] = $true }
|
||||
|
||||
# Separate content cells from gap-fill cells
|
||||
$contentCells = @()
|
||||
@@ -780,7 +806,25 @@ foreach ($area in $blocks) {
|
||||
}
|
||||
}
|
||||
|
||||
if ($rowStyleName -and $rowStyleName -ne "default") { $dslRow["rowStyle"] = $rowStyleName }
|
||||
# Стиль строки и стиль ячеек — независимые вещи: платформа их часто, но не всегда
|
||||
# пишет одинаковыми. Один ключ с модификатором apply покрывает все три случая.
|
||||
$ownFmt = Get-RowStyleFmt $rowFmt
|
||||
$ownKey = if ($ownFmt) { Get-StyleKey $ownFmt } else { $null }
|
||||
$ownName = if ($ownKey -and $styleNames.Contains($ownKey)) { $styleNames[$ownKey] } else { $null }
|
||||
$cellsName = if ($rowStyleName -and $rowStyleName -ne "default") { $rowStyleName } else { $null }
|
||||
|
||||
if ($ownName -and $cellsName -and $ownKey -ceq $rowStyleKey) {
|
||||
$dslRow["rowStyle"] = $ownName
|
||||
} elseif ($ownName -and -not $cellsName) {
|
||||
$dslRow["rowStyle"] = [ordered]@{ style = $ownName; apply = "row" }
|
||||
} elseif ($cellsName -and -not $ownName) {
|
||||
$dslRow["rowStyle"] = [ordered]@{ style = $cellsName; apply = "cells" }
|
||||
} elseif ($ownName -and $cellsName) {
|
||||
# Стили разные — строке своё, ячейкам своё; ячейкам стиль раздаётся поячеечно.
|
||||
$dslRow["rowStyle"] = [ordered]@{ style = $ownName; apply = "row" }
|
||||
$rowStyleName = $null
|
||||
$rowStyleKey = $null
|
||||
}
|
||||
|
||||
# Build cell list
|
||||
$dslCells = @()
|
||||
@@ -938,7 +982,10 @@ foreach ($a in $dslAreas) {
|
||||
# Строка может быть массивом (короткая форма) — у неё нет свойства cells, и без этой
|
||||
# ветки стиль, использованный только внутри такой строки, вырезался как «неиспользуемый».
|
||||
$cellList = if ($r -is [array]) { $r } else { $r.cells }
|
||||
if ($r -isnot [array] -and $r.rowStyle) { $usedStyles[$r.rowStyle] = $true }
|
||||
if ($r -isnot [array] -and $r.rowStyle) {
|
||||
$rs = $r.rowStyle
|
||||
$usedStyles[$(if ($rs -is [System.Collections.IDictionary]) { $rs['style'] } else { $rs })] = $true
|
||||
}
|
||||
if ($cellList) { foreach ($c in $cellList) { if ($c -isnot [string] -and $c.style) { $usedStyles[$c.style] = $true } } }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# mxl-decompile v1.12 — Decompile 1C spreadsheet to JSON
|
||||
# mxl-decompile v1.13 — Decompile 1C spreadsheet to JSON
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
|
||||
import argparse
|
||||
@@ -659,6 +659,31 @@ def main():
|
||||
style_keys[key] = fmt
|
||||
format_to_style_key[cell["FormatIdx"]] = key
|
||||
|
||||
def row_style_fmt(fmt):
|
||||
"""Оформление строки без её собственных свойств: скрытие уезжает инлайном к height,
|
||||
поэтому в именованный стиль попадать не должно."""
|
||||
if not fmt:
|
||||
return None
|
||||
props = style_props(fmt)
|
||||
props.pop("hidden", None)
|
||||
if not props:
|
||||
return None
|
||||
reduced = OrderedDict()
|
||||
for tag, raw in fmt["Props"].items():
|
||||
if tag != "hidden":
|
||||
reduced[tag] = raw
|
||||
return {"FontIdx": fmt["FontIdx"], "Width": 0, "Height": 0,
|
||||
"FillType": "", "Props": reduced}
|
||||
|
||||
# Строка — тоже владелец формата: её оформление становится именованным стилем.
|
||||
for rd in row_data.values():
|
||||
rf = row_style_fmt(get_format(rd["FormatIdx"])) if rd["FormatIdx"] > 0 else None
|
||||
if not rf:
|
||||
continue
|
||||
key = get_style_key(rf)
|
||||
if key not in style_keys:
|
||||
style_keys[key] = rf
|
||||
|
||||
# Колонка — третий владелец формата, её оформление тоже становится именованным стилем.
|
||||
for cs in column_sets:
|
||||
for fi in cs["FmtIdx"].values():
|
||||
@@ -870,11 +895,15 @@ def main():
|
||||
|
||||
dsl_row = OrderedDict()
|
||||
|
||||
# Row height
|
||||
if rd["FormatIdx"] > 0:
|
||||
row_fmt = get_format(rd["FormatIdx"])
|
||||
if row_fmt and row_fmt["Height"] > 0:
|
||||
dsl_row["height"] = row_fmt["Height"]
|
||||
# Формат самой строки: высота и скрытие — её собственные свойства (у ячейки
|
||||
# таких нет), остальное — оформление, оно же может лежать и на ячейках.
|
||||
row_fmt = get_format(rd["FormatIdx"]) if rd["FormatIdx"] > 0 else None
|
||||
row_own = style_props(row_fmt) if row_fmt else OrderedDict()
|
||||
row_hidden = row_own.pop("hidden", False)
|
||||
if row_fmt and row_fmt["Height"] > 0:
|
||||
dsl_row["height"] = row_fmt["Height"]
|
||||
if row_hidden:
|
||||
dsl_row["hidden"] = True
|
||||
|
||||
# Separate content cells from gap-fill cells
|
||||
content_cells = []
|
||||
@@ -904,8 +933,25 @@ def main():
|
||||
if row_style_key in style_names:
|
||||
row_style_name = style_names[row_style_key]
|
||||
|
||||
if row_style_name and row_style_name != "default":
|
||||
dsl_row["rowStyle"] = row_style_name
|
||||
# Стиль строки и стиль ячеек — независимые вещи: платформа их часто, но не всегда
|
||||
# пишет одинаковыми. Один ключ с модификатором apply покрывает все три случая.
|
||||
own_fmt = row_style_fmt(row_fmt)
|
||||
own_key = get_style_key(own_fmt) if own_fmt else None
|
||||
own_name = style_names.get(own_key) if own_key else None
|
||||
cells_name = row_style_name if row_style_name and row_style_name != "default" else None
|
||||
|
||||
if own_name and cells_name and own_key == row_style_key:
|
||||
dsl_row["rowStyle"] = own_name
|
||||
elif own_name and not cells_name:
|
||||
dsl_row["rowStyle"] = OrderedDict([("style", own_name), ("apply", "row")])
|
||||
elif cells_name and not own_name:
|
||||
dsl_row["rowStyle"] = OrderedDict([("style", cells_name), ("apply", "cells")])
|
||||
elif own_name and cells_name:
|
||||
# Стили разные — строке своё, ячейкам своё; ячейкам стиль раздаётся ниже
|
||||
# поячеечно, поэтому здесь пишем только строку.
|
||||
dsl_row["rowStyle"] = OrderedDict([("style", own_name), ("apply", "row")])
|
||||
row_style_name = None
|
||||
row_style_key = None
|
||||
|
||||
# Build cell list
|
||||
dsl_cells = []
|
||||
@@ -1075,7 +1121,8 @@ def main():
|
||||
cell_list = r
|
||||
else:
|
||||
if "rowStyle" in r:
|
||||
used_styles.add(r["rowStyle"])
|
||||
rs = r["rowStyle"]
|
||||
used_styles.add(rs["style"] if isinstance(rs, dict) else rs)
|
||||
cell_list = r.get("cells") or []
|
||||
# Список ячеек может быть позиционным: строки, None и маркеры стиля не несут,
|
||||
# стиль бывает только у объектного элемента.
|
||||
|
||||
@@ -127,12 +127,16 @@
|
||||
| Поле | По умолч. | Описание |
|
||||
|------|-----------|----------|
|
||||
| `height` | — | Высота строки (если не задана, используется авто) |
|
||||
| `rowStyle` | — | Стиль для ВСЕХ колонок (заполняет пустоты рамками) |
|
||||
| `hidden` | `false` | Скрыть строку |
|
||||
| `rowStyle` | — | Стиль строки: ложится и на саму строку, и на ВСЕ её колонки (заполняет пустоты рамками) |
|
||||
| `cells` | `[]` | Массив ячеек |
|
||||
| `empty` | — | Количество подряд идущих пустых строк (заменяет N отдельных `{}`) |
|
||||
|
||||
Строка без `cells` и `rowStyle` → пустая строка. `{ "empty": 3 }` эквивалентно трём `{}`.
|
||||
|
||||
`height` и `hidden` — собственные свойства строки: у ячейки таких нет, и в её оформление они
|
||||
не попадают. Всё остальное оформление строки задаётся через `rowStyle`.
|
||||
|
||||
### Короткая форма: строка массивом
|
||||
|
||||
Вместо объекта строка может быть массивом ячеек — позиция определяется порядком, `col` не указывается.
|
||||
@@ -203,9 +207,11 @@
|
||||
|
||||
Пустая строка — это текст: ячейка с `"text": ""` даёт пустую надпись, а не ячейку без текста.
|
||||
|
||||
## `rowStyle` — автозаполнение
|
||||
## `rowStyle` — оформление строки
|
||||
|
||||
Стиль применяется ко ВСЕЙ ширине строки: позиции без явных ячеек получают тот же стиль. Так в табличных строках получаются сплошные рамки.
|
||||
Стиль применяется ко ВСЕЙ ширине строки: позиции без явных ячеек получают тот же стиль. Так в табличных строках получаются сплошные рамки. Он же становится оформлением самой строки — именно так платформа хранит строку, оформленную целиком.
|
||||
|
||||
Стиль конкретной ячейки (`style`) перекрывает `rowStyle` для этой ячейки.
|
||||
|
||||
Если в предыдущих строках той же области есть ячейки с `rowspan`, их колонки при автозаполнении пропускаются.
|
||||
|
||||
@@ -216,8 +222,6 @@ round-trip** (`/mxl-decompile` → `/mxl-compile`): в JSON оно не попа
|
||||
XML не возвращается.
|
||||
|
||||
- ячейки-поля ввода (`containsValue` / `valueType` / `controlType`);
|
||||
- оформление СТРОКИ помимо высоты: у строки задаётся только `height`, а скрытие,
|
||||
шрифт и прочее платформа хранит и у неё тоже;
|
||||
- объединения, не привязанные к ячейке (по всей высоте или ширине документа);
|
||||
- рисунки и картинки, в том числе штрихкоды, и примечания к ячейкам;
|
||||
- группировки строк и колонок;
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"name": "Формат строки: скрытие, высота и режимы применения стиля",
|
||||
"input": {
|
||||
"columns": 3,
|
||||
"defaultWidth": 20,
|
||||
"fonts": {
|
||||
"default": { "face": "Arial", "size": 10 },
|
||||
"bold": { "face": "Arial", "size": 10, "bold": true }
|
||||
},
|
||||
"styles": {
|
||||
"фон": { "backColor": "#EBEBEB" },
|
||||
"рамка": { "border": "Solid" },
|
||||
"жирный": { "font": "bold" }
|
||||
},
|
||||
"areas": [
|
||||
{
|
||||
"name": "Тело",
|
||||
"rows": [
|
||||
{ "height": 20, "hidden": true, "cells": [
|
||||
{ "col": 1, "text": "скрытая строка" }
|
||||
]},
|
||||
{ "rowStyle": "фон", "cells": [
|
||||
{ "col": 1, "text": "и строке, и ячейкам" }
|
||||
]},
|
||||
{ "rowStyle": { "style": "жирный", "apply": "row" }, "cells": [
|
||||
{ "col": 1, "text": "только строке" }
|
||||
]},
|
||||
{ "rowStyle": { "style": "рамка", "apply": "cells" }, "cells": [
|
||||
{ "col": 1, "text": "только ячейкам" }
|
||||
]}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"params": { "outputPath": "Template.xml" },
|
||||
"validatePath": "Template.xml",
|
||||
"expect": { "files": ["Template.xml"] }
|
||||
}
|
||||
@@ -51,9 +51,10 @@
|
||||
<rowsItem>
|
||||
<index>0</index>
|
||||
<row>
|
||||
<formatIndex>5</formatIndex>
|
||||
<c>
|
||||
<c>
|
||||
<f>5</f>
|
||||
<f>6</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -64,7 +65,7 @@
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>5</f>
|
||||
<f>6</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -75,7 +76,7 @@
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>5</f>
|
||||
<f>6</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -86,7 +87,7 @@
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>5</f>
|
||||
<f>6</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -97,7 +98,7 @@
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>5</f>
|
||||
<f>6</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -108,7 +109,7 @@
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>5</f>
|
||||
<f>6</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -149,6 +150,9 @@
|
||||
<format>
|
||||
<width>30</width>
|
||||
</format>
|
||||
<format>
|
||||
<border>0</border>
|
||||
</format>
|
||||
<format>
|
||||
<font>0</font>
|
||||
<border>0</border>
|
||||
|
||||
@@ -38,21 +38,22 @@
|
||||
<rowsItem>
|
||||
<index>3</index>
|
||||
<row>
|
||||
<formatIndex>3</formatIndex>
|
||||
<c>
|
||||
<c>
|
||||
<f>4</f>
|
||||
<f>5</f>
|
||||
<parameter>Код</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>4</f>
|
||||
<f>5</f>
|
||||
<parameter>Имя</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>4</f>
|
||||
<f>5</f>
|
||||
<parameter>Значение</parameter>
|
||||
</c>
|
||||
</c>
|
||||
@@ -99,6 +100,9 @@
|
||||
<font>1</font>
|
||||
<horizontalAlignment>Center</horizontalAlignment>
|
||||
</format>
|
||||
<format>
|
||||
<border>0</border>
|
||||
</format>
|
||||
<format>
|
||||
<font>0</font>
|
||||
<border>0</border>
|
||||
|
||||
@@ -15,9 +15,10 @@
|
||||
<rowsItem>
|
||||
<index>0</index>
|
||||
<row>
|
||||
<formatIndex>2</formatIndex>
|
||||
<c>
|
||||
<c>
|
||||
<f>2</f>
|
||||
<f>3</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -28,7 +29,7 @@
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>2</f>
|
||||
<f>3</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -39,7 +40,7 @@
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>2</f>
|
||||
<f>3</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -50,7 +51,7 @@
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>2</f>
|
||||
<f>3</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -64,27 +65,28 @@
|
||||
<rowsItem>
|
||||
<index>1</index>
|
||||
<row>
|
||||
<formatIndex>4</formatIndex>
|
||||
<c>
|
||||
<c>
|
||||
<f>4</f>
|
||||
<f>6</f>
|
||||
<parameter>Дата</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>5</f>
|
||||
<f>7</f>
|
||||
<parameter>Товар</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>6</f>
|
||||
<f>8</f>
|
||||
<parameter>Количество</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>6</f>
|
||||
<f>8</f>
|
||||
<parameter>Цена</parameter>
|
||||
</c>
|
||||
</c>
|
||||
@@ -121,11 +123,18 @@
|
||||
<format>
|
||||
<width>10</width>
|
||||
</format>
|
||||
<format>
|
||||
<border>0</border>
|
||||
<horizontalAlignment>Center</horizontalAlignment>
|
||||
</format>
|
||||
<format>
|
||||
<font>0</font>
|
||||
<border>0</border>
|
||||
<horizontalAlignment>Center</horizontalAlignment>
|
||||
</format>
|
||||
<format>
|
||||
<border>0</border>
|
||||
</format>
|
||||
<format>
|
||||
<font>0</font>
|
||||
<border>0</border>
|
||||
|
||||
@@ -15,9 +15,10 @@
|
||||
<rowsItem>
|
||||
<index>0</index>
|
||||
<row>
|
||||
<formatIndex>2</formatIndex>
|
||||
<c>
|
||||
<c>
|
||||
<f>3</f>
|
||||
<f>4</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -28,7 +29,7 @@
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>3</f>
|
||||
<f>4</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -40,7 +41,7 @@
|
||||
<c>
|
||||
<i>3</i>
|
||||
<c>
|
||||
<f>3</f>
|
||||
<f>4</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -54,10 +55,11 @@
|
||||
<rowsItem>
|
||||
<index>1</index>
|
||||
<row>
|
||||
<formatIndex>2</formatIndex>
|
||||
<c>
|
||||
<i>1</i>
|
||||
<c>
|
||||
<f>4</f>
|
||||
<f>5</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -68,7 +70,7 @@
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>4</f>
|
||||
<f>5</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -82,27 +84,28 @@
|
||||
<rowsItem>
|
||||
<index>2</index>
|
||||
<row>
|
||||
<formatIndex>2</formatIndex>
|
||||
<c>
|
||||
<c>
|
||||
<f>5</f>
|
||||
<f>6</f>
|
||||
<parameter>Номер</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>6</f>
|
||||
<f>7</f>
|
||||
<parameter>Наименование</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>6</f>
|
||||
<f>7</f>
|
||||
<parameter>Артикул</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>6</f>
|
||||
<f>7</f>
|
||||
<parameter>Итого</parameter>
|
||||
</c>
|
||||
</c>
|
||||
@@ -157,6 +160,9 @@
|
||||
<format>
|
||||
<width>10</width>
|
||||
</format>
|
||||
<format>
|
||||
<border>0</border>
|
||||
</format>
|
||||
<format>
|
||||
<font>0</font>
|
||||
<border>0</border>
|
||||
|
||||
@@ -27,9 +27,10 @@
|
||||
<rowsItem>
|
||||
<index>1</index>
|
||||
<row>
|
||||
<formatIndex>4</formatIndex>
|
||||
<c>
|
||||
<c>
|
||||
<f>4</f>
|
||||
<f>5</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -40,7 +41,7 @@
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>4</f>
|
||||
<f>5</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -51,7 +52,7 @@
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>4</f>
|
||||
<f>5</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -62,7 +63,7 @@
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>4</f>
|
||||
<f>5</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -76,28 +77,29 @@
|
||||
<rowsItem>
|
||||
<index>2</index>
|
||||
<row>
|
||||
<formatIndex>4</formatIndex>
|
||||
<c>
|
||||
<c>
|
||||
<f>5</f>
|
||||
<f>6</f>
|
||||
<parameter>НомерСтроки</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>5</f>
|
||||
<f>6</f>
|
||||
<parameter>Товар</parameter>
|
||||
<detailParameter>Номенклатура</detailParameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>6</f>
|
||||
<f>7</f>
|
||||
<parameter>Количество</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>6</f>
|
||||
<f>7</f>
|
||||
<parameter>Сумма</parameter>
|
||||
</c>
|
||||
</c>
|
||||
@@ -109,7 +111,7 @@
|
||||
<c>
|
||||
<i>2</i>
|
||||
<c>
|
||||
<f>7</f>
|
||||
<f>8</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -120,7 +122,7 @@
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>8</f>
|
||||
<f>9</f>
|
||||
<parameter>Всего</parameter>
|
||||
</c>
|
||||
</c>
|
||||
@@ -192,6 +194,9 @@
|
||||
<horizontalAlignment>Center</horizontalAlignment>
|
||||
<fillType>Parameter</fillType>
|
||||
</format>
|
||||
<format>
|
||||
<border>0</border>
|
||||
</format>
|
||||
<format>
|
||||
<font>0</font>
|
||||
<border>0</border>
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
<rowsItem>
|
||||
<index>0</index>
|
||||
<row>
|
||||
<formatIndex>3</formatIndex>
|
||||
<c>
|
||||
<c>
|
||||
<f>3</f>
|
||||
@@ -105,33 +106,34 @@
|
||||
<rowsItem>
|
||||
<index>1</index>
|
||||
<row>
|
||||
<formatIndex>4</formatIndex>
|
||||
<c>
|
||||
<c>
|
||||
<f>5</f>
|
||||
<f>6</f>
|
||||
<parameter>Номер</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>6</f>
|
||||
<f>7</f>
|
||||
<parameter>Описание</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>5</f>
|
||||
<f>6</f>
|
||||
<parameter>ЕдИзм</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>5</f>
|
||||
<f>6</f>
|
||||
<parameter>Количество</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>6</f>
|
||||
<f>7</f>
|
||||
<parameter>Сумма</parameter>
|
||||
</c>
|
||||
</c>
|
||||
@@ -177,6 +179,9 @@
|
||||
<border>0</border>
|
||||
<horizontalAlignment>Center</horizontalAlignment>
|
||||
</format>
|
||||
<format>
|
||||
<border>0</border>
|
||||
</format>
|
||||
<format>
|
||||
<font>0</font>
|
||||
<border>0</border>
|
||||
|
||||
@@ -69,21 +69,22 @@
|
||||
<rowsItem>
|
||||
<index>2</index>
|
||||
<row>
|
||||
<formatIndex>4</formatIndex>
|
||||
<c>
|
||||
<c>
|
||||
<f>5</f>
|
||||
<f>6</f>
|
||||
<parameter>Позиция</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>5</f>
|
||||
<f>6</f>
|
||||
<parameter>Товар</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>5</f>
|
||||
<f>6</f>
|
||||
<parameter>Цена</parameter>
|
||||
</c>
|
||||
</c>
|
||||
@@ -138,6 +139,9 @@
|
||||
<font>0</font>
|
||||
<fillType>Template</fillType>
|
||||
</format>
|
||||
<format>
|
||||
<border>0</border>
|
||||
</format>
|
||||
<format>
|
||||
<font>0</font>
|
||||
<border>0</border>
|
||||
|
||||
@@ -139,9 +139,10 @@
|
||||
<rowsItem>
|
||||
<index>4</index>
|
||||
<row>
|
||||
<formatIndex>6</formatIndex>
|
||||
<c>
|
||||
<c>
|
||||
<f>7</f>
|
||||
<f>8</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -152,7 +153,7 @@
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>7</f>
|
||||
<f>8</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -164,7 +165,7 @@
|
||||
<c>
|
||||
<i>6</i>
|
||||
<c>
|
||||
<f>7</f>
|
||||
<f>8</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -175,7 +176,7 @@
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>7</f>
|
||||
<f>8</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -186,7 +187,7 @@
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>7</f>
|
||||
<f>8</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -197,7 +198,7 @@
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>7</f>
|
||||
<f>8</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -211,15 +212,16 @@
|
||||
<rowsItem>
|
||||
<index>5</index>
|
||||
<row>
|
||||
<formatIndex>6</formatIndex>
|
||||
<c>
|
||||
<c>
|
||||
<f>8</f>
|
||||
<f>9</f>
|
||||
<parameter>НомерСтроки</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>9</f>
|
||||
<f>10</f>
|
||||
<parameter>Товар</parameter>
|
||||
<detailParameter>Номенклатура</detailParameter>
|
||||
</c>
|
||||
@@ -227,25 +229,25 @@
|
||||
<c>
|
||||
<i>6</i>
|
||||
<c>
|
||||
<f>8</f>
|
||||
<f>9</f>
|
||||
<parameter>ЕдИзм</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>10</f>
|
||||
<f>11</f>
|
||||
<parameter>Количество</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>10</f>
|
||||
<f>11</f>
|
||||
<parameter>Цена</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>10</f>
|
||||
<f>11</f>
|
||||
<parameter>Сумма</parameter>
|
||||
</c>
|
||||
</c>
|
||||
@@ -257,7 +259,7 @@
|
||||
<c>
|
||||
<i>7</i>
|
||||
<c>
|
||||
<f>11</f>
|
||||
<f>12</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -269,7 +271,7 @@
|
||||
<c>
|
||||
<i>9</i>
|
||||
<c>
|
||||
<f>12</f>
|
||||
<f>13</f>
|
||||
<parameter>ИтогоСумма</parameter>
|
||||
</c>
|
||||
</c>
|
||||
@@ -281,7 +283,7 @@
|
||||
<c>
|
||||
<i>7</i>
|
||||
<c>
|
||||
<f>11</f>
|
||||
<f>12</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -293,7 +295,7 @@
|
||||
<c>
|
||||
<i>9</i>
|
||||
<c>
|
||||
<f>12</f>
|
||||
<f>13</f>
|
||||
<parameter>ИтогоНДС</parameter>
|
||||
</c>
|
||||
</c>
|
||||
@@ -323,7 +325,7 @@
|
||||
<c>
|
||||
<i>3</i>
|
||||
<c>
|
||||
<f>13</f>
|
||||
<f>14</f>
|
||||
<parameter>Отпустил</parameter>
|
||||
</c>
|
||||
</c>
|
||||
@@ -335,7 +337,7 @@
|
||||
<c>
|
||||
<i>3</i>
|
||||
<c>
|
||||
<f>14</f>
|
||||
<f>15</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -369,7 +371,7 @@
|
||||
<c>
|
||||
<i>3</i>
|
||||
<c>
|
||||
<f>13</f>
|
||||
<f>14</f>
|
||||
<parameter>Получил</parameter>
|
||||
</c>
|
||||
</c>
|
||||
@@ -381,7 +383,7 @@
|
||||
<c>
|
||||
<i>3</i>
|
||||
<c>
|
||||
<f>14</f>
|
||||
<f>15</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -546,6 +548,9 @@
|
||||
<font>0</font>
|
||||
<fillType>Parameter</fillType>
|
||||
</format>
|
||||
<format>
|
||||
<border>0</border>
|
||||
</format>
|
||||
<format>
|
||||
<font>0</font>
|
||||
<border>0</border>
|
||||
|
||||
@@ -0,0 +1,142 @@
|
||||
<?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>3</size>
|
||||
</columns>
|
||||
<rowsItem>
|
||||
<index>0</index>
|
||||
<row>
|
||||
<formatIndex>2</formatIndex>
|
||||
<c>
|
||||
<c>
|
||||
<f>0</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>скрытая строка</v8:content>
|
||||
</v8:item>
|
||||
</tl>
|
||||
</c>
|
||||
</c>
|
||||
</row>
|
||||
</rowsItem>
|
||||
<rowsItem>
|
||||
<index>1</index>
|
||||
<row>
|
||||
<formatIndex>3</formatIndex>
|
||||
<c>
|
||||
<c>
|
||||
<f>4</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>и строке, и ячейкам</v8:content>
|
||||
</v8:item>
|
||||
</tl>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>4</f>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>4</f>
|
||||
</c>
|
||||
</c>
|
||||
</row>
|
||||
</rowsItem>
|
||||
<rowsItem>
|
||||
<index>2</index>
|
||||
<row>
|
||||
<formatIndex>5</formatIndex>
|
||||
<c>
|
||||
<c>
|
||||
<f>0</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>только строке</v8:content>
|
||||
</v8:item>
|
||||
</tl>
|
||||
</c>
|
||||
</c>
|
||||
</row>
|
||||
</rowsItem>
|
||||
<rowsItem>
|
||||
<index>3</index>
|
||||
<row>
|
||||
<c>
|
||||
<c>
|
||||
<f>6</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>только ячейкам</v8:content>
|
||||
</v8:item>
|
||||
</tl>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>6</f>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>6</f>
|
||||
</c>
|
||||
</c>
|
||||
</row>
|
||||
</rowsItem>
|
||||
<templateMode>true</templateMode>
|
||||
<defaultFormatIndex>1</defaultFormatIndex>
|
||||
<height>4</height>
|
||||
<vgRows>4</vgRows>
|
||||
<namedItem xsi:type="NamedItemCells">
|
||||
<name>Тело</name>
|
||||
<area>
|
||||
<type>Rows</type>
|
||||
<beginRow>0</beginRow>
|
||||
<endRow>3</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"/>
|
||||
<format>
|
||||
<width>20</width>
|
||||
</format>
|
||||
<format>
|
||||
<height>20</height>
|
||||
<hidden>true</hidden>
|
||||
</format>
|
||||
<format>
|
||||
<backColor>#EBEBEB</backColor>
|
||||
</format>
|
||||
<format>
|
||||
<font>0</font>
|
||||
<backColor>#EBEBEB</backColor>
|
||||
</format>
|
||||
<format>
|
||||
<font>1</font>
|
||||
</format>
|
||||
<format>
|
||||
<font>0</font>
|
||||
<border>0</border>
|
||||
</format>
|
||||
</document>
|
||||
@@ -55,6 +55,7 @@
|
||||
<rowsItem>
|
||||
<index>2</index>
|
||||
<row>
|
||||
<formatIndex>6</formatIndex>
|
||||
<c>
|
||||
<c>
|
||||
<f>6</f>
|
||||
@@ -115,33 +116,34 @@
|
||||
<rowsItem>
|
||||
<index>3</index>
|
||||
<row>
|
||||
<formatIndex>7</formatIndex>
|
||||
<c>
|
||||
<c>
|
||||
<f>8</f>
|
||||
<f>9</f>
|
||||
<parameter>НомерСтроки</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>9</f>
|
||||
<f>10</f>
|
||||
<parameter>Товар</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>10</f>
|
||||
<f>11</f>
|
||||
<parameter>Количество</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>10</f>
|
||||
<f>11</f>
|
||||
<parameter>Цена</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>10</f>
|
||||
<f>11</f>
|
||||
<parameter>Сумма</parameter>
|
||||
</c>
|
||||
</c>
|
||||
@@ -153,7 +155,7 @@
|
||||
<c>
|
||||
<i>3</i>
|
||||
<c>
|
||||
<f>11</f>
|
||||
<f>12</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -164,7 +166,7 @@
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>12</f>
|
||||
<f>13</f>
|
||||
<parameter>Всего</parameter>
|
||||
</c>
|
||||
</c>
|
||||
@@ -175,7 +177,7 @@
|
||||
<row>
|
||||
<c>
|
||||
<c>
|
||||
<f>13</f>
|
||||
<f>14</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -304,6 +306,9 @@
|
||||
<font>1</font>
|
||||
<border>1</border>
|
||||
</format>
|
||||
<format>
|
||||
<border>0</border>
|
||||
</format>
|
||||
<format>
|
||||
<font>0</font>
|
||||
<border>0</border>
|
||||
|
||||
@@ -15,9 +15,10 @@
|
||||
<rowsItem>
|
||||
<index>0</index>
|
||||
<row>
|
||||
<formatIndex>2</formatIndex>
|
||||
<c>
|
||||
<c>
|
||||
<f>3</f>
|
||||
<f>4</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -28,7 +29,7 @@
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>3</f>
|
||||
<f>4</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -42,10 +43,11 @@
|
||||
<rowsItem>
|
||||
<index>1</index>
|
||||
<row>
|
||||
<formatIndex>2</formatIndex>
|
||||
<c>
|
||||
<i>1</i>
|
||||
<c>
|
||||
<f>2</f>
|
||||
<f>3</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -56,7 +58,7 @@
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>2</f>
|
||||
<f>3</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -100,6 +102,9 @@
|
||||
<format>
|
||||
<width>10</width>
|
||||
</format>
|
||||
<format>
|
||||
<border>0</border>
|
||||
</format>
|
||||
<format>
|
||||
<font>0</font>
|
||||
<border>0</border>
|
||||
|
||||
@@ -27,27 +27,28 @@
|
||||
<rowsItem>
|
||||
<index>1</index>
|
||||
<row>
|
||||
<formatIndex>4</formatIndex>
|
||||
<c>
|
||||
<c>
|
||||
<f>5</f>
|
||||
<f>6</f>
|
||||
<parameter>Номер</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>5</f>
|
||||
<f>6</f>
|
||||
<parameter>Товар</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>6</f>
|
||||
<f>7</f>
|
||||
<parameter>Количество</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>6</f>
|
||||
<f>7</f>
|
||||
<parameter>Сумма</parameter>
|
||||
</c>
|
||||
</c>
|
||||
@@ -59,7 +60,7 @@
|
||||
<c>
|
||||
<i>2</i>
|
||||
<c>
|
||||
<f>7</f>
|
||||
<f>8</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -70,7 +71,7 @@
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>8</f>
|
||||
<f>9</f>
|
||||
<parameter>Всего</parameter>
|
||||
</c>
|
||||
</c>
|
||||
@@ -130,6 +131,9 @@
|
||||
<font>0</font>
|
||||
<fillType>Parameter</fillType>
|
||||
</format>
|
||||
<format>
|
||||
<border>0</border>
|
||||
</format>
|
||||
<format>
|
||||
<font>0</font>
|
||||
<border>0</border>
|
||||
|
||||
@@ -50,34 +50,35 @@
|
||||
<rowsItem>
|
||||
<index>2</index>
|
||||
<row>
|
||||
<formatIndex>3</formatIndex>
|
||||
<c>
|
||||
<c>
|
||||
<f>4</f>
|
||||
<f>5</f>
|
||||
<parameter>НомерСтроки</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>4</f>
|
||||
<f>5</f>
|
||||
<parameter>Товар</parameter>
|
||||
<detailParameter>Номенклатура</detailParameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>5</f>
|
||||
<f>6</f>
|
||||
<parameter>Количество</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>5</f>
|
||||
<f>6</f>
|
||||
<parameter>Цена</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>5</f>
|
||||
<f>6</f>
|
||||
<parameter>Сумма</parameter>
|
||||
</c>
|
||||
</c>
|
||||
@@ -89,7 +90,7 @@
|
||||
<c>
|
||||
<i>3</i>
|
||||
<c>
|
||||
<f>6</f>
|
||||
<f>7</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -100,7 +101,7 @@
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>7</f>
|
||||
<f>8</f>
|
||||
<parameter>Всего</parameter>
|
||||
</c>
|
||||
</c>
|
||||
@@ -177,6 +178,9 @@
|
||||
<font>0</font>
|
||||
<fillType>Parameter</fillType>
|
||||
</format>
|
||||
<format>
|
||||
<border>0</border>
|
||||
</format>
|
||||
<format>
|
||||
<font>0</font>
|
||||
<border>0</border>
|
||||
|
||||
@@ -15,22 +15,23 @@
|
||||
<rowsItem>
|
||||
<index>0</index>
|
||||
<row>
|
||||
<formatIndex>2</formatIndex>
|
||||
<c>
|
||||
<c>
|
||||
<f>3</f>
|
||||
<f>4</f>
|
||||
<parameter>НомерСтроки</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>3</f>
|
||||
<f>4</f>
|
||||
<parameter>Товар</parameter>
|
||||
<detailParameter>Номенклатура</detailParameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>3</f>
|
||||
<f>4</f>
|
||||
<parameter>Сумма</parameter>
|
||||
</c>
|
||||
</c>
|
||||
@@ -57,6 +58,9 @@
|
||||
<format>
|
||||
<width>10</width>
|
||||
</format>
|
||||
<format>
|
||||
<border>0</border>
|
||||
</format>
|
||||
<format>
|
||||
<font>0</font>
|
||||
<border>0</border>
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
<rowsItem>
|
||||
<index>1</index>
|
||||
<row>
|
||||
<formatIndex>3</formatIndex>
|
||||
<c>
|
||||
<c>
|
||||
<f>3</f>
|
||||
@@ -65,10 +66,11 @@
|
||||
<rowsItem>
|
||||
<index>2</index>
|
||||
<row>
|
||||
<formatIndex>4</formatIndex>
|
||||
<c>
|
||||
<i>1</i>
|
||||
<c>
|
||||
<f>4</f>
|
||||
<f>5</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -79,7 +81,7 @@
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>4</f>
|
||||
<f>5</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -93,27 +95,28 @@
|
||||
<rowsItem>
|
||||
<index>3</index>
|
||||
<row>
|
||||
<formatIndex>4</formatIndex>
|
||||
<c>
|
||||
<c>
|
||||
<f>5</f>
|
||||
<f>6</f>
|
||||
<parameter>Номер</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>5</f>
|
||||
<f>6</f>
|
||||
<parameter>Имя</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>5</f>
|
||||
<f>6</f>
|
||||
<parameter>Код</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>5</f>
|
||||
<f>6</f>
|
||||
<parameter>Сумма</parameter>
|
||||
</c>
|
||||
</c>
|
||||
@@ -194,6 +197,9 @@
|
||||
<border>0</border>
|
||||
<horizontalAlignment>Center</horizontalAlignment>
|
||||
</format>
|
||||
<format>
|
||||
<border>0</border>
|
||||
</format>
|
||||
<format>
|
||||
<font>0</font>
|
||||
<border>0</border>
|
||||
|
||||
@@ -57,33 +57,34 @@
|
||||
<rowsItem>
|
||||
<index>1</index>
|
||||
<row>
|
||||
<formatIndex>5</formatIndex>
|
||||
<c>
|
||||
<c>
|
||||
<f>6</f>
|
||||
<f>7</f>
|
||||
<parameter>Номер</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>6</f>
|
||||
<f>7</f>
|
||||
<parameter>Товар</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>6</f>
|
||||
<f>7</f>
|
||||
<parameter>ЕдИзм</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>7</f>
|
||||
<f>8</f>
|
||||
<parameter>Кол</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>7</f>
|
||||
<f>8</f>
|
||||
<parameter>Сумма</parameter>
|
||||
</c>
|
||||
</c>
|
||||
@@ -95,7 +96,7 @@
|
||||
<c>
|
||||
<i>3</i>
|
||||
<c>
|
||||
<f>8</f>
|
||||
<f>9</f>
|
||||
<tl>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
@@ -106,7 +107,7 @@
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>9</f>
|
||||
<f>10</f>
|
||||
<parameter>Всего</parameter>
|
||||
</c>
|
||||
</c>
|
||||
@@ -171,6 +172,9 @@
|
||||
<horizontalAlignment>Center</horizontalAlignment>
|
||||
<fillType>Parameter</fillType>
|
||||
</format>
|
||||
<format>
|
||||
<border>0</border>
|
||||
</format>
|
||||
<format>
|
||||
<font>0</font>
|
||||
<border>0</border>
|
||||
|
||||
@@ -15,15 +15,16 @@
|
||||
<rowsItem>
|
||||
<index>0</index>
|
||||
<row>
|
||||
<formatIndex>2</formatIndex>
|
||||
<c>
|
||||
<c>
|
||||
<f>3</f>
|
||||
<f>4</f>
|
||||
<parameter>Ключ</parameter>
|
||||
</c>
|
||||
</c>
|
||||
<c>
|
||||
<c>
|
||||
<f>3</f>
|
||||
<f>4</f>
|
||||
<parameter>Значение</parameter>
|
||||
</c>
|
||||
</c>
|
||||
@@ -50,6 +51,9 @@
|
||||
<format>
|
||||
<width>10</width>
|
||||
</format>
|
||||
<format>
|
||||
<border>0</border>
|
||||
</format>
|
||||
<format>
|
||||
<font>0</font>
|
||||
<border>0</border>
|
||||
|
||||
Reference in New Issue
Block a user