Язык @-формул в LotusDomino R 6.

Функции для работы с видами


J @SetViewInfo( [SETVIEWFILTER]; "фильтр";

                  "программное_имя_столбца"; флаг )

Область применения: В DOMINO R 6.0.1 НЕ ДОКУМЕНТИРОВАНА.

Накладывает фильтр на отображаемую информацию в видах и папках. По своему действию очень похожа на результат применение Show single category (показ единственной категории) в рамках встроенных видов/папок. Функция может быть применена как к стандартным, так и к календарным видам. Результат применения и характер воздействия аргументов функции зависит от типа вида (стандартный/календарный).

Рассмотрим подробнее аргументы функции согласно документации (она не всегда соответствует действительности):

  • "фильтр" – текстовая строка, определяющая какие документы будут отображаться в виде. Если такая строка присутствует в столбце с программным именем, определенным во втором параметре функции, то такие документы отображаются в виде после применения функции;
  • "программное_имя_столбца" - текстовая строка, определяющая программное имя столбца (задается в поле Name на закладке Advanced

    окна свойств столбца). Указанный столбец должен содержать строку "фильтр"

    для отображения соответствующих документов в виде;

  • флаг – булевское значение. Для стандартных (некалендарных) видов при значении 1 (True) указывает, что колонка с программным именем из предыдущего параметра является категорией, 0 (False) – в противном случае. Для календарных видов флаг

    является необязательным параметром, указывающим на точное/неточное соответствие "фильтра" значению из столбца "программное_имя_столбца". 1 (True) определяет точное соответствие, 0 (False) – в противном случае.

  • Из личного опыта можно сказать, что функция может использоваться в рамках формул акций видов и форм, кнопок панели инструментов и гиперобъектов. Функция не работает в Web-приложениях.

    Функция с параметром флаг при значении 1 оказывает воздействие на все стандартные (т.е. некалендарные) виды, а при значении 0 (или с опущенным параметром флаг) соответственно на все календарные виды. Другими словами, если в рамках некалендарного вида применить формулу типа @SetViewInfo([SetViewFilter]; "Россия"; "Country"; 1) в рамках акции определенного некалендарного вида, а затем переключиться в другой некалендарный вид/паку – то в ней тоже будет действовать этот фильтр (иногда надо обновить индекс вида – F9). Такой фильтр будет действовать либо до нового применения функции @SetViewInfo, либо до закрытия БД. Соответственно @SetViewInfo с параметром флаг




    равным 1 не оказывает влияние на календарные виды, а с параметром флаг

    равным 0 (или опущенным) не оказывает влияние на некалендарные виды.

    Фильтр можно снять применением функции @SetViewInfo, у которой в качестве параметра "фильтр" указана пустая строка. При этом в качестве значения параметра "программное_имя_столбца"

    можно указать любое значение (даже имя несуществующего столбца) за исключением пустой строки, и последний параметр флаг должен соответствовать типу вида (календарный/некалендарный).

    Функция нечувствительна к регистру параметра "фильтр".

    Для некалендарных видов справедливы следующие правила:

    • функция оказывает влияние только на самую первую категорию вида. Если в виде две категории (например, первая страна и далее город), то @SetViewInfo([SetViewFilter];"Москва";"Town";1) – скрывает все документы в виде. Функция работает некорректно, даже если перед первой отображаемой категорией слева присутствуют скрытые колонки;


    • параметр флаг при значении 0 – не оказывает никакого влияния на виды (фильтр не накладывается даже для первой колонки сортированной, но не категоризованной);


    • в случае не строгого соответствия строки-фильтра значению из первого столбца-категории, отбираются документы только из первой категории, соответствующей частичному совпадению со строкой-фильтром. Другими словами, если в первой категоризованной колонке отображаются записи со значениями «Руанда» и «Румыния», то применение формулы @SetViewInfo([SetViewFilter]; "ру"; "Coutry"; 1) отобразит только документы имеющие отношение к «Руанда»;


    • строка-фильтр должна не присутствовать в колонке вида, а являться началом отображаемой в колонке информации. Т.е. если в первой категоризованной колонке вида с программным именем Country отображается «Россия», то @SetViewInfo([SetViewFilter]; "оссия"; "Country"; 1) не будет отображать такие документы;


    • функция не работает, если в первом столбце-категории отображается нетекстовая информация (дата/время, числа).




    • Для календарных видов справедливы следующие правила:

      • параметр флаг при значении 1 – не оказывает никакого влияния на календарные виды. Для воздействия на календарные виды параметр флаг должен быть равен 0, либо опущен;


      • функция корректно работает со значениями типа дата/время и числа. Параметр "фильтр" в этом случае задается как текстовая строка, соответствующая отображаемой информации из "программное_имя_столбца", преобразованной к тексту;


      • для отбора документов строка-фильтр должна присутствовать (а не обязательно начинаться с нее) в столбце "программное_имя_столбца";


      • функция может быть применена к любому (т.е. не обязательно первому) столбцу, включая скрытые и несортированные.


      • Пример 1. В первой категоризованной колонке стандартного вида с программным именем Country отображается информация из одноименного поля документов. Формула, размещенная в акции вида, может использоваться для установки/снятия фильтра, накладываемого на все стандартные виды:

        cond := @Prompt([OkCancelCombo];

                      "Выбор действия"; "Выберите требуемое действие";

                      "Снять фильтр"; "Снять фильтр" : "Установить фильтр");

        @If(cond = "Снять фильтр";

        @SetViewInfo([SetViewFilter]; ""; "Country"; 1);

        cond =        "Установить фильтр";

        @Do(

               filter := @Prompt([OkCancelEdit]; "Установка фильтра"; "Введите значение фильтра"; "");

               @If(filter <> ""; @SetViewInfo([SetViewFilter]; filter; "Country"; 1); "")

        ); ""

        )

        Пример 2. В БД, созданной по стандартному почтовому шаблону (mail6.ntf), в виде с алиасом Calendar добавляем новую акцию формы, которая будет отбирать только те документы, у которых в заголовке присутствует строка «место встречи». Обратите внимание, как задан параметр "программное_имя_столбца". Его можно было бы изменить в поле Name на закладке Advanced окна свойств столбца. Собственно формула акции вида выглядит так:

        @SetViewInfo([SetViewFilter]; "место встречи"; "$147"; 0)


        Содержание раздела