本文へ移動
cccskills
無料GitHub で公開

mxl-compile

Компиляция табличного документа (MXL) из JSON-определения. Используй когда нужно создать макет печатной формы

インストール方法を見る

含まれるファイル(10)

  • SKILL.md12.9 KB
  • reference/drawings.md5.1 KB
  • reference/groups.md1.3 KB
  • reference/input-cells.md3.2 KB
  • reference/layout.md4.8 KB
  • reference/notes.md1.9 KB
  • reference/print.md3.2 KB
  • reference/style-properties.md4.9 KB
  • scripts/mxl-compile.ps1129.3 KB
  • scripts/mxl-compile.py139.1 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

/mxl-compile — Компилятор макета из DSL

Принимает компактное JSON-определение макета (области, параметры, стили) → генерирует Template.xml табличного документа 1С: палитры, индексы, объединения, namespace.

Использование

/mxl-compile <JsonPath> <OutputPath>

Параметры

ПараметрОбязательныйОписание
JsonPathдаПуть к JSON-определению макета
OutputPathдаПуть для генерации Template.xml

Команда

powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/mxl-compile.ps1" -JsonPath "<путь>.json" -OutputPath "<путь>/Template.xml"

Рабочий процесс

  1. Написать JSON-определение (Write tool) → файл .json
  2. Вызвать /mxl-compile для генерации Template.xml
  3. Вызвать /mxl-validate для проверки корректности
  4. Вызвать /mxl-info для верификации структуры

Если макет создаётся по изображению (скриншот, скан печатной формы) — сначала вызвать /img-grid для наложения сетки, по ней определить границы колонок и пропорции, затем использовать "Nx" ширины + "page" для автоматического расчёта размеров.

Что читать под задачу

Ниже — всё, что нужно для типового макета. Остальное лежит по файлу на задачу, читать нужно только свой:

ЗадачаКлючиФайл
Свойство стиля вне частых: отступ, защита, узор, маска, поведение при выводе—reference/style-properties.md
Область, не описываемая диапазоном строк; свои ширины колонок у части документаnamedAreas, columnSets, columnSetreference/layout.md
Колонтитулы, ориентация, поля, масштабheader, footer, printSettingsreference/print.md
Картинка, фигура или надпись поверх сетки; картинка в ячейкеpictures, drawings, pictureParameterreference/drawings.md
Ячейки для ввода данных пользователемvalueType, controlType, valuereference/input-cells.md
Сворачиваемые группы строк или колонокrowGroups, columnGroupsreference/groups.md
Всплывающая подсказка у ячейкиnotereference/notes.md

Пример

{
  "columns": 5,
  "columnWidths": { "1": 5, "2": 40, "3-5": 12 },
  "fonts": { "жирный": { "face": "Arial", "size": 10, "bold": true } },
  "styles": {
    "шапка":  { "font": "жирный", "horizontalAlignment": "Center", "textPlacement": "Wrap", "border": "Solid" },
    "клетка": { "border": "Solid" },
    "число":  { "border": "Solid", "horizontalAlignment": "Right", "format": "ЧЦ=15; ЧДЦ=2" },
    "итог":   { "font": "жирный", "horizontalAlignment": "Right", "topBorder": "Solid" }
  },
  "areas": [
    { "name": "Заголовок", "rows": [
      { "height": 20, "cells": [{ "col": 1, "span": 5, "style": "шапка", "param": "ЗаголовокОтчёта" }] },
      {}
    ]},
    { "name": "ШапкаТаблицы", "rows": [
      { "rowStyle": "шапка", "cells": ["№", "Номенклатура", "Количество", "Цена", "Сумма"] }
    ]},
    { "name": "Строка", "rows": [
      { "rowStyle": "клетка", "cells": [
        { "col": 1, "param": "НомерСтроки" },
        { "col": 2, "param": "Товар", "detail": "Номенклатура" },
        { "col": 3, "style": "число", "param": "Количество" },
        { "col": 4, "style": "число", "param": "Цена" },
        { "col": 5, "style": "число", "param": "Сумма" }
      ]}
    ]},
    { "name": "Итого", "rows": [
      { "rowStyle": "итог", "cells": [null, null, null, "Итого:", "{Всего}"] }
    ]}
  ]
}

