Files
cc-1c-skills/.claude/skills/mxl-compile/reference/input-cells.md
T
Nick Shirokov 93ced4b239 docs(mxl-compile,mxl-decompile): каскад инструкций — файл на задачу
Каскад повторял спецификацию: reference/dsl-spec.md был её копией, а styles
и format-properties — копиями двух других файлов документации. Модель, чтобы
что-то сделать, читала спеку целиком.

Теперь в SKILL.md лежит то, что нужно почти всегда: компактный пример
печатной формы, структура DSL, области, строки, ячейки с короткой формой,
rowStyle и оформление из десяти частых ключей. Остальное — по файлу на
задачу: layout, print, drawings, input-cells, groups, notes,
style-properties, каждый 26-81 строка; читать нужно только свой.

Состав ядра выбран по частоте в обычных макетах (корпус без регламентированной
отчётности, которая перекашивала статистику): шрифт 93%, выравнивание 88/87%,
размещение текста 86%, рамки 57-72%, формат 52%; поля ввода и группы, наоборот,
оказались редкими — 7%.

В mxl-decompile переехало то, что относится к чтению чужого макета, а не
к авторингу: пересборка — полная перегенерация, побайтового совпадения ждать
не всегда стоит, и перечень конструкций, которые цикл не переживают.
2026-08-17 12:51:53 +03:00

3.2 KiB

Ячейки-поля ввода

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

{ "col": 1, "valueType": "Number(15,3,nonneg)" }
{ "col": 2, "valueType": "String(10)" }
{ "col": 3, "valueType": "Boolean", "controlType": "checkbox" }
{ "col": 4, "valueType": "CatalogRef.Валюты" }
{ "col": 5, "valueType": "Boolean + String + Date + CatalogRef.Валюты" }
{ "col": 6, "valueType": "AnyRef" }

Грамматика типа:

Запись Значение
Boolean булево
String, String(10), String(10,fixed) строка; без длины — неограниченная, fixed — фиксированной длины
Number, Number(15,3), Number(15,3,nonneg) число; без параметров — без ограничения разрядности, nonneg — неотрицательное
Date, DateTime, Time дата, дата со временем, время
CatalogRef.Валюты, DocumentRef.Реализация, EnumRef.Статусы, DefinedType.Сумма ссылочный тип
CatalogRef, DocumentRef, AnyRef категория целиком: любая ссылка этого вида
A + B составной тип; повтор одного примитива недопустим

Русские имена принимаются наравне с английскими: Число(15,3), Строка(10), СправочникСсылка.Валюты.

text и template в такой ячейке недопустимы — платформа не показывает текст там, где вводится значение. param и detail допустимы: они описывают заполнение и расшифровку, а не содержимое.

Пустой тип "valueType": "" — «ячейка содержит значение», но тип не ограничен.

Значение поля ввода задаётся ключом value. Его тип — тип литерала JSON: строка, число, true/false; к объявленному типу ячейки значение не приводится. Пустая строка означает пустое значение объявленного типа. Дата пишется строкой ГГГГ-ММ-ДДTчч:мм:сс и читается как дата у ячейки, объявленной датой; у ссылочного и составного типа значение — строка.

{ "col": 1, "valueType": "Number(15,3)", "value": 12.5 }
{ "col": 2, "valueType": "String(10)", "value": "5" }
{ "col": 3, "valueType": "Boolean", "value": true }
{ "col": 4, "valueType": "DateTime", "value": "" }

controlType нужен редко: умолчание платформы — поле ввода, и оно подходит всем типам, включая Boolean. Флажок задаётся явно.