oscript-ui
oscript-ui

Язык узлов

Шесть правил, по которым пишется экран на ките: по коду видно, что встанет на экран, а структур-моделей и склейки строк в нём нет. Разметка на выходе та же, что у сборки по одному узлу.

Как читается экран#

Позицией — то, без чего узел бессмыслен: текст заголовка и кнопки, адрес ссылки, имя и метка поля, вид ряда. Дальше — дети узла. Всё остальное — слова: методы узла, которые возвращают тот же узел и ставятся цепочкой.

Список проектов: заголовок, таблица из данных, форма

Проекты

ИмяУчастниковДействие
альфа3Открыть
Проекты = Новый ТаблицаЗначений; Проекты.Колонки.Добавить("Имя"); Проекты.Колонки.Добавить("Участников"); Проекты.Колонки.Добавить("Действие"); Проект = Проекты.Добавить(); Проект.Имя = Кит.Ссылка("/проекты/альфа", "альфа"); Проект.Участников = 3; Проект.Действие = Кит.Кнопка("Открыть").Вторичная().Малая().Адрес("/проекты/альфа"); HTML = Кит.Холст( Кит.Заголовок(2, "Проекты"), Кит.Таблица(Проекты).Пусто("Проектов пока нет."), Кит.ФормаБезТокена("/проекты/новый", Кит.Поле("имя", "Имя проекта").Пример("например альфа").Обязательное(), Кит.Кнопка("Создать").Основная()).Вид("столбик")).Рендер();

1. Строка на месте узла — текст#

Любая строка там, где ждут ребёнка, — позиционно или в Добавить, — становится узлом Кит.Текст и экранируется. Сырая разметка — по-прежнему только узлом Кит.Готовое(), он на виду у ревью.

Строка экранируется, как Кит.Текст

<p class="muted">Имя <code>&lt;main&gt;</code> уже занято.</p>
HTML = Кит.Примечание("Имя ", Кит.Код("<main>"), " уже занято.").Рендер();

Два исключения. В форму строка не кладётся вовсе: прежде вторым аргументом формы шёл CSRF-токен, и строкой-ребёнком он напечатался бы на экране. Токен задаётся словом .Токен(…), текст в форме — узлом Кит.Текст(). В строгих родах — таблице, записи, списке, свойствах, документе, голове — строка отвергается проверкой вложения: текст в записи не печатается, его кладут в ячейку.

Строка в форме — исключение с подсказкой

Элемент экрана: строка «т0кен-сессии» внутри формы — токен задаётся словом .Токен(…), текст в форму кладите узлом Кит.Текст().

Попытка Кит.Форма("/выход", "т0кен-сессии"); Исключение HTML = Кит.Примечание(КраткоеПредставлениеОшибки(ИнформацияОбОшибке())).Рендер(); КонецПопытки;

2. Позицией обязательное, словом остальное#

Первый аргумент узла — то, без чего он бессмыслен. Всё прочее задают слова с именами полей модели. У кнопки единственный сахар: .Основная() .Вторичная() .Опасная() .Ссылкой() .Малая() .Большая().

Кнопки словами

Отмена
HTML = Кит.Ряд("действия", Кит.Кнопка("Сохранить").Основная().Иконка("сохранить"), Кит.Кнопка("Отмена").Вторичная().Адрес("/проекты"), Кит.Кнопка("Удалить").Опасная().Малая().Имя("операция", "удалить")).Рендер();

Слово, которого компонент не знает, останавливает сборку и перечисляет его слова: опечатка не даст молча кнопку не того вида.

Неизвестное слово — исключение с перечнем слов

Элемент экрана: у компонента «плашка» нет слова «Основная». Его слова: «Вид», «Адрес», «Иконка», «Подсказка», «Снять»; общие — Признак, Роль, Когда.

Попытка Кит.Плашка("готов").Основная(); Исключение HTML = Кит.Примечание(КраткоеПредставлениеОшибки(ИнформацияОбОшибке())).Рендер(); КонецПопытки;