Шапка таблицы и итог записаны позиционно — позиция берётся из порядка, col не нужен; строка таблицы записана ячейками с col, потому что у них разные стили и расшифровка.

Структура DSL

{ columns, page, defaultWidth, columnWidths, columnStyles, textLanguages,
  fonts:  { имя: { face, size, bold, italic, underline, strikeout } | { ref } },
  styles: { имя: { font, horizontalAlignment, verticalAlignment, textPlacement,
                   border, leftBorder, topBorder, rightBorder, bottomBorder,
                   borderColor, backColor, textColor, format } },
  areas: [{ name, columnSet, rows: [
    { height, hidden, rowStyle, empty, cells: [
      { col, span, rowspan, style, param, detail, text, template, note,
        valueType, controlType, value, pictureParameter } ] } ] }],
  namedAreas, columnSets, rowGroups, columnGroups, header, footer, printSettings,
  pictures, drawings
}

Верхний уровень: columns обязателен, остальное по необходимости.

КлючОписание
columnsКоличество колонок раскладки по умолчанию
pageФормат страницы: "A4-landscape" (780), "A4-portrait" (540) или число. Сам вычисляет defaultWidth из суммы пропорций "Nx"
defaultWidthШирина колонок по умолчанию (10)
columnWidthsШирины: ключи 1-based ("1", "3-14", "5,7,9"), значение — число или "2x" (доля от defaultWidth)
columnStylesСтиль на колонку целиком: те же ключи диапазонов, значение — имя стиля
textLanguagesЯзыки, на которые разворачивается текст, заданный строкой (по умолчанию ["ru"])
areasОбласти — диапазоны подряд идущих строк, в порядке документа

Области, строки, ячейки

Область (areas[]) — диапазон подряд идущих строк: name (необязательно; с именем область доступна как Макет.ПолучитьОбласть("Имя")) и rows. Область без имени — просто кусок сетки.

Строка (rows[]): height, hidden, rowStyle, cells. Пустая строка — {}, а { "empty": 3 } заменяет три подряд. height и hidden — свойства самой строки, у ячейки таких нет.

Ячейка (cells[]):

КлючОписание
colПозиция колонки, 1-based
span / rowspanОбъединение вправо / вниз
styleИмя стиля; перекрывает rowStyle для этой ячейки
paramПараметр заполнения — Область.Параметры.Имя = …
textСтатический текст: строка или объект «язык → текст»
templateТекст со вставками [Параметр]
detailПараметр расшифровки; ставится и без param

Содержимое задаётся ровно одним ключом из param / text / template; ячейка без них — пустая (нужна, например, ради рамки). Пустая строка "text": "" — это тоже текст, а не отсутствие текста.

Короткая форма: список ячеек позиционно

Позиция берётся из порядка, col не нужен:

ЭлементЗначение
"текст"Статический текст
{ "ru": "…", "en": "…" }Тот же текст на нескольких языках
"{Имя}"Параметр заполнения
">"Продолжение ячейки слева — увеличивает её span
`""`
nullПропуск колонки
{ … }Обычная ячейка без col — когда нужны style, detail, template
"rows": [
  ["Вид", "Остаток", ">", "Итог"],
  ["|",   "начало",  "конец", "|"],
  ["{Вид}", "{Нач}", "{Кон}", "{Итог}"]
]

Здесь «Вид» и «Итог» объединены по вертикали, «Остаток» — по горизонтали на две колонки.

Позиционный список — это форма записи ЯЧЕЕК, а не строки. Если у строки нет своих свойств, он и есть строка (как в примере выше). Если нужны height, hidden или rowStyle — тот же список кладётся в cells:

{ "rowStyle": "итог", "cells": [null, null, null, "Итого:", "{Всего}"] }

rowStyle — оформление строки

