# Спецификация 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 ... ``` Перечисляются только колонки с нестандартной шириной. Формат колонки определяет ширину через свойство `` в палитре форматов. ### Дополнительные наборы колонок Некоторые строки документа могут использовать **собственную сетку колонок**, отличную от основной. Каждый дополнительный набор имеет UUID: ```xml f01e015f-de4c-4f97-9fbe-a244c4c30c6c 17 0 12 ... ``` - Первый `` — основной набор (без ``) - Дополнительные наборы — с `` (UUID), могут иметь другое количество и ширину колонок - Строки, merge и namedItem ссылаются на набор через `` Типичное применение: сложные печатные формы (УПД, УКД), где шапка/подвал/табличная часть имеют разную разбивку на колонки. ## Строки и ячейки ### Строка ```xml 3 5 f01e015f-... 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 f01e015f-... ``` Размер объединения: `(h + 1)` строк × `(w + 1)` колонок. Если `` не указан — объединение в пределах одной строки. `-1` — объединение действует для всех строк, использующих данный набор колонок (аналог объединения колонок на уровне всего документа). ### Отмена объединений `` отменяет вертикальное объединение для конкретной строки: ```xml 10 7 12 ``` Используется в сложных макетах, когда глобальное объединение колонок (`-1`) нужно разорвать в отдельных строках. ## Именованные области Именованные области — аналог «имён» в табличном документе 1С. Используются для программного вывода секций. Получение области: ```bsl // Горизонтальная область (диапазон строк) Область = Макет.ПолучитьОбласть("Заголовок"); // Пересечение горизонтальной и вертикальной областей Область = Макет.ПолучитьОбласть("ВысотаЭтикетки|ШиринаЭтикетки"); ``` Пересечение через `|` типично для этикеток и ценников, где нужна область фиксированного размера (высота × ширина). ### Тип Rows — горизонтальная область ```xml Заголовок Rows 1 4 -1 -1 ``` ### Тип Columns — вертикальная область ```xml ШиринаЭтикетки Columns -1 -1 1 5 ``` ### Тип Rectangle — прямоугольная область Область, ограниченная и по строкам, и по колонкам. Используется с дополнительными наборами колонок: ```xml ОбластьЗаписьДо Rectangle 22 22 5 17 c6cb0794-... ``` ### Привязка к набору колонок Именованные области могут ссылаться на дополнительный набор колонок через ``: ```xml НумерацияЛистов Rows 59 59 -1 -1 0adf41ed-... ``` ### Тип 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 Область = Макет.ПолучитьОбласть("Строка"); Область.Параметры.НомерСтроки = НомерСтроки; Область.Параметры.Товар = СтрокаТЧ.Номенклатура; ТабДок.Вывести(Область); ``` ## Совместимость версий платформы Проведено сравнение выгрузок конфигурации «Бухгалтерия предприятия 3.0» на трёх версиях платформы: 8.3.20, 8.3.24, 8.3.27. ### Template.xml (табличный документ) Содержимое `Template.xml` **побайтно идентично** на всех трёх версиях. Формат табличного документа стабилен — пространства имён, набор тегов и структура не менялись между 8.3.20 и 8.3.27. ### Метаданные (version в MetaDataObject) Атрибут `version` корневого элемента `` в XML-файлах метаданных (`.xml` объектов, форм, макетов): | Платформа | version | |-----------|---------| | 8.3.20 | 2.17 | | 8.3.24 | 2.17 | | 8.3.27 | 2.20 | ### Form.xml (управляемая форма) Содержимое `Form.xml` идентично между 8.3.20 и 8.3.24. Между 8.3.24 и 8.3.27 различается **только** атрибут `version` в корневом элементе `
`: `"2.17"` → `"2.20"`. Пространства имён и структура не изменились. ### BSL-модули Модули на встроенном языке (`ObjectModule.bsl`) полностью идентичны на всех трёх версиях. ### Обратная совместимость Навыки генерируют XML с `version="2.17"`. Сборка EPF через `1cv8.exe` версии 8.3.27 проходит успешно — платформа принимает файлы с более старым номером версии без ошибок. Повышать `version` до `"2.20"` не требуется.