Прежний вход компонента структурой-моделью — Кит.Кнопка(Новый Структура("Подпись, Вариант", …)) — работает как раньше и печатает то же самое; слова дописывают и такую модель. На страницах компонентов модель описана как «прежний вид модели».

3. Дети аргументами#

Каждая фабрика контейнера принимает до восьми детей позиционно; Неопределено пропускается, поэтому условный ребёнок пишется прямо в списке. Девятый и дальше кладутся Добавить, который по-прежнему возвращает ребёнка. Добавить(Неопределено) тоже пропускается и возвращает Неопределено: необязательная часть экрана кладётся без обёртки в Кит.Холст (0.13, дев-сборка 7).

Дети по порядку аргументов

<div class="row-end"><span class="tag">черновик</span>3 участника</div>
HTML = Кит.Ряд("справа", Кит.Плашка("черновик"), Неопределено, "3 участника").Рендер();

Второй холст с аргументами наполняется и возвращает владельца — цепочка продолжается: Раскрывашка.Шапка(…), Запись.Разворот(…), Таблица.Пусто(…), Карточка.Действия(…), Секция.Действия(…). Без аргументов второй холст отдаётся сам, как прежде.

Шапка раскрывашки аргументами

Подробности

Ключ создан вчера.

HTML = Кит.Раскрывашка(Кит.Примечание("Ключ создан вчера.")) .Шапка("Подробности").Вид("врезка").Рендер();

4. Условие словом#

.Когда(Условие) есть у любого узла: ложь печатает пустую строку. Узел остаётся в дереве, и Дерево() показывает его пометкой [скрыт]. У колонки таблицы ложь снимает и заголовок, и ячейки под ним.

Когда: узел есть в дереве, на экране его нет

Новый ключ показан один раз.

холст
  примечание
    текст
  примечание [скрыт]
    текст
Холст = Кит.Холст( Кит.Примечание("Новый ключ показан один раз.").Когда(Истина), Кит.Примечание("Ключей пока нет.").Когда(Ложь)); HTML = Холст.Рендер() + Кит.Код(Холст.Дерево()).Вид("блочный").Рендер();

Условие вычисляется всегда. Там, где вычислять дорого, остаётся Если и Кит.Ничего().

5. Таблица из данных, как в 1С#

Кит.Таблица(Данные) собирает таблицу из таблицы значений или массива структур. Подробно — на странице Таблица деревом.

  • Таблица значений даёт колонки (заголовок колонки, по умолчанию имя) и записи — её строки; ячейка — свойство строки по имени колонки.
  • Массив структур или соответствий даёт записи, а колонки объявляются словом .Колонка(Ключ, Заголовок) в порядке вызовов.
  • Значение ячейки: строка — текст, узел — узел (несколько узлов кладут Кит.Холст(…)), число — без разделителя групп, Неопределено и "" — пустая ячейка. Дату и Булево форматирует экран: кит остановит печать и назовёт колонку.

Таблица из массива структур

УчастникРоль
аннавладелец
борисучастник
Участники = Новый Массив(); Участники.Добавить(Новый Структура("Имя, Роль", "анна", Кит.Плашка("владелец").Вид("accent"))); Участники.Добавить(Новый Структура("Имя, Роль", "борис", "участник")); Таблица = Кит.Таблица(Участники); Таблица.Колонка("Имя", "Участник"); Таблица.Колонка("Роль", "Роль"); HTML = Таблица.Рендер();

6. Секция и дом — тоже узлы#

Дом настроек и его секции — узлы Кит.ДомНастроек и Кит.Секция. Адрес раздела и CSRF-токен задаются один раз у дома; форма внутри берёт их у ближайшего предка: Кит.Форма("", …) уходит на адрес текущего раздела, Кит.Форма("revoke", …) — на раздел/revoke, Кит.Форма("/x", …) — на свой адрес. Форма без токена ни у себя, ни у предков не печатается. Подробно — на странице Дом настроек.

Форма берёт адрес и токен у дома

Настройки

Ключи

Ключи доступа

