framework/skills/tool-usage/platform-data/xml-generation/mxl-dsl/SKILL.md
xml-gen MXL print forms: compile/edit/info
npx skillsauth add steelmorgan/1c-agent-based-dev-framework mxl-dslInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Компактный JSON-формат для описания табличных документов 1С (SpreadsheetDocument). Claude описывает что (области, ячейки, стили, параметры), CLI обеспечивает корректность XML (палитры, индексы, объединения, namespace).
Канон взят из спецификации Широкова (cc-1c-skills) и расширен флагом --format designer|edt для двух форматов вывода.
| Триггер | Действие |
|---------|----------|
| Создать печатную форму с нуля | mxl compile + JSON DSL → references/dsl-spec.md |
| Доработать существующий макет | mxl decompile → редактирование JSON → mxl compile |
| Понять структуру чужого макета (области, параметры, расшифровки) | mxl info → references/info-modes.md |
| Проверить корректность собранного Template.xml | xml-gen validate --type mxl → references/validate-classes.md |
| Реверс-инжиниринг печати по образцу (скрин/скан) | mxl decompile или собрать с нуля по сетке — задать page + "Nx" ширины |
DSL покрывает статическое оформление ячеек — font/align/valign/border/wrap/format через карту styles. Намеренно НЕ генерирует рантайм-условное оформление: раскраску/стилизацию ячейки в зависимости от выводимого значения. Это делается программно при заполнении таб. документа — Область.ТекстЦвет = …, Область.ЦветФона = … на заполненной области. Отсутствие — дизайн, а не дефект инструмента, см. правило no-manual-xml-edit.md § «Что делается кодом, а НЕ через xml-gen».
# Компиляция JSON → Template.xml
xml-gen mxl compile [--format designer|edt] <input.json> <output.xml>
# Декомпиляция Template.xml → JSON DSL
xml-gen mxl decompile <Template.xml> <output.json>
# Анализ структуры (области, параметры, расшифровки, текст)
xml-gen mxl info <Template.xml> [--with-text] [--limit N] [--offset N] [--format text|json]
# Валидация
xml-gen validate --type mxl <Template.xml> [--detailed] [--max-errors N]
output.xml для compile — путь к макету в EPF/ERF: .../Templates/<Name>/Ext/Template.xml.
--format (только compile):
designer — формат конфигуратора (Template.xml в Ext/)edt — формат EDT (XML внутри .mxl-папки EDT-проекта){
"columns": 4,
"areas": [
{
"name": "Заголовок",
"rows": [
{ "cells": [
{ "col": 1, "span": 4, "text": "Накладная" }
]}
]
}
]
}
| Было (старо) | Стало (канон) |
|--------------|---------------|
| {"text": "[Параметр]"} — параметр через скобки в тексте | {"param": "Параметр"} — отдельный тип ячейки |
| {"text": "Инв № [Номер]"} — параметр в шаблоне через скобки | {"template": "Инв № [Номер]"} — отдельный тип |
| span без col (последовательное заполнение) | col 1-based + span (явное позиционирование) |
| Ширины колонок не задавались | columns + columnWidths + page + "Nx" |
| Сплошные рамки строки — каждая ячейка явно | rowStyle — автозаполнение пустот |
| Только горизонтальное объединение | rowspan (вертикальное) + rowStyle учитывает занятые ячейки |
| Расшифровка не описывалась | detail — параметр расшифровки рядом с param |
| Высота строки не задавалась | height на строке |
| N пустых строк — N объектов {} | { "empty": N } |
Полная спецификация полей (верхний уровень, fonts, styles, areas, rows, cells, fillType-детекция, rowStyle с rowspan, "Nx"-пропорции, форматы 1С ЧДЦ=/ДФ=) — references/dsl-spec.md.
Имена областей из DSL (name) и имена параметров (param) — то, чем BSL обращается к макету:
ТД = ЭтотОбъект.ПолучитьМакет("ПечатнаяФорма");
ТабДок = Новый ТабличныйДокумент;
ОбластьШапка = ТД.ПолучитьОбласть("Заголовок");
ОбластьШапка.Параметры.ТекстЗаголовка = "Накладная № 1";
ТабДок.Вывести(ОбластьШапка);
Для Каждого Стр Из ТЧ Цикл
Строка = ТД.ПолучитьОбласть("Строка");
Строка.Параметры.Товар = Стр.Товар; // detail = Номенклатура подставит ссылку для расшифровки
Строка.Параметры.Количество = Стр.Количество;
Строка.Параметры.Сумма = Стр.Сумма;
ТабДок.Вывести(Строка);
КонецЦикла;
Для пересечений (область Rows + область Columns, например этикетки/ценники) обращение через |:
Область = ТД.ПолучитьОбласть("ВысотаЭтикетки|ШиринаЭтикетки");
default, bold, header, bordered, bordered-right, bold-right, border-top и т.п.) по комбинации свойств — не обязаны совпадать с исходными.rowStyle, а пустые ячейки убираются из вывода.[Имя] в text) выделяются в отдельные ячейки template.page: "A4-landscape" + "Nx" ширины.Write).mxl compile → Template.xml.xml-gen validate --type mxl → если есть ошибки, см. references/validate-classes.md.mxl info → проверить структуру областей и параметров глазами агента.mxl decompile → редактировать → compile.// ❌ статический текст и параметр свалены в одну ячейку через скобки
{ "col": 2, "text": "Инв № [Номер]" }
// ✅ это шаблон с подстановкой → template
{ "col": 2, "template": "Инв № [Номер]" }
// ❌ сплошные рамки строки — каждая пустая ячейка прописана вручную
{ "cells": [
{ "col": 1, "style": "bordered", "param": "А" },
{ "col": 2, "style": "bordered" },
{ "col": 3, "style": "bordered" },
{ "col": 4, "style": "bordered", "param": "Б" }
]}
// ✅ rowStyle автозаполняет пустоты
{ "rowStyle": "bordered", "cells": [
{ "col": 1, "param": "А" },
{ "col": 4, "param": "Б" }
]}
references/dsl-spec.md — полная спецификация полей DSLreferences/info-modes.md — как читать вывод mxl info (типы областей, пересечения, [tpl]-параметры, detail)references/validate-classes.md — классы ошибок валидатора../role-dsl/, ../form-dsl/development
1C server maintenance webhooks: container restart and external component cache cleanup
development
Interactive DAP debugging of a single BSL procedure
tools
Rules for using RLM tools for project search and navigation in 1C/BSL
development
Creates web applications and routes on Winow (a web server on OneScript and Autumn). Use when working with a web server on OneScript, routing, or Winow controllers.