Стиль ложится на ВСЮ ширину строки: колонки без явных ячеек получают его тоже — так выходят сплошные рамки в табличной части. Он же становится оформлением самой строки. Ячейки с rowspan из предыдущих строк при этом пропускаются.

Оформление

Ячейка, строка и колонка ссылаются на один и тот же именованный стиль: ячейка — ключом style, строка — rowStyle, колонка — через columnStyles.

Шрифт (fonts.<имя>): face (Arial), size (10), bold, italic, underline, strikeout. Либо ссылка вместо описания: { "ref": "style:TextFont" }, { "ref": "sys:DefaultGUIFont" }. Шрифт "default" берётся, когда стиль не указал свой.

Частые ключи стиля — имя ключа совпадает с именем свойства в выгрузке, значения перечислений регистр не различают:

КлючЗначение
fontИмя из fonts
horizontalAlignmentLeft, Center, Right, Justify, Auto
verticalAlignmentTop, Center, Bottom
textPlacementДлинный текст: Wrap (перенос), Cut (обрезать), Block, Auto
borderРамка со всех сторон
leftBorder, topBorder, rightBorder, bottomBorderОтдельная сторона
borderColorЦвет рамки
backColor, textColorЦвет фона и текста
formatФормат данных 1С: "ЧЦ=15; ЧДЦ=2", "ДФ=dd.MM.yyyy"

Рамка: "Solid" (ширина 1) либо { "style": "Solid", "width": 2 }. Стили линии: None, Solid, Dotted, Dashed, DashDotted, DashDottedDotted, ThinDashed, LargeDashed, ThickDashed, Double. Стороны можно задавать по отдельности всегда: совпавшие четыре компилятор свернёт сам.

Цвет — нотация платформы: #RRGGBB, style:ИмяСтиля (элемент стиля конфигурации), web:Имя, win:Имя. Несуществующее имя платформа отвергнет при загрузке.

"styles": {
  "шапка":  { "font": "жирный", "horizontalAlignment": "Center", "backColor": "#EBEBEB" },
  "рамка":  { "border": { "style": "Solid", "width": 2 } },
  "снизу":  { "bottomBorder": "Dotted" }
}

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

cf-edit

無料

Точечное редактирование конфигурации 1С. Используй когда нужно изменить свойства конфигурации, добавить или удалить объект из состава, настроить роли по умолчанию, поменять раскладку панелей, настроить начальную страницу

日本語の概要は準備中です。原文の説明を表示しています。

Nikolay-Shirokov/cc-1c-skills6832026年10月12日 更新

cf-info

無料

Анализ структуры конфигурации 1С — свойства, состав, счётчики объектов. Используй для обзора конфигурации — какие объекты есть, сколько их, какие настройки

日本語の概要は準備中です。原文の説明を表示しています。

Nikolay-Shirokov/cc-1c-skills6832026年10月12日 更新

cf-init

無料

Создать пустую конфигурацию 1С (scaffold XML-исходников). Используй когда нужно начать новую конфигурацию с нуля

日本語の概要は準備中です。原文の説明を表示しています。

Nikolay-Shirokov/cc-1c-skills6832026年10月12日 更新

Валидация конфигурации 1С. Используй после создания или модификации конфигурации для проверки корректности

日本語の概要は準備中です。原文の説明を表示しています。

Nikolay-Shirokov/cc-1c-skills6832026年10月12日 更新

Заимствование объектов из конфигурации 1С в расширение (CFE). Используй когда нужно перехватить метод, изменить форму или добавить реквизит к существующему объекту конфигурации

日本語の概要は準備中です。原文の説明を表示しています。

Nikolay-Shirokov/cc-1c-skills6832026年10月12日 更新

cfe-diff

無料

Анализ расширения конфигурации 1С (CFE) — состав, заимствованные объекты, перехватчики, проверка переноса. Используй когда нужно понять что содержит расширение или проверить перенесены ли вставки в конфигурацию

日本語の概要は準備中です。原文の説明を表示しています。

Nikolay-Shirokov/cc-1c-skills6832026年10月12日 更新

Nikolay-Shirokov のスキルをすべて見る

このスキルの問題を報告する