# Спецификация XML-формата табличного документа (SpreadsheetDocument) Формат файла `Template.xml` для макетов типа `SpreadsheetDocument` (табличный документ / MXL). ## Namespace ```xml ``` ## Структура документа Элементы внутри `` идут в фиксированном порядке: ``` — языковые настройки — определения колонок ... — строки с данными (повторяются) ... — рисунки (опционально, повторяются) true — признак макета — индекс формата по умолчанию — общее количество строк — видимых строк (обычно = height) ... — объединения ячеек (повторяются) ... — именованные области (повторяются) ... — стили линий (повторяются) ... — шрифты (опционально, повторяются) ... — форматы (повторяются) ... — ресурсы картинок (опционально) ``` ## Индексация Все палитры (линии, шрифты, форматы) — **плоские массивы**, на элементы которых ссылаются по индексу. | Палитра | Индексация | Индекс 0 означает | |-----------|------------|--------------------------------------| | `` | 0-based | Первый элемент `` | | `` | 0-based | Первый элемент `` | | ``| **1-based**| 0 = «формат по умолчанию» (не задан) | Формат с индексом N — это N-й элемент `` в документе (считая от 1). ## Языковые настройки ```xml ru ru ru Русский Русский ``` ## Колонки ```xml 33 1 1 ... ``` Перечисляются только колонки с нестандартной шириной. Формат колонки определяет ширину через свойство `` в палитре форматов. ## Строки и ячейки ### Строка ```xml 3 5 5 true ... ``` Строки с одинаковым содержимым объединяются через ``. ### Ячейка Ячейки внутри `` — элементы `` (cell group), каждый содержит `` (cell content): ```xml 6 9 Имя Расш ru Итого: ``` **Правила позиционирования ``:** - Если `` указан — ячейка в этой колонке - Если `` не указан — колонка = предыдущая + 1 - Первая ячейка без `` идёт в колонку 0 ### Типы заполнения ячеек Тип заполнения определяется свойством `fillType` в формате ячейки: | fillType | Данные ячейки | Описание | |-------------|-------------------------------|----------------------------------------| | `Parameter` | `Имя` | Значение подставляется программно | | `Template` | `Текст [Параметр]` | Шаблон — `[Имя]` заменяется на значение | | `Text` | `Текст` | Статический текст | | *(нет)* | — | Пустая ячейка или ячейка с форматированием | `` — имя параметра расшифровки (для навигации при клике на ячейку). ## Рисунки ```xml Picture 1 11 3 6 4 33 2 0 4 183 false Proportionally 1 1 ``` Позиция задаётся через начальную/конечную строку и колонку + смещения в пикселях. `pictureIndex` ссылается на ресурс из палитры ``. ## Объединения ячеек ```xml 3 1 1 30 ``` Размер объединения: `(h + 1)` строк × `(w + 1)` колонок. Если `` не указан — объединение в пределах одной строки. ## Именованные области Именованные области — аналог «имён» в табличном документе 1С. Используются для программного вывода секций. Получение области: ```bsl // Горизонтальная область (диапазон строк) Область = Макет.ПолучитьОбласть("Заголовок"); // Пересечение горизонтальной и вертикальной областей Область = Макет.ПолучитьОбласть("ВысотаЭтикетки|ШиринаЭтикетки"); ``` Пересечение через `|` типично для этикеток и ценников, где нужна область фиксированного размера (высота × ширина). ### Тип Rows — горизонтальная область ```xml Заголовок Rows 1 4 -1 -1 ``` ### Тип Columns — вертикальная область ```xml ШиринаЭтикетки Columns -1 -1 1 5 ``` ### Тип Drawing — именованный рисунок ```xml Штрихкод 1 ``` ## Стили линий Палитра линий для границ ячеек и рисунков. Индексация 0-based. ```xml Solid None ``` | xsi:type | Значения | |-----------------------------------------|-------------| | `v8ui:SpreadsheetDocumentCellLineType` | Solid, None | | `v8ui:SpreadsheetDocumentDrawingLineType` | Solid, None | Атрибут `width` — толщина линии (1 = тонкая, 2 = толстая). ## Шрифты Палитра шрифтов. Индексация 0-based. ```xml ``` ## Форматы Палитра форматов — центральный элемент. **Индексация 1-based** (индекс 0 = формат не задан). ```xml 0 0 1 0 1 24 84 Center Center Wrap Parameter ru ЧЦ=15; ЧДЦ=2 1 ``` Все свойства опциональны. Формат может содержать только `` (для колонки) или только `` (для строки). ### Связь формата с контекстом | Контекст | Ссылка | Значимые свойства формата | |------------------|--------------------|--------------------------| | Колонка | `` | `width` | | Строка | `` | `height` | | Ячейка | `` | Все остальные | | Рисунок | `` | `drawingBorder` | | По умолчанию | `` | `width` | ## Ресурсы картинок ```xml 0 ``` ## Типичная структура макета печатной формы Печатная форма обычно состоит из именованных горизонтальных областей: ``` Заголовок — шапка документа (название, номер, дата) Поставщик — реквизиты поставщика Покупатель — реквизиты покупателя ШапкаТаблицы — заголовок таблицы товаров Строка — строка товара (выводится в цикле) Итого — итоговая строка СуммаПрописью — сумма прописью Подписи — блок подписей ``` Каждая область — диапазон строк, получаемый через `ПолучитьОбласть("Имя")` и выводимый через `Вывести()`. Параметры в ячейках (``) заполняются программно: ```bsl Область = Макет.ПолучитьОбласть("Строка"); Область.Параметры.НомерСтроки = НомерСтроки; Область.Параметры.Товар = СтрокаТЧ.Номенклатура; ТабДок.Вывести(Область); ```