Qform DSL knowledge base

<elements> ×1473 в коде

Структура: форма

Все элементы формы: поля, html-вставки, группы полей (fieldset) и прочее необходимо оборачивать в этот тег. Без этого работать не будет.

Кроме того, тег полезен тем, что в нём можно перечислять атрибуты, которые будут наследованы всеми дочерними элементами. Это удобно, например, когда необходимо задать ширину для всех полей формы сразу.

Также внутрь можно засунуть condition, который будет добавлен ко всем полям.

Тег используется внутри тегов: form (если нет вкладок), header, tab и footer.

Может содержать 22

ТегОписаниеВключений здесь
Поля ввода 2 · включений здесь: 5 137
<field> Поле для ввода информации в форму. 5048
<condition> Условие отображения/применимости элемента (зависит от значения другого поля) 89
Оформление (HTML) 2 · включений здесь: 855
<html> HTML-блок: alert-сообщение, информационный блок или произвольная разметка в форме 721
<hr> HTML <hr> — горизонтальная линия-разделитель в форме 134
Текст/заголовки 2 · включений здесь: 314
<legend> Легенда списка — описание цветов/иконок, используемых в столбцах 167
<text> Текстовый блок: либо контейнер заголовков (внутри list/form), либо самостоятельный текст в форме 147
Структура: список 1 · включений здесь: 156
<list> Можно использовать <list> не только как embedded во вкладке, но и как полную замену списка модуля… 156
Структура: форма 2 · включений здесь: 147
<fieldset> Вложенный набор записей (one-to-many или M2M через дочернюю таблицу) 143
<elements> Все элементы формы: поля, html-вставки, группы полей (fieldset) и прочее необходимо оборачивать в… 4
SQL/обработка 8 · включений здесь: 111
<finishsql> Финализирующий SQL — выполняется после store/delete (для пересчётов/триггеров на стороне приложения) 85
<onchange> Обработчик изменения поля: do=update обновляет связанные элементы, do=js — JS-выражение 23
<mod> Подгружает значение поля из SQL: 2
<php> PHP-блок (выполняется на сервере) — onsuccess/store/beforestore/ondeleted 1
<javascript> не везде JS-блок, выполняющийся в браузере (onsuccess/afterinit/presubmit/update/ondeleted/onerror)
<sqlfordefault> не везде SQL для расчёта default поля
<sqlforupdate> не везде Альтернатива записи в основную таблицу — выполнить произвольный SQL:
<sqlforvalue> не везде SQL для расчёта value поля
Кнопки/действия 1 · включений здесь: 75
<button> Кнопка действия (открыть форму, выполнить SQL/JS/PHP-блок) 75
Структура: БД 1 · включений здесь: 2
<table> Имя SQL-таблицы (с опциональным database, impl-delete, name) 2
Метаданные 1 · включений здесь: 1
<properties> Контейнер свойств элемента (для расширяемых атрибутов) 1
Отчёты 1 · включений здесь: 0
<tab> не везде Описание вкладки (tab) формы — группа элементов на отдельной странице
Параметры 1 · включений здесь: 0
<param> не везде Один параметр, передаваемый в дочернюю форму/модуль/список

Может встречаться внутри 8

ТегОписаниеВключений здесь
Структура: форма 3 · включений здесь: 802
<form> Основной тэг формы. В нём описываются вкладки и поля формы.… 636
<fieldset> Вложенный набор записей (one-to-many или M2M через дочернюю таблицу) 162
<elements> Все элементы формы: поля, html-вставки, группы полей (fieldset) и прочее необходимо оборачивать в… 4
Отчёты 1 · включений здесь: 505
<tab> Описание вкладки (tab) формы — группа элементов на отдельной странице 505
Текст/заголовки 3 · включений здесь: 59
<header> Header-блок печатной/excel-формы отчёта 49
<footer> Footer-блок печатной/excel-формы отчёта 6
<text> Текстовый блок: либо контейнер заголовков (внутри list/form), либо самостоятельный текст в форме 4
Структура: список 1 · включений здесь: 0
<list> не везде Можно использовать <list> не только как embedded во вкладке, но и как полную замену списка модуля…

