<field>
Поля ввода
Поле для ввода информации в форму.
Может содержать 21
| Тег | Описание | Включений здесь |
|---|---|---|
| Поля ввода | ||
<choice> |
Вариант выпадающего списка (статичный или динамический через SQL/array) | 3456 |
<condition> |
Условие отображения/применимости элемента (зависит от значения другого поля) | 861 |
<field> |
Поле для ввода информации в форму. | 12 |
| SQL/обработка | ||
<onchange> |
Обработчик изменения поля: do=update обновляет связанные элементы, do=js — JS-выражение | 1742 |
<mod> |
Подгружает значение поля из SQL: | 765 |
<sqlforvalue> |
SQL для расчёта value поля | 43 |
<sqlforupdate> |
Альтернатива записи в основную таблицу — выполнить произвольный SQL: | 6 |
<javascript> |
JS-блок, выполняющийся в браузере (onsuccess/afterinit/presubmit/update/ondeleted/onerror) | 4 |
<sqlfordefault> |
SQL для расчёта default поля | 3 |
<finishsql> |
Финализирующий SQL — выполняется после store/delete (для пересчётов/триггеров на стороне приложения) | 1 |
<check> не везде |
Блок проверки данных перед сохранением (SQL или PHP, с critical/некритическим режимом) | |
<sqlrepr> не везде |
SQL-выражение для расчёта/отображения значения (может быть и атрибутом, и вложенным тегом для… | |
| Структура: БД | ||
<table> |
Имя SQL-таблицы (с опциональным database, impl-delete, name) | 64 |
<foreign_key> не везде |
Имя поля внешнего ключа (для связи с родительской таблицей) | |
<this_key> не везде |
Имя поля внешнего ключа в дочерней таблице fieldset, ссылающегося на родительскую запись | |
| Текст/заголовки | ||
<help> |
Ссылка на справочную статью (key — ID статьи в системе помощи) | 30 |
<legend> |
Легенда списка — описание цветов/иконок, используемых в столбцах | 1 |
| Оформление (HTML) | ||
<html> |
HTML-блок: alert-сообщение, информационный блок или произвольная разметка в форме | 8 |
| Кнопки/действия | ||
<button> |
Кнопка действия (открыть форму, выполнить SQL/JS/PHP-блок) | 2 |
| Структура: форма | ||
<fieldset> |
Вложенный набор записей (one-to-many или M2M через дочернюю таблицу) | 1 |
| Отчёты | ||
<tab> не везде |
Описание вкладки (tab) формы — группа элементов на отдельной странице | |
Может встречаться внутри 9
| Тег | Описание | Включений здесь |
|---|---|---|
| Структура: форма | ||
<elements> |
Все элементы формы: поля, html-вставки, группы полей (fieldset) и прочее необходимо оборачивать в… |
5048 |
<fieldset> |
Вложенный набор записей (one-to-many или M2M через дочернюю таблицу) | 2 |
| Отчёты | ||
<tab> |
Описание вкладки (tab) формы — группа элементов на отдельной странице | 279 |
| Поля ввода | ||
<field> |
Поле для ввода информации в форму. | 12 |
<fields> |
Группа полей (внутри fieldset, определяет колонки) | 3 |
| Структура: БД | ||
<table> |
Имя SQL-таблицы (с опциональным database, impl-delete, name) | 5 |
| SQL/обработка | ||
<sql> не везде |
SQL-запрос: основной запрос списка, или вспомогательный запрос для choice/check/finishsql и пр. | |
| Структура: список | ||
<cols> не везде |
Контейнер столбцов списка (с атрибутами defaultsort, *-flag и пр.) | |
| Текст/заголовки | ||
<header> не везде |
Header-блок печатной/excel-формы отчёта | |
Атрибуты 124
| Атрибут | Описание | Значения |
|---|---|---|
| Основные | ||
required |
Если != 0, то поле обязательное для заполнение. Система не даст отправить форму, пока это поле не будет заполнено. Поле считается незаполненным, если там введено пустое значение или 0. _TODO: Уточнить, возможно для Когда поле скрыто по условию из |
10_qscript_ |
default |
Дефолт для новой записи |
_qscript_01_empty__other_2 |
continue |
Если !=0, то следующий за полем элемент (например: другое поле, или По умолчанию 0 |
10_qscript__empty_ |
readonly |
Если !=0, то пользователь не сможет отредактировать значение поля По умолчанию 0. При этом, в отличие от установленного |
1_qscript_0 |
maxlength |
Максимальная длина текста, который можно ввести в поле Необходимо указывать такую же длину, как в базе данных |
255_int_431210 |
interval-next |
Регулирует расстояние до следующего поля, если По умолчанию |
small0nonenormal_empty_1 |
donotquery |
Если !=0, то значение данного поля не будет загружаться из базы данных и не будет в неё сохранятся По умолчанию 0. Используется, когда поле отстутвует в базе данных, но выячисляется автоматически в |
1_qscript_0 |
label |
Текст, который будет справа от флажка (галочки), если поле типа |
_other_Включая подчинённые_qscript_Показывать логотипТитульный листЯвляется ли подписант руководит… |
noprompt |
Укажите Не вполне очевидный атрибут. _TODO: Описать подробнее |
10_empty__qscript_ |
postfix |
Префикс/суффикс ( |
_other_°годруб.ʹʺ |
value |
Значение, которое будет указано в поле. Если этот атрибут задан, то полученное из базы данных значение, а также атрибут |
_qscript_1_empty__other_0-1 |
prefix |
Префикс/суффикс ( |
по_other_cсШиротаДолгота |
disabled |
Если !=0, то то пользователь не сможет отредактировать значение поля и в базу данных значение данного поля сохраняться не будет! По умолчанию 0. См. отличие от |
1_qscript_0 |
caption |
Название поля по-русски По умолчанию = |
ГодНажата кнопка ОтклонитьОтправить замечания по ВРП прои…Коэффициент вероятностиНа это поле завязана отправка у…Отправить замечания по Урокам п… |
title |
Пока нигде не используется. Хотя в кодах упоминание есть |
|
| Идентификация | ||
name |
Имя поля. По умолчанию, если не указан Допустимые символы: |
_other_commentayeartitletypeid |
field |
Имя поля в базе данных. По сути мало чем отличается от Оба варианта ничем не отличаются (на момент написания данной статьи). Но лучше использовать |
contract_iddevice_photo_idusage_photo_iddiagram_photo_idphoto_file_idedu4_entities_kind |
| События | ||
type |
Тип (см. ниже) |
dropdowncheckboxintdatetextarearadiobutton |
| Отображение | ||
prompt |
Заголовок поля, который выводится перед полем |
_other__empty_ПримечаниеГодНаименованиеДолжность |
| Настройка размеров полей | ||
width |
Размер поля в пикселях Лучше по возможности избегать использования width, а если и используете, то выставлять кратным 9 — это необходимо, чтобы форма смотрелась аккуратно.Чтобы не сидеть каждый раз с калькулятором, можно использовать, например, математические функции: |
_other_200016080100 |
size |
Размер поля в условных единицах =) За условную единицу принимается |
4101591211 |
rows |
Количество строк у Аналогичен соответствующему атрибуты в html |
253_qscript_110 |
prompt-width |
Размер Используется, когда поле является продолжением предыдущего (т.е. когда у предшествующего поля или другого элемента стоит атрибут |
_other_35165150092 |
prompt-size |
Размер Используется, когда поле является продолжением предыдущего (т.е. когда у предшествующего поля или другого элемента стоит атрибут |
228321019 |
prefix-width |
Ширина префикса (см. атрибут В идеале также должне быть кратен 9! См. атрибут |
99301756010055 |
postfix-width |
Ширина постфикса (см. атрибут В идеале также должне быть кратен 9! См. атрибут |
65363035800 |
maxheight |
Максимальная высота поля типа Нет уверенности, что это работает =( |
455250_int_1000227300 |
postfix-size не везде |
[ ] Пока не реализован (_TODO) |
65 |
cols |
Количество колонок у По умолчанию — |
42 |
height |
Можно указать высоту поля в пикселях ( Толком не проверялось. |
200 |
prefix-size |
[ ] Пока не реализован (_TODO) |
1 |
| Подсказки для ввода | ||
help |
Подсказка |
_other__empty_Координаты точки объекта в сист…_qscript_В именительном падежеГод, за который сдаётся отчёт |
placeholder |
Текст, который будет написано в «фоне» на самом поле, когда оно ничем не заполнено. Действие аналогично действую соответствующего атрибута в HTML. _TODO: Вставить пример. |
0.0_other_0.00В именительном падежеe-mailмобильный |
hint |
Синоним |
Производственная единицаГалочкой помечены действующие и…Оставьте пустым, если не надо д…Галочкой помечены действующие р…Галочкой помечены действующие р |
| (без группы) | ||
prompt-icon не везде |
ru-ru-flagen-us-flagtr-tr-flagzh-cn-flaguz-uz-flagky-kg-flag |
|
multilingual не везде |
1230 |
|
where не везде |
_qscript_deleted = 0 AND is_active = 1deleted = 0deleted = 0 AND org_type = 'lab'deleted = 0 AND storage_conditi…deleted = 0 AND org_type = 'con… |
|
decimals не везде |
27613 |
|
src не везде |
equip/cold/_dashboards/sanit/da…equip/cold/_dashboards/temp/das…equip/fbody/_dashboards/mdtest/…equip/invent/_dashboards/wash/d…equip/meter/_dashboards/thermv/…equip/meter/_dashboards/verif/d… |
|
ttt не везде |
1 |
|
nline не везде |
1 |
|
todo не везде |
#TODO не скрывать поле, доработ… |
|
interval-next_ не везде |
0 |
|
s_tartdate-field не везде |
input_start_dateinput_deadline_dateagree_deadline_date |
|
savefield не везде |
1 |
|
show-update |
Показывать кнопку "обновить" рядом с полем (1=да) |
01 |
check-store-ignore не везде |
1 |
|
autofocus не везде |
0 |
|
_prefix → prefix |
Закомментированная версия |
вcпо |
step не везде |
0.010.1 |
|
cell-color не везде |
-192 |
|
sortorder не везде |
89 |
|
he_lp → help |
Закомментированная версия |
Масса и объём вычисляются автом…ОРО |
link-target не везде |
_blank |
|
selected-top не везде |
1 |
|
| Ограничение числовых полей (для типов: `int`, `double`, `float`, `money`) | ||
unsigned |
Запретить отрицательные значения для числового поля (1=да) |
10 |
maxval |
Максимально допустимое значение числового поля |
89.999999999598959.99999999 |
minval |
Минимально допустимое значение числового поля |
01_int_3_qscript_-2 |
stepper |
Показывать кнопки +/- для пошагового изменения числового значения (1=шаг 1; 10=шаг 10) |
110 |
| Настройка стиля | ||
inline |
Расположить |
10 |
prompt-bold |
Делает жирным |
1 |
label-bold |
Делает жирным Только для |
1 |
align не везде |
Пока не реализовано (_TODO) (Но, кстати, этот атрибут есть в |
right |
dropup |
Для полей По умолчанию 0 — т.е. открывать вниз. При этом вне зависимости от значения, расчёт открытия будет вестись автоматически исходя из положения поля на странице — так, чтобы оно поместилось. Просто будет отдаваться предпочтение том или иному варианту |
|
pullright |
Для полей В фильтрах по умолчанию - 1, в формах — 0 |
|
| Обработка полей типа `dropdown` | ||
extended |
Checkboxgroup/dropdown: расширенный режим |
10 |
| Обработка при сохранении | ||
null |
NULL если пусто |
10_empty_ |
clear |
Autocomplete: не очищать поле при выборе (важно для dependent fields) |
01_qscript_ |
| Ограничение текстового ввода | ||
ucfirst |
Если = 1, то автоматически текст будет всегда начинаться с большой буквы. Даже если пользователь начнёт писать с маленькой буквы, будет подставлена большая. Для типов |
0 |
mask |
Маска ввода (jQuery Inputmask): 9=цифра, A=буква, *=любой символ. Пример: "+7 (999) 999 99 99" |
_int_999999999999.99+7 (999) 999 99 99999.99999909.09.099AA-AA |
strict-punct |
Строгая проверка пунктуации (0=отключить — допустимо в email и подобных полях) |
0 |
strict-space не везде |
0 |
|
strict |
Если = 1, то включаются свойства По умолчанию 0, кроме |
10 |
mask-strict |
Строгое соответствие маске (0=допустимо неполное заполнение) |
0 |
trim-chars |
Символы, которые будут отрезаться в конце и начале введенного значения, если стоит По умолчанию: |
, ; |
noreturn не везде |
Запрещает перенос строки у |
1 |
trim |
Если 1, то при сохранении будут обрезаться начальные и концевые символы из |
1 |
| Числовые форматы | ||
zero-as-field |
Сохранять 0 как обычное значение, а не как пустое/null (1=да) |
1 |
zero |
Текст, отображаемый вместо нулевого/пустого значения (например, "-") |
-0 |
| Обработка полей с choice (для типов: `dropdown`, `radiobutton`, `checkboxgroup`, `autocomplete`) | ||
allowhtml |
Может перезаписывать Лучше не использовать. |
1 |
nowrap |
Не переносить строку, если не помещает по ширине (в таком случае, она будет обрезаться). По умолчанию 1 |
01 |
unique |
Запретить дубликаты значения в таблице (1=уникально по таблице) |
12 |
| Обработка полей типа `autocomplete` | ||
restricted |
Autocomplete: только из списка |
10 |
search-anywhere |
Autocomplete: искать подстроку, не только префикс |
1 |
allowbr |
Autocomplete: несколько значений |
1 |
| Ограничение полей даты и времени (для типов: `date`, `datetime`, `time`) | ||
startdate-field |
Имя поля "дата начала" — для type="date" значение не может быть раньше указанного |
adatestart_datedate_startdteducation_date_startplandate |
startdate |
Минимальная допустимая дата (YYYY-MM-DD) |
_qscript_2016-01-012000-01-01 |
enddate |
Максимальная допустимая дата (YYYY-MM-DD или {{выражение}}) |
_qscript_ |
enddate-field |
Имя поля "дата окончания" — для type="date": значение даты не может быть позже указанного |
fdatecur_to_dateprev_to_dateadate_finishall_fdateprev_fdate |
| Ограничение полей файлов и изображений (для типов: `file`, `img`) | ||
multiple |
Если 1, то допустима множественная загрузка файлов. Не уверен, как это работает. [ ] _TODO: Описать |
01 |
accept |
MIME-типы для файлов, которые допустимо загружать |
application/vnd.openxmlformats-…application/pdf,application/rtf…application/vnd.openxmlformats-…application/pdf,pdf/*application/pdfapplication/zip |
file-size |
Допустимый минимальный размер файла. Не уверен, как это работает. [ ] _TODO: Описать |
|
| Удобство работы с формой | ||
hide-if |
Возможные значения: |
emptyoneone choice |
preserve |
Сохранять значения поля в COOKIES при выборе фильтра или при сохранении формы. При открытии формы или списка, значение поле будет браться из соответствующей COOKIE. При этом COOKIES общие для фильтров и полей. Имя переменной в COOKIES определяется на основе атрибута |
1_qscript_ |
focused |
Если !=0, то при открытии поля ставит фокус на поле. |
_qscript_1 |
preserve-name |
Имя для переменной COOKIE, в которую сохранять значение поля К значению поля в куках добавляется префикс |
permit_ps_from_roleinstr_vv_repeat_everyinstr_vv_capacitytrainings_repeat_everytrainings_capacity_mintrainings_capacity_max |
select |
Если |
auto |
preserve-expires |
Срок хранения COOKIE. Аналогичен параметру expires при сохранении COOKIE По умолчанию 0 — т.е. до конца сессии |
|
speech |
Включает голосовой ввод для поля [ ] Раньше работало. Сейчас временно не работает (_TODO) |
|
tabindex |
Позволяет менять последовательность, в которой будут переключаться поля по нажатию клавиши TAB. При этом -1 — не переключаться на поле при нажатии клавиши TAB. Если 0 или не задан, то устанавливается автоматически, как в HTML. Аналогичен соответствующему атрибуту в HTML. Использовалось активно в модуле сменных медосмотров, можно посмотреть там |
|
| Динамические значения | ||
reload-on-update |
При изменении этого поля — перезагрузить всю форму (используется для радикальной смены контекста, например |
1 |
| Поведение/валидация | ||
insigned → unsigned |
Опечатка в коде: должно быть |
01 |
block_manual |
Запретить ручной ввод (только через date-picker / dropdown), 1=да |
1 |
donotstore |
Не сохранять значение поля в БД (1=да; для вычисляемых/временных полей) |
1 |
nostore |
Не сохранять значение поля в БД (синоним donotstore; 1=да) |
1 |
| Стиль | ||
css-class |
CSS-класс контейнера поля (для тонкой настройки оформления, например attach_checkbox) |
attach_checkbox_qscript_files-list-for-copynd_meropr_mw_fieldnd_meroprs4brigade_isNew |
css-style не везде |
z-index: 1; position: relative;border:0; background: #f5f5f5; … |
|
| Модификация HMTL / CSS полей | ||
inputparams не везде |
ttt, bbb |
|
| Поведение интерфейса | ||
print-if-empty |
Печатать поле в режиме print даже если пустое (1=да) |
1 |
| Связи/навигация | ||
link не везде |
_qscript_/avar_f_force_funds |
|
| Настройки режима просмотра / печати | ||
print-empty |
Не выводит поле при открытии формы на печать / просмотр, если оно пустое Толком нигде пока не тестировалось, хотя функционал есть уже очень давно |
0 |
printable |
Если =0, то поле не будет выводиться при открытии формы на просмотр По умолчанию 1 |
0 |
| Условия и доступ | ||
state |
Состояние поля: 1 — read-only (с серым фоном), 2 — read-only без серого фона. Используется для показа справочной информации |
12 |
| Сортировка/поиск | ||
searchable не везде |
10 |
|
| Обработка полей типа `checkboxgroup` | ||
separator |
Разделитель, который будет использоваться, в случае, если сохранение идёт в поле таблицы По умолчанию: |
; , |
| Обработка полей типа `qmap` | ||
class не везде |
Для В разработке. Не тестировалось |
no-resize |
btntitle |
Для В разработке. Не тестировалось |
|
embeded |
Для В разработке. Не тестировалось |
|
icon |
Для В разработке. Не тестировалось |
|
| Источник данных (SQL) | ||
table-field не везде |
Имя поля в базе данных. По сути мало чем отличается от Оба варианта ничем не отличаются (на момент написания данной статьи). Но лучше использовать |
Body |
| Управление доступом | ||
minrole |
Минимальная роль, которая должна быть у пользователя, чтобы было доступно редактирование поля _TODO: Вставить ссылку на статью про управление правами доступа |
7 |
| Использование разных источников данных (таблиц) | ||
source |
Имя источника из Значение по умолчанию — |
|
| Обработка полей типа `password` | ||
repeat |
Крайне редко используемый атрибут. Актуален только для По умолчнию 0. Не уверен, что атрибут работает. |
|
Примеры из реального кода 8
<field name="internal_phone" print-if-empty="1" width="170" placeholder="внутренний"
continue="1" interval-next="small" maxlength="18"
prefix="<i class='icon-earphone'/>" prefix-width="30" readonly="1" donotquery="1" >
<condition field="use_pid" value="1"/>
<mod on="all" by="sql">
<![CDATA[
SELECT `phone_internal` AS `value`
FROM persons
WHERE id = '{{field.violator_pid}}'
UNION
select '' AS `value`
LIMIT 1
]]>
</mod>
</field>
<field name="document4shed_object_id" prompt="Разрешительный документ" type="checkboxgroup" readonly="1" default=":all:" show-update="1" help="Справочная информация">
<condition field="shed_object_id" value="" comparison="NE"/>
<choice table="nvos_shed_documents" field="codename">
<sql>
<![CDATA[
SELECT nvos_shed_documents.id
, CONCAT(ELT(nvos_shed_documents.document, 'Лицензия', 'Решение о предоставлении водного объекта в пользование'), ' №', nvos_shed_documents.`number`, ', ', DATE_FORMAT(nvos_shed_documents.adate0, '%d.%m.%Y'), ' - ', DATE_FORMAT(nvos_shed_documents.adate1, '%d.%m.%Y')) AS codename
FROM nvos_shed_documents
WHERE NOT nvos_shed_documents.deleted
AND nvos_shed_documents.company_id = '{{field.company_id}}'
AND nvos_shed_documents.shed_object_id = '{{field.shed_object_id}}'
AND '{{field.ayear}}' BETWEEN YEAR(nvos_shed_documents.adate0) AND YEAR(nvos_shed_documents.adate1)
]]>
</sql>
</choice>
</field>
<field name="show_all_persons" label="Из любой компании"
donotquery="1" type="checkbox" width="0"
help="Для возможности поиска сотрудника по всем компаниям, поставьте галочку в поле «Из любой компании»"
css-class="attach_checkbox"
hidden="0"
readonly="0"
disabled="0"
value="0">
<condition field="rel_type" comparison="EQ" value="1" />
<onchange do="update" name="pid" />
</field>
<field prompt=" " prefix="c" type="date" name="sdate" block_manual="1" default="{{@sys.year_start}}" startdate="2016-01-01" enddate-field="fdate" continue="1" interval-next="0">
<onchange do="update" name="html_content"/>
<condition field="period_type" value="interval-dates" />
</field>
<field name="inter_meropr_date" prompt="Дата" type="date" enddate="{{sys.date_mysql}}" />
<field prompt-bold="1" readonly="({{record_prin}} = attr)?(1):(0)" state="2" print-empty="0" name="original" prompt="Оригинал" type="textarea" rows="2" maxlength="255" donotquery="({{record_prin}} = attr)?(1):(0)" />
<field prompt="Период" _prefix="c" type="date" name="all_sdate" block_manual="1" default="2016-01-01" startdate="2016-01-01" enddate-field="all_fdate" continue="1" interval-next="0">
<onchange do="update" name="pyramids" />
<condition field="period_type" value="all" />
</field>
<field name="email" prefix="<i class='icon-envelope'/>" placeholder="e-mail" prefix-width="30" strict-punct="0" ucfirst="0" disabled="{{disabled_tab_contacts}}" width="318" />