<form>
Структура: форма
Основной тэг формы. В нём описываются вкладки и поля формы.
На данный момент, такой тэг в xml-файле может быть только один.
Может содержать 22
| Тег | Описание | Включений здесь |
|---|---|---|
| SQL/обработка | ||
<check> |
Блок проверки данных перед сохранением (SQL или PHP, с critical/некритическим режимом) | 196 |
<javascript> |
JS-блок, выполняющийся в браузере (onsuccess/afterinit/presubmit/update/ondeleted/onerror) | 194 |
<finishsql> |
Финализирующий SQL — выполняется после store/delete (для пересчётов/триггеров на стороне приложения) | 191 |
<php> |
PHP-блок (выполняется на сервере) — onsuccess/store/beforestore/ondeleted | 127 |
<loadsql> |
SQL, выполняемый при загрузке формы (для подкачки доп.данных) | 20 |
<defaultssql> |
SQL для подгрузки значений по умолчанию полей формы при создании новой записи | 6 |
<sqlforupdate> не везде |
Альтернатива записи в основную таблицу — выполнить произвольный SQL: | |
| Структура: форма | ||
<elements> |
Все элементы формы: поля, html-вставки, группы полей (fieldset) и прочее необходимо оборачивать в… |
636 |
| Текст/заголовки | ||
<text> |
Текстовый блок: либо контейнер заголовков (внутри list/form), либо самостоятельный текст в форме | 573 |
<header> |
Header-блок печатной/excel-формы отчёта | 48 |
<footer> |
Footer-блок печатной/excel-формы отчёта | 6 |
<legend> |
Легенда списка — описание цветов/иконок, используемых в столбцах | 6 |
| Отчёты | ||
<tab> |
Описание вкладки (tab) формы — группа элементов на отдельной странице | 413 |
| Источники данных | ||
<sources> |
Контейнер дополнительных источников (см. <source>) | 7 |
<source> |
Дополнительный источник данных (one-to-one таблица для elements source="…") | 1 |
| (без группы) | ||
<dbstructure> не везде |
2 | |
<export> не везде |
1 | |
<input> не везде |
1 | |
<success-action> не везде |
1 | |
| Модули/контролы | ||
<control> |
Контейнер контролов модуля — содержит модули, отчёты и подобные регистрации | 3 |
| Поля ввода | ||
<condition> |
Условие отображения/применимости элемента (зависит от значения другого поля) | 2 |
| Оформление (HTML) | ||
<div> не везде |
HTML div-контейнер (для встраивания произвольной разметки, обычно в дашбордах) | |
Может встречаться внутри 5
| Тег | Описание | Включений здесь |
|---|---|---|
| Корневой | ||
<qform> |
Корневой тег DSL Qform | 749 |
| Структура: список | ||
<list> |
Можно использовать <list> не только как embedded во вкладке, но и как полную замену списка модуля… |
11 |
| SQL/обработка | ||
<scripts> |
Контейнер JS-блоков | 7 |
| Оформление (HTML) | ||
<div> не везде |
HTML div-контейнер (для встраивания произвольной разметки, обычно в дашбордах) | |
| Структура: фильтры | ||
<filters> не везде |
Контейнер фильтров списка | |
Атрибуты 24
| Атрибут | Описание | Значения |
|---|---|---|
| Поведение интерфейса | ||
hideaddmore |
Скрыть кнопку «Сохранить и создать новую запись» (если !== 0) Используется достаточно часто, когда мы делаем форму, которая вызывается по кастомной кнопке из списка. Например форма «Провести инструктаж» из контроля сроков. По умолчанию — 0. |
1_qscript_0 |
hideapply |
Скрыть "Применить" |
1_qscript_0 |
hideedit |
Если !== 0 Скрывает кнопку «Изменить», которая доступна когда мы открываем форму на просмотр (оранжевая слева внизу) По умолчанию — 0 |
1_qscript_0 |
multiedit |
Разрешить групповое редактирование выбранных строк списка (1=да; форма открывается для нескольких записей сразу) |
10 |
cookieprefix |
Префикс cookie, в котором сохраняются настройки формы (свёрнутые блоки, размеры). Поддерживает {{выражения}} |
_qscript_ |
hidedbl |
Скрыть кнопку «Сохранить и дублировать» (если !== 0) По умолчанию — 0. Кнопка отображается только если нажать и удерживать клавишу SHIFT. |
1 |
| Размеры | ||
width |
Ширина в пикселях (def. 640) |
_int_850640800700900 |
height не везде |
Высота (0 = авто) |
450 |
| (без группы) | ||
warn-unsaved |
Если !== 0, предупреждать пользователя, если он намеревается закрыть форму с несохраненными изменениями. По умолчанию — 1 (т.е. предупреждать) |
01 |
hidesave |
Если !== 0, то скрывает все кнопки для сохранения информации разом, если не задано иное поведени. Аналог |
1_qscript_0 |
hidedone |
Скрывает кнопку «Создать»/«Готово», если !== 0 По умолчанию — 0 |
10_qscript_ |
null не везде |
0 |
|
flexible-width |
Гибкая ширина |
1 |
dubplicate-update не везде |
Указывает на то, как поступать, если форма создает запись, повторяющую по уникальному ключу существующую. Если !== 0, то будет произведено обновление полей существующей записи. При этом лучше добавлять ещё |
1 |
autofocus не везде |
0 |
|
delete-value-id не везде |
1 |
|
duplicate-update не везде |
1 |
|
allowduplicate не везде |
1 |
|
tabs-menu-level не везде |
1 |
|
method не везде |
Не уверен, зачем это нам надо было, но атрибут позволяет изменить то, каким методом будут передаваться данные контроллеру сохранения. По умолчанию — POST. Можно указать GET. |
GETPOST |
viewonly |
Только чтение (0/1) |
_qscript_ |
multiple |
Можно указать имя Подробнее см. ниже. |
_qscript_object_id |
dubplicate-ignore |
Указывает на то, как поступать, если форма создаёт запись, повторяющую по уникальному ключу существующую. Если !== 0, то дублирование будет просто проигнорировано. При этом лучше добавлять ещё |
|
| Поведение/валидация | ||
nostore |
Форма не сохраняет в БД (для дашбордов/отчётов) |
1_qscript_0 |
Примеры из реального кода 2
<form width="780" multiedit="1" hideaddmore="1">
<text>…</text>
<elements width="530">…</elements>
<javascript type="onsuccess">…</javascript>
</form>
<form width="850" cookieprefix="{{sys.file}}_1.21">
<text>…</text>
<sources>…</sources>
<tab name="tab1" caption="Основные данные">…</tab>
<!-- if({{conf.modules.all.special_conditions.show}}) { -->
<tab name="kind_of_work_all" caption="Виды работ и {{conf.modules.all.field.special_conditions.name}}">…</tab>
<!-- } -->
<tab name="additional" caption="Дополнительно">…</tab>
<tab name="persons" caption="Список людей">…</tab>
<include src="includes/tab_files.inc" />
<check critical="1">…</check>
<finishsql>…</finishsql>
<finishsql on="delete" >…</finishsql>
</form>