Атрибуты 9

АтрибутОписаниеЗначения
Размеры 2 · включений: 301
width
×267

Общая ширина блока элементов формы в пикселях

500956600550670450
size
×34

Размер input/textarea по умолчанию для всех полей блока

774561607055
Числовые форматы 1 · включений: 99
null
×99

Разрешить null-значения для всех полей блока (1=допустимы пустые, 0=обязательны к заполнению)

01
Поведение/валидация 2 · включений: 79
readonly
×54

Условие read-only для всех полей блока (значение или {{выражение}})

_qscript_1
donotquery
×25

Не загружать данные из БД (1) — форма создаётся пустой; используется в формах-обёртках/мастерах

10_qscript_
(без группы) 2 · включений: 17
ucfirst
×11 · пример

Авто-капитализация первой буквы текстовых значений (1=да, 0=сохранять как введено)

0
minrole не везде
×6
31
Источник данных (SQL) 1 · включений: 12
source
×12 · пример

Имя дополнительной SQL-таблицы — все поля внутри блока сохраняются в неё (one-to-one с основной таблицей)

edu4_instruction_groupsmed_akt_detailsedu4_courses_preferencesedu4_courses_detailsedu4_educenters_detailsincidents_vid_types_relations
Расположение 1 · включений: 7
hidden

Скрыть весь блок элементов (1=да; данные всё равно отправляются на сервер)

1_qscript_

Примеры из реального кода 3

@source packages/edu4/courses_instruction.xml:470
<elements source="edu4_courses_preferences">
    <field                                                name="repeat_months" prompt="Повторить раз в"
                                                          type="radiobutton" inline="1" default="3"
                                                          help="Указать количество месяцев, через которое необходимо повторить инструктаж."
    >
        <condition field="shift_testing_only" comparison="NE" value="0" />
        <choice key="0">Не повторять</choice>
        <choice key="3">3 мес.</choice>
        <choice key="6">6 мес.</choice>
        <choice key="12">12 мес.</choice>
    </field>
</elements>
@ucfirst packages/multilang/forms/multilang_add_translation.xml:87
<elements ucfirst="0" strict="0" width="670">
    <field name="prin"
        prompt-bold="1"
        prompt="Предназначение"
        type="radiobutton"
        inline="1"
        readonly="1"
        default="text"
    ></field>

    <field prompt-bold="1" name="domain" prompt="Домен" maxlength="31" required="1" />

    <field name="language_code" prompt-bold="1" prompt="Язык" type="dropdown" required="1" width="200" ></field>


    <field name="check_required" label="Требуется проверка перевода" type="checkbox"  css-class="attach_checkbox" width="0" default="1"/>

    <field name="form" prompt="Без формы не будет работать JOIN JSON_TABLE" maxlength="1023" default='["no_form"]' hidden="1 " readonly="1" />

    <field name="original" prompt-bold="1" prompt="Оригинал" required="1"/>
    <field name="translation" prompt="Перевод" type="textarea" ></field>
    <!-- … ещё 1 -->

</elements>
@hidden packages/bbs/dashboard.xml:97
<elements hidden="1">

    <text continue="1" width="258"></text>
    <text name="bbs_dep" style="margin-left: 258;" continue="1" class="test" prompt=" "></text>
    <field name="a_project_group_id_bbs" prompt="Группа компаний"
           type="dropdown" continue="1" width="135"
    ></field>
    <field name="a_project_division_id_bbs" prompt="Дивизион"
           type="dropdown" continue="1" width="135" reload-on-update="1"
    ></field>
    <!-- … ещё 1 -->



</elements>