Qform DSL knowledge base

<filter> ×1467 в коде

Структура: фильтры

Один фильтр списка

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

ТегОписаниеВключений здесь
Поля ввода 2 · включений здесь: 2 958
<choice> Вариант выпадающего списка (статичный или динамический через SQL/array) 2765
<condition> Условие отображения/применимости элемента (зависит от значения другого поля) 193
SQL/обработка 4 · включений здесь: 423
<sqlrepr> SQL-выражение для расчёта/отображения значения (может быть и атрибутом, и вложенным тегом для… 290
<onchange> Обработчик изменения поля: do=update обновляет связанные элементы, do=js — JS-выражение 103
<mod> Подгружает значение поля из SQL: 29
<sqlrepr_join> SQL JOIN, добавляемый к запросу списка 1
Текст/заголовки 1 · включений здесь: 6
<help> Ссылка на справочную статью (key — ID статьи в системе помощи) 6
(без группы) 1 · включений здесь: 1
<s> не везде 1

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

ТегОписаниеВключений здесь
Структура: фильтры 1 · включений здесь: 1 228
<filters> Контейнер фильтров списка 1228
(без группы) 1 · включений здесь: 0
<disabled_filters> не везде
Структура: доступ 1 · включений здесь: 0
<access> не везде Декларация прав доступа к сущности (entity, role-model, marker-flags)

Атрибуты 46

АтрибутОписаниеЗначения
Идентификация 3 · включений: 1 632
name
×872

Имя фильтра — для доступа через {{filter.<имя>}}

_other_ayearfc_sdate_fc_fdate_archivestatus
field
×698

SQL-поле для фильтрации (если sqlrepr не указан, фильтрация идёт по этому полю)

_other_typeayearstatusidastatus
table
×62

Имя SQL-таблицы для autocomplete-фильтра (источник вариантов)

i4c_other_edu4_coursesproject_analytics_checksproject_analytics_incidentsgrade
Отображение 7 · включений: 1 463
caption
×1246

Видимый заголовок фильтра

_other_СтатусГодПоказатьТип_empty_
label
×115

Подпись справа от чекбокса/контрола фильтра

_other_Включ. подчинённыеГруппироватьТолько итоговые значенияИспользуемыеСкрытые
help
×36

Подсказка (tooltip) над иконкой "?" справа от фильтра

Отход относится к категории твё…_empty__qscript_Источник загрязнения атмосферыФункциональное назначение объек…Список ограничен отходами данно…
allowhtml
×22

Разрешить HTML-разметку в значениях вариантов фильтра (1=да)

1
prompt
×19 · пример

Подпись слева от контрола фильтра (используется наряду с caption)

ПодразделениеtttПодразделение АудитораПодразделение Наблюдаемого
allowbr
×18 · пример

Разрешить переносы строк в значениях вариантов (1=да; для длинных названий)

1
hint не везде
×7
Стаж работы с химическим оружие…
События 1 · включений: 1 459
type
×1459

Тип контрола фильтра

dropdown / radiobutton / checkbox / checkboxgroup / autocomplete / date / int / string

dropdownradiobuttoncheckboxgroupcheckboxdateautocomplete
Поведение/валидация 5 · включений: 635
default
×592

Значение фильтра по умолчанию (для радиогруппы можно "all")

_qscript__empty_10all2
value
×19 · пример

Текущее значение фильтра ({{выражение}} для динамической установки)

_qscript_0
maxval
×13

Максимально допустимое значение для type="int" фильтра

9991007512
minval
×6

Минимально допустимое значение для type="int"/type="slider" фильтра

_int_23
disabled
×5

Условие блокировки фильтра ({{выражение}} или 1)

_qscript_
Сортировка/поиск 9 · включений: 261
extended
×137

Расширенный режим: поиск по подстроке вместо точного совпадения (1=да)

10
restricted
×46

Ограничить выпадающий список только теми значениями, которые есть в данных списка (1=да)

1
preserve
×21

Сохранять выбранное значение между сессиями пользователя (1=да)

10
preserve-name
×13 · пример

Имя cookie/storage для сохранения значения фильтра между сессиями (если отличается от name)

filter_by_userpermit_ps_from_rolecontractors_filter_ponot_approveldonot_reportingcontragenty_externalsource
search-anywhere
×13

Поиск по подстроке (LIKE %x%) вместо префиксного поиска (1=да)

1
reload
×9

Перезагружать фильтр при изменении других фильтров (1=да; для каскадных фильтров)

1
reset-to
×8

Значение, к которому фильтр сбрасывается при нажатии "Сбросить" (если отличается от default)

_qscript_-1_empty_01all
searchable
×7

Разрешить поиск по фильтру (для autocomplete/checkboxgroup типов; 1=да)

1
sortable
×7

Разрешить сортировку вариантов фильтра (1=да)

1
Расположение 5 · включений: 227
prefix
×109

Текст-префикс перед контролом фильтра (например, "с" для интервалов дат)

cповЗасот
hidden
×36

Скрыть фильтр от пользователя, но условие всё равно применяется к выборке (1=скрыт)

1_qscript_0
postfix
×30

Текст-постфикс после контрола фильтра (например, "году")

годугодакварталегодМесяцКвартал
continue
×29

Размещать на одной строке со следующим фильтром (1=да)

1
interval-next
×23

Размер отступа до следующего фильтра: none / small / normal / big / 0

nonenormal
Источник данных (SQL) 1 · включений: 141
sqlrepr
×141

SQL-выражение для фильтрации. "1" означает, что условие задаётся внутри тега фильтра (через CDATA)

1_qscript__empty_
Размеры 2 · включений: 106
width
×97

Ширина контрола фильтра в пикселях

1190508110070
maxheight
×9

Максимальная высота dropdown-списка вариантов в пикселях (для длинных списков)

440250450200
(без группы) 10 · включений: 102
hide-if не везде
×17
emptyone choice
pref
×16 · пример

Префикс фильтра (?). Бинарный флаг 1 для checkbox-фильтров

1
external-select
×14 · пример

Использовать внешний селектор (1=да; URL задаётся через external-select-url, например для дерева подразделений)

1
external-select-url
×13

URL внешнего селектора (например, /dtree?embeded=1&company_id={{company_id}} для выбора подразделения)

_qscript_
minnval → minval
×10

Опечатка в коде: должно быть minval. Не действует

018
field_acontrol не везде
×9
acontrol
deault не везде
×7
1
nowpar не везде
×6
0
noprompt не везде
×5
1
ucfirst не везде
×5
0
Стиль 3 · включений: 85
css-class
×52

CSS-класс контейнера фильтра

q-additional-filter-monthattach_checkboxq-additional-filter-date-interv…q-additional-filter-deppath
inline
×19 · пример

Размещать варианты фильтра инлайн в одну строку (1=да; для radiobutton/checkboxgroup)

1
nowrap
×14 · пример

Запретить перенос текста заголовка фильтра (0=перенос разрешён)

0

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

@prompt packages/bbs/bbs_audit_testing.xml:586
<filter name="srok" caption="Период" prompt="ttt" type="dropdown" default="">
    <sqlrepr>
        <![CDATA[
            <!-- if({{filter.srok}} = 10) { -->
                (bbs_audit.adate >= '{{filter.fc_sdate_}}') AND (bbs_audit.adate <= '{{filter.fc_fdate_}}')
            <!-- }else{ -->
                (bbs_audit.adate >= CURRENT_DATE - INTERVAL ELT('{{filter.srok}}', 6, 12, 24) MONTH)
            <!-- } -->
        ]]>
    </sqlrepr>
    <choice key="">За всё время</choice>
    <!-- Могли бы передавать сразу кол-во месяцев, но на всякий случай, в целях безопасности передаем число, для ELT-->
    <choice key="1">За последние полгода</choice>
    <choice key="2">За последний год</choice>
    <choice key="3">За последние 2 года</choice>
    <choice key="10">Интервал дат</choice>
</filter>
@value packages/bbs/bbs_audit_testing.xml:603
<filter prefix="c" type="date" name="fc_sdate_" sqlrepr="1" default="{{sys.year}}-01-01" width="119" value="{{fc_sdate_}}">
    <condition field="srok" value="10" />
</filter>
@inline packages/ecology/NVOS_accounting_objects.xml:277
<filter field="category" caption="Категория объекта" type="checkboxgroup" inline="1" allowhtml="1" default="{{filter_categoty_nvos}}" >

    <choice key="1"><![CDATA[<span class="label label-important">I</span>]]></choice>
    <choice key="2"><![CDATA[<span class="label label-warning">II</span>]]></choice>
    <choice key="3"><![CDATA[<span class="label label-info">III</span>]]></choice>
    <choice key="4"><![CDATA[<span class="label label-success">IV</span>]]></choice>
</filter>
@allowbr packages/edu4/courses.xml:448
<filter field="pid_hse_owner" caption="Владелец программы ОТиПБ"
    type="autocomplete" restricted="1" default="" allowbr="1" extended="1" >
    <include src="includes/choice_person.inc" nodeid="0" >
        <body sql_condition>
            <![CDATA[
                AND persons.id IN (select pid_hse_owner from edu4_courses where pid_hse_owner != 0)
            ]]>
        </body>
    </include>
</filter>
@pref packages/bbs/bbs_schedule4month.xml:817
<filter name="person_include_fired" type="checkbox" label="Включить уволенных" default="0" pref="1" />
@nowrap packages/contragenty/contragenty_general.xml:879
<filter field="sc_id" name="sc_id" caption="Категория услуг" help="Категория предоставляемых услуг"
    type="dropdown" default="" nowrap="0" extended="1">
    <sqlrepr>
        <!-- if({{filter.sc_id}}!=) { -->
            sc4contragenty.sc_id = '{{filter.sc_id}}'
        <!-- } -->
    </sqlrepr>
    <choice key="">-</choice>
    <choice key="id" field="title">
        <sql>
            <![CDATA[
                SELECT services_category.id, services_category.title
                FROM services_category
                WHERE !services_category.deleted
                    AND services_category.showinweb
            ]]>
        </sql>
    </choice>
</filter>
@external-select packages/pb/actions.xml:544
<filter name="f_did" css-class="q-additional-filter-deppath" caption="Подразделение"
        prompt="Подразделение" nowrap="0" type="dropdown"  restricted="1" allowbr="1"
        external-select="1" >
    <mod by="php" on="all">
    <![CDATA[
        $arElement['external-select-url'] = '/{{sys.workspace}}/dtree?embeded=1&company_id={{xmlsafe(company_id)}}';
    ]]>
    </mod>
    <sqlrepr>
        (
            (tu_actions.did = '{{filter.f_did}}')
            OR
            tu_actions.did IN (select descendant AS dd FROM departments_relations WHERE ancestor = '{{filter.f_did}}')
        )
    </sqlrepr>
    <choice key="">Все подразделения</choice>
    <include src="includes/choice_deppath.inc"
             company_id="{{company_id}}"
             hideroot="1"
             type_disbanded="filter"
    />
</filter>
@preserve-name packages/contragenty/contragenty_general.xml:906
<filter type="radiobutton" caption="Наряды-допуски" name="not_approvel" field="not_approvel"  sqlrepr="contragenty.not_approvel='{{filter.not_approvel}}'" preserve="1" preserve-name="not_approvel" >
    <choice key="">Все</choice>
    <choice key="1">не требуются</choice>
    <choice key="0">требуются</choice>
</filter>