Дом = Кит.ДомНастроек("Настройки", "/проекты/альфа/настройки", "т0кен", Кит.Секция("Ключи доступа", Кит.Форма("", Кит.Кнопка("Выпустить ключ").Основная()), Кит.Форма("7/revoke", Кит.Кнопка("Отозвать").Опасная().Малая()))); Дом.Раздел("Общее", ""); Дом.Раздел("Ключи", "ключи").Текущий(); HTML = Дом.Рендер();

Тип поля — системой типов#

Тип поля задаётся словом .ТипЗначения(…) значением системы типов OneScript: Тип("Число") печатается полем type=number, Тип("Булево") — флажком, Тип("Дата") — полем даты. ОписаниеТипов с квалификаторами даёт пределы ввода. Строка — прежний тип модели: «email», «url», «пароль», «файл», «многострочное», «выбор». Без явного типа он выводится из значения. Слово называется ТипЗначения, а не Тип: имя «Тип» в OneScript занято самой системой типов. Подробно — на странице Формы деревом.

Тип из описания типов и из значения

<label class="field"><span class="field__label">Сумма</span><input class="field__control" type="number" name="сумма" max="99999.99" step="0.01"></label><label class="field"><span class="field__label">Начало</span><input class="field__control" type="date" name="с" value="2024-03-05"></label><label class="field field--check"><input type="checkbox" class="field__check" name="уведомлять" value="1" checked><span class="field__label">Присылать письма</span></label>
HTML = Кит.Холст( Кит.Поле("сумма", "Сумма").ТипЗначения( Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(7, 2))), Кит.Поле("с", "Начало").Значение(Дата(2024, 3, 5)), Кит.Поле("уведомлять", "Присылать письма").Значение(Истина)).Рендер();

Словарь#

Общие слова любого узла: Вид, Подпись, Подсказка (атрибут title), Якорь (атрибут id), Признак, Роль, Отключить, Скрыть, Когда, Токен; у своих родов — Открыть (раскрывашка), Высота и Ширина (картинка), СФайлами и БезПерезагрузки (форма), БезПодписиВЗаписи и Заглавная (колонка), Копируемое, Секрет и Примечание (свойство). У компонента общие слова с именем поля его модели пишут это поле.

Раскладка и текст#

Узел Рождение Слова
Холст, Ничего Кит.Холст(д…), Кит.Ничего()
Область, Статья, Раскрывашка, Список, Пункт, Свойства (д…) Вид; у раскрывашки Открыть, Шапка(д…)
Ряд Кит.Ряд(Вид, д…)
Группа Кит.Группа(Подпись, д…) Вид
Свойство Кит.Свойство(Имя, д…) Копируемое(Текст), Секрет, Примечание(Текст)
Заголовок Кит.Заголовок(Уровень, д…) Вид
Надпись, Примечание (д…) Вид
Текст Кит.Текст(Строка)
Код Кит.Код(Строка) Вид
Ссылка Кит.Ссылка(Адрес, д…) Вид
Картинка Кит.Картинка(Адрес) Подпись, Вид, Высота, Ширина
Шаблон Кит.Шаблон(Образец, д…)
Документ, Голова, Тело, Шапка, Основное, Подвал, Навигация Кит.Документ(Язык, Тема, д…), остальные (д…) Вид

Таблица и формы#

