Перейти к основному содержимому
Версия: 7.0

UserEvents

UserEventsсистемный модуль, дающий действию, выполняющемуся на открытой форме, программный доступ на чтение и запись к фильтрам и порядкам формы по имени группы объектов и имени свойства. Подключается через REQUIRE UserEvents. Два публичных действия обращаются к текущей структуре фильтров группы объектов, меняют значение фильтра по одному свойству и записывают её обратно, так что действие может задать или прочитать фильтр без обращения пользователя к диалогу фильтрации.

Локальные буферы

Модуль объявляет локальные буферы, хранящие копию порядков и фильтров группы объектов на время правки её действием, вместе с двумя формами, которые переносят эту копию между буферами и работающей формой.

СвойствоЧто хранит
orders[]порядки группы объектов как JSON
filters[]фильтры группы объектов как JSON
filterGroups[]число групп фильтров как INTEGER
filtersProperty[]прочитанное значение фильтра по свойству как STRING
property[INTEGER] / desc[INTEGER]строка порядка: имя свойства и признак убывания, по номеру строки
property[INTEGER] / compare[INTEGER] / negation[INTEGER] / or[INTEGER] / value[INTEGER]строка фильтра: имя свойства, сравнение, признак отрицания, признак OR и значение фильтра, по номеру строки

Форма orders показывает строки порядка (один объект INTEGER со свойствами property и desc), форма filters — строки фильтров (один объект INTEGER со свойствами property, negation, compare, value, or). Каждая форма оставляет только строки с заполненным property. Эти формы и есть промежуточные структуры, из которых читают и в которые пишут шаги импорта и экспорта.

Установка фильтра

filterProperty[STRING groupObject, STRING property, STRING value] устанавливает на указанной группе объектов фильтр так, чтобы указанное свойство было отфильтровано по заданному значению: добавляет фильтр, если свойство ещё не отфильтровано, и заменяет значение, если уже отфильтровано. Выполняется как обход промежуточной структуры:

  1. чтение текущих фильтров группы объектов — EVAL ACTION 'FILTERS ' + groupObject + ';' наполняет буферы формы filters из текущих фильтров формы по этой группе объектов;
  2. импорт их в промежуточную структуру через IMPORT filters FROM filters() — по строке на каждый текущий фильтр;
  3. правка структуры — для строки, где property равно заданному свойству, запись нового значения в value[INTEGER]; если такой строки нет, добавление новой строки (с индексом на единицу больше наибольшей заполненной строки или 0, если заполненных нет) с именем свойства и значением;
  4. запись структуры обратно через EXPORT filters TO filters — повторное наполнение формы filters из изменённых строк;
  5. повторное применение — EVAL ACTION 'FILTER ' + groupObject + ';' применяет подготовленные фильтры обратно к группе объектов на работающей форме.

Чтение фильтра

filtersProperty[STRING groupObject, STRING property] читает значение фильтра, применённого в данный момент к указанному свойству группы объектов. Выполняет шаги чтения и импорта из обхода — EVAL ACTION 'FILTERS ' + groupObject + ';', затем IMPORT filters FROM filters() — и для строки, где property равно заданному свойству, записывает значение value[INTEGER] этой строки в filtersProperty[], откуда вызывающий читает результат.

Язык

  • Оператор EVAL — запускает действие формы FILTERS / FILTER, читающее и заново применяющее фильтры группы объектов.
  • Оператор IMPORT — читает форму filters в промежуточную структуру.
  • Оператор EXPORT — пишет промежуточную структуру обратно в форму filters.

Связано

  • System modules — общий список модулей платформы.
  • Выполнение программного кода (EVAL) — выполнение сгенерированного кода lsFusion, используемое здесь для чтения и повторного применения фильтров формы.
  • Формы — что такое форма, её группы объектов, фильтры и порядки.
  • Reflection — метаданные о формах, группах объектов и свойствах, к которым здесь обращаются по имени.