mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-19 17:50:23 +03:00
Каскад повторял спецификацию: 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 переехало то, что относится к чтению чужого макета, а не к авторингу: пересборка — полная перегенерация, побайтового совпадения ждать не всегда стоит, и перечень конструкций, которые цикл не переживают.
49 lines
3.2 KiB
Markdown
49 lines
3.2 KiB
Markdown
# Ячейки-поля ввода
|
|
|
|
Ячейка может не показывать текст, а принимать значение от пользователя — так делают макеты для
|
|
ввода данных. Достаточно задать тип значения:
|
|
|
|
```json
|
|
{ "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чч:мм:сс` и читается
|
|
как дата у ячейки, объявленной датой; у ссылочного и составного типа значение — строка.
|
|
|
|
```json
|
|
{ "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`. Флажок задаётся явно.
|