Узел Рождение Слова
Таблица Кит.Таблица(Данные | д…) Вид, Колонка(Ключ, Заголовок), Пусто(д…), Пустое(Текст) (прочерк пустой ячейки), Разворот(Колонка), БезПерезагрузки (тихая сортировка)
Колонка Кит.Колонка(Подпись) или Таблица.Колонка(…) Вид ("узкая", "число" — по правому краю, цифры одной ширины), БезПодписиВЗаписи, Заглавная, Когда, Сортировка(Адрес, "возр" | "убыв" | ""), Пустое(Текст) (прочерк колонки поверх прочерка таблицы; "" — без него)
Запись, Ячейка (д…) Вид; у записи Разворот(д…)
Форма Кит.Форма(Адрес, д…) Вид, Токен, СФайлами, БезПерезагрузки, Якорь, СПодтверждением(узел | Ид)
ФормаБезСессии, ФормаОтбора, ФормаБезТокена (Адрес, д…) Вид; у формы отбора БезПерезагрузки (тихо и по изменению поля)
Поле Кит.Поле(Имя, Метка) ТипЗначения, Значение, Подсказка, Источник, Пример, Автозаполнение, Ошибка, Обязательное, ТолькоЧтение, Заблокировано, Отмечено, Вариант(Значение, Подпись), Ид, Многострочное, Секрет, Файл, Список, Цвет, Образец(Цвет, Имя), ОбразцыТемы (палитра акцента кита), СкрытаяМетка; проверка до отправки — Пределы(Мин, Макс), Длина(Мин, Макс), Шаблон(Образец), ПроверкаНаСервере(Адрес), ПроверкаДоОтправки
СкрытоеПоле Кит.СкрытоеПоле(Имя, Значение)
Тумблер Кит.Тумблер(Имя, Метка) Включено, Подсказка, СохранятьСразу, Заблокировано, Значения(Вкл, Выкл), Подписи(Вкл, Выкл), Источник, Справка
Шаги Кит.Шаги(д…) из Кит.Шаг(Подпись, д…) у шагов Вид("вкладки"), Кнопка(Подпись | узел), Подпись; у шага Текущий, Когда
Сегменты Кит.Сегменты(Имя, д…) из Кит.Сегмент(Значение, Подпись, д…набор) у сегментов Выбрано(Значение), Подпись, Малые, СохранятьСразу, Источник(Текст) (откуда значение — справа на строке подписи группы), Якорь, Панель(Номер, д…) (новый узел — панель вне набора); у сегмента Выбран, Когда
ПанельСегмента Кит.ПанельСегмента(ИмяСегментов, Номер, д…) область той же формы, видная по сегменту номер Номер (с 1) или со значением Номер (строка); дети — содержимое (0.13, дев-сборка 7)
Справка поля Кит.Поле(Имя, Метка).Справка(Текст) длинное пояснение значком «?» с поповером рядом с подписью; Подсказка остаётся строкой под полем
Подсказка Кит.Подсказка(Текст) Подпись (имя значка), Якорь (идентификатор поповера)
ПанельСохранения Кит.ПанельСохранения(Подпись) Пояснение, АдресОтмены, Опасное, Иконка, Заблокирована, Имя(Имя, Значение)

Компоненты#

Узел Рождение Слова
Кнопка Кит.Кнопка(Подпись) Основная, Вторичная, Опасная, Ссылкой, Малая, Большая, БезОтправки (в форме не отправляет её: type="button"; прежнее имя — Обычная), Иконка, ТолькоИконка, Адрес, Имя(Имя, Значение), БезВалидации, АдресОтправки, ВНовойВкладке, ВФорме(Якорь), Заблокирована, Занята, Подсказка, ВоВсюШирину, Текущая, Команда(Команда, Цель), Открывает(Окно | Ид), Счётчик(Число, Подпись), ЗнакРаскрытия, Картинка
Плашка Кит.Плашка(Текст) или Кит.Плашка(д…) Вид, Адрес, Иконка, Подсказка
Карточка Кит.Карточка(Заголовок, д…) Адрес, Описание, Иконка, Уровень, Якорь, Действия(д…)
ОпаснаяЗона Кит.ОпаснаяЗона(Заголовок, д…) Пояснение, Подтверждение(Имя, Образец, Метка, Подсказка), Кнопка(Подпись)
ШапкаОбъекта Кит.ШапкаОбъекта(Имя, д…действия) Иконка, Описание, Подпись, Вид, Знак(Иконка, Подпись), Мета(Подпись, Значение, Значок, Адрес), Плашка(узел | текст), Команда(Текст)
ЗаголовокСтраницы Кит.ЗаголовокСтраницы(Заголовок) Пояснение, Уровень
БлокКоманды Кит.БлокКоманды(Команда) Подпись, Пояснение, БезКопирования
Пагинация Кит.Пагинация(Основа, Страница, ВсегоСтраниц) ЕстьСледующая, Параметр, Параметры(Имя, Значение), ПодписьНазад, ПодписьВперёд, Заголовок, Всего(Число), НаСтранице(Число), БезПерезагрузки
СтрокаПоиска Кит.СтрокаПоиска(Действие) Имя, Метка, Значение, Пример, Кнопка(Подпись, Иконка) (без неё — значок поиска внутри поля), СкрытоеПоле(Имя, Значение), Поле(узел поля), БезПерезагрузки, СкрытаяМетка
Табы Кит.Табы(д…) из Кит.Вкладка(Подпись, Адрес) у вкладки Активна, Иконка, Счётчик; у табов Заголовок
Крошки Кит.Крошки(д…) из Кит.Крошка(Подпись, Адрес = "") у крошек Подпись (имя навигации)
Меню Кит.Меню(Подпись, д…) из Кит.ПунктМеню(Подпись, Адрес) и форм Иконка, Аккаунт, Счётчик(Число, Подпись); у пункта Иконка
Реестр Кит.Реестр(д…) из Кит.ЗаписьРеестра(Имя, д…тело) у реестра Нумерованный, Пусто(текст | д…), Подпись; у записи Значок, Картинка, Плашка(узел | текст), Подпись, Факт(Подпись, Значение, Вид), Номер, Открыть, Действия(д…), Кнопки(д…)
Сводка Кит.Сводка(Название) Подпись (повторная — ещё часть через « · »), Знак(узел | текст), Сведение(Подпись, Значение, Вид)
Сетка Кит.Сетка(д…) Колонки, Плотная, ПолныеРяды (у 3 и 4 колонок — только полные ряды на каждой ширине), Заголовок
ПустоеСостояние Кит.ПустоеСостояние(Пояснение) Заголовок, Иконка, Действие(узел кнопки), Компактное
Плитка Кит.Плитка(Значение, Подпись) Пояснение, Адрес, Иконка, Вид
Иконка Кит.Иконка(Имя) Подпись
Уведомление Кит.Уведомление(Текст) Вид, Заголовок, Закрываемый, Тревога
ПолосаЗаполнения Кит.ПолосаЗаполнения(Процент, Метка) Метка, Подпись, Вид, Компактная
ДеревоГалок Кит.ДеревоГалок(Узлы) или прежний вид модели Подпись, Узел; дерево на тысячу пунктов (0.13): Адрес, Поиск, Режимы, ТолькоПравки; ответы сервера: Найдено, Ветка
ПолеИзКонфига, Проводник, ДеревоРазделов, СтраницаОшибки прежний вид модели Метка, Значение, Подсказка, Секрет у поля из конфига; Заголовок у дерева разделов
РядПлашек, РядМеты прежний вход списком

Окна#

Узел Рождение Слова
Окно Кит.Окно(Заголовок, д…тело) Лид, Действия(д…) — второй холст, Вид (обычное | опасное | широкое), Широкое, ВоВесьЭкран, Открыто, Якорь, Форма(Адрес), БезПерезагрузки, Токен, СФайлами
Подтверждение Кит.Подтверждение(Заголовок, Последствия, д…) Эхо(Имя, Образец, Метка, Подсказка), Кнопка(Подпись), Ошибка(Текст), Форма(Адрес), Открыто, Якорь, БезПерезагрузки
ОкноПоАдресу Кит.ОкноПоАдресу(Адрес, Подпись) Основная, Вторичная, Опасная, Ссылкой, Малая, Большая, Иконка, ТолькоИконка, Подсказка
ОболочкаОкна Кит.ОболочкаОкна(Всегда) — (печатает каркас страницы)

Любой узел: Фокус() — признак data-focus, на него скрипт ставит фокус, когда форма окна ушла удачно.

Картинка и образец (0.12)#

Узел Рождение Слова
СлотКартинки Кит.СлотКартинки(Имя, Подпись) Адрес(ТекущаяКартинка), Состояние(Текст), Принимает(Типы), КнопкаЗагрузки(Подпись), Сброс(Адрес), Открыто, Ошибка(Текст) (отказ сервера под строкой состояния), Форма(Хвост), Якорь, Токен
Образец Кит.Образец(Подпись, д…) Тема("светлая" | "тёмная"), Якорь, Зеркало

Узел со своим тегом: Зеркало(ИмяПоля, Цвет) — признак data-mirror, скрипт пишет в узел текущее значение поля при вводе, цвет — в свойство CSS --mirror-<имя>. Имя поля — без точки (буквы, цифры, «-», «_»). Зеркало поля accent в образце перекрашивает узлы кита внутри узла сам.

Узел со своим тегом и компонент: ЗеркалоПризнаком(ИмяПоля, Значение) — значение поля (сегмент, радиокнопка, список, текст) в признаке data-mirror-<имя> узла (у компонента — на его первом теге), список имён — data-mirrors; сервер печатает текущее значение, скрипт переписывает при выборе. Текст и --mirror-* не трогает; вид по признаку задаёт лист приложения (0.13, дев-сборка 7).

Каркас настроек#

Узел Рождение Слова
Дом Кит.ДомНастроек(Заголовок, Адрес, Токен, д…секции) Ключ, Объект, Пояснение, Крошка(Подпись, Адрес), Уведомление(узел | текст), Рубрика(Подпись) (разделы после неё — под ней), Раздел(Подпись, Ключ, Иконка)
Раздел Дом.Раздел(…) Текущий, Опасный, Счётчик(Число, Подпись) (число у пункта единого меню)
Секция Кит.Секция(Заголовок, д…) Лид, Иконка, Форма(Хвост), Кнопка(Подпись), ИконкаКнопки, ИмяКнопки(Имя, Значение), ПояснениеПанели, АдресОтмены, Опасная, Заблокирована, БезПанели, СФайлами, Свёрнута(ПодписьРаскрытия), Раскрыта, Якорь, Действия(д…) — второй холст

Прежний вид — подсказкой#

Где второй аргумент прежде был видом, а теперь там ребёнок-текст, строка-вид стала бы видимым словом на экране. Поэтому строка, совпавшая с видом рода, при рождении узла останавливает сборку подсказкой: «вид теперь задаётся словом .Вид(…)».

Кит.Область("полоса") — прежний вызов, исключение с подсказкой

Кит: «полоса» на месте ребёнка Кит.Область — это вид узла, а вид теперь задаётся словом .Вид(…): строка на месте ребёнка печатается текстом. Было Кит.Область(…, "полоса"), стало Кит.Область(…).Вид("полоса").

Попытка Кит.Область("полоса"); Исключение HTML = Кит.Примечание(КраткоеПредставлениеОшибки(ИнформацияОбОшибке())).Рендер(); КонецПопытки;

Гайдлайны#

Срок действия

От 1 до 90 дней.

ДелайтеДети аргументами, настройка словами: экран читается сверху вниз
Код
HTML = Кит.Группа("Срок действия",
	Кит.Поле("срок", "Дней").ТипЗначения("число").Значение(30).Обязательное(),
	Кит.Примечание("От 1 до 90 дней.")).Рендер();
Срок действия

От 1 до 90 дней.

Не делайтеСтруктура-модель и Добавить по одному: что на экране, видно не сразу
Код
Группа = Кит.Группа("Срок действия");
Группа.Добавить(Кит.Поле(Новый Структура("Имя, Метка, Тип, Значение, Обязательное",
	"срок", "Дней", "число", "30", Истина)));
Группа.Добавить(Кит.Примечание()).Добавить(Кит.Текст("От 1 до 90 дней."));
HTML = Группа.Рендер();

Ключи

Ключей пока нет.

ДелайтеУсловие словом Когда, пока вычислять дёшево
Код
ЕстьКлючи = Ложь;
HTML = Кит.Холст(
	Кит.Заголовок(2, "Ключи"),
	Кит.Примечание("Ключей пока нет.").Вид("пусто").Когда(НЕ ЕстьКлючи)).Рендер();
Не делайтеКогда над дорогим вычислением: оно случится, даже если узел снят
Код
ПоказатьОтчёт = Ложь;
Строки = Новый Массив();
Для Номер = 1 По 100 Цикл
	Строки.Добавить(Новый Структура("Номер", Номер));
КонецЦикла;
Отчёт = Кит.Таблица(Строки);
Отчёт.Колонка("Номер", "№");
HTML = Кит.Холст(Отчёт.Когда(ПоказатьОтчёт)).Рендер();

Справка#

ЭлементЭкрана.Наполнить()src/Классы/холст/ЭлементЭкрана.os

Кладёт внутрь до восьми элементов разом, по порядку. Неопределено пропускается: так
условный ребёнок пишется прямо в списке, а девятый и дальше кладутся Добавить().

Параметры:
 Р1 - ЭлементЭкрана, Строка, Неопределено - (необязательный) первый ребёнок; строка — текст.
 Р2 - ЭлементЭкрана, Строка, Неопределено - (необязательный) второй, и так до Р8.
 Р3 - ЭлементЭкрана, Строка, Неопределено - (необязательный)
 Р4 - ЭлементЭкрана, Строка, Неопределено - (необязательный)
 Р5 - ЭлементЭкрана, Строка, Неопределено - (необязательный)
 Р6 - ЭлементЭкрана, Строка, Неопределено - (необязательный)
 Р7 - ЭлементЭкрана, Строка, Неопределено - (необязательный)
 Р8 - ЭлементЭкрана, Строка, Неопределено - (необязательный)

Возвращаемое значение:
 ЭлементЭкрана - этот же элемент.

ЭлементЭкрана.Когда()src/Классы/холст/ЭлементЭкрана.os

Печатает узел только при условии. Ложь печатает пустую строку, но узел остаётся
в дереве (Дерево() показывает его пометкой [скрыт]); у колонки таблицы ложь снимает
и заголовок, и ячейки под ним. Условие вычисляется всегда: там, где вычислять дорого,
пишите Если и Кит.Ничего().

Параметры:
 Условие - Булево - печатать ли узел.

Возвращаемое значение:
 ЭлементЭкрана - этот же элемент.

ЭлементЭкрана.Вид()src/Классы/холст/ЭлементЭкрана.os

Вид узла — значение из закрытого набора его рода; проверяется так же, как при рождении.
У компонента пишет поле Вид его модели.

Параметры:
 Значение - Строка - вид.

Возвращаемое значение:
 ЭлементЭкрана - этот же элемент.

ЭлементЭкрана.Токен()src/Классы/холст/ЭлементЭкрана.os

CSRF-токен сессии для форм внутри узла: форма ищет его у себя и дальше вверх по предкам,
поэтому на экране он задаётся один раз — у дома настроек или у корня экрана.

Параметры:
 Значение - Строка - токен.

Возвращаемое значение:
 ЭлементЭкрана - этот же элемент.

ЭлементЭкрана.ТипЗначения()src/Классы/холст/ЭлементЭкрана.os

Тип значения поля — системой типов OneScript: Тип("Число") печатается полем type=number,
Тип("Булево") — флажком, Тип("Дата") — type=date, Тип("Строка") — текстом. ОписаниеТипов
с квалификаторами даёт пределы: КвалификаторыЧисла — step и max, КвалификаторыСтроки —
maxlength, КвалификаторыДаты — date, datetime-local или time. Строка («email», «url»,
«пароль», «файл», «многострочное», «выбор», «флажок», «число», «текст») — прежний Тип
модели. Явный тип старше выведенного из Значения. Слово называется ТипЗначения, потому
что имя «Тип» в OneScript занято самой системой типов.

Параметры:
 Значение_ - Тип, ОписаниеТипов, Строка - тип значения.

Возвращаемое значение:
 ЭлементЭкрана - этот же элемент.