Перейти к содержанию

Параметры шаблона

Материал из Химсофт Вики
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Общие сведения

Параметры документа предназначены для пользователей и помогают установить каких-либо исходные данные при построении документа из шаблона.

Например, периода создания (дата от\до), места отбора пробы, шифр пробы, ФИО исполнителя и т.д.

Все параметры шаблона имеют заранее определённое имя пользователем, тип данных и значение по умолчанию.

Шаблон документа может содержать произвольное количество параметров, которые выбираются из выпадающего списка или вводятся с клавиатуры человеком самостоятельно.

Параметры позволяют создавать однотипные документы на основе одного шаблона.

Параметры документа связаны между собой логическими ограничениями, которые были определены настройщиком. Т.е. установка одного параметра может автоматическим каскадом вызывать установку множества зависимых параметров.

Для выполнения автоматической генерации этого же самого шаблона (через скрипты), так же указываются необходимые входные параметры и запускается генерация. Процесс генерации отчетов для ручного и автоматического режима одинаков.

В отчетах возможно:

  • использовать параметры для фильтрации или добавления данных, отображаемых в отчётах;
  • запрашивать у пользователей параметры, чтобы они могли управлять выводом;
  • задавать параметры автоматически.

Создание простого параметра

  • добавить еще один DataSet (п. 1.4, рис. 1.5-1.10), например, FilterLaboratory;
  • в качестве SQL-запроса в поле Query набора данных FilterLaboratory можно использовать SQL-запрос из набора данных MainDataSet или, по возможности, его упрощенный вариант (исключение неиспользуемых полей и соединений таблиц);
  • добавить параметр в дереве отчета (рис. 5.1);
  • в открывшемся окне на вкладке General (рис. 5.2)
    • в поле Name ввести название параметра, например, ReportParameterLaboratory (по умолчанию – ReportParameter1);
    • в поле Data type ввести тип данных (в данном случае - Integer, так как сопоставление значения параметра и данных SQL-запроса будет осуществляться по id);
    • в поле Text for prompting users for a value: ввести текст-приглашение для выбора значения пользователем, например, «Выберите лабораторию:» (по умолчанию – ReportParameter1);
  • в открывшемся окне на вкладке General (рис. 5.3)
    • установить переключатель в значение From query (по умолчанию – Non-queried);
    • в поле Dataset: выбрать используемый набор данных FilterLaboratory;
    • в поле Value field: установить значение, по которому будет проводиться сопоставление данных параметра с одной стороны и любых других данных (дата-сетов, таблиц, табликсов и др.) с другой; в данном случае lab_id (именно для него на предыдущих этапах был выбран тип значения - Integer); по сути - это ключ из пары "ключ-значение";
    • в поле Label field: установить необходимое поле из набора данных, которое будет выводиться для непосредственного выбора пользователем (например, lab_name); по сути - это значение из пары "ключ-значение";
    • в поле Condition: установить значение Value или Label, по которому будет проводиться сортировка; по умолчанию - None, без сортировки;
    • в поле Direction: (появляется при выборе на предыдущем этапе поля для сортировки) указать желаемый вариант сортировки (Ascending – по возрастанию, Descending – по убыванию);
    • нажать OK.

Создание каскадного параметра

Если список значений параметра зависит от значения другого параметра, отчёт собирает необходимое значение параметра и использует его для создания списка значений для второго параметра.

Такой каскад значений параметров иногда называют зависимыми, связанными или иерархическими параметрами.

Чтобы создать каскадные параметры на странице или в отчёте, выполните следующие действия:

  • для создания каскадного параметра на первом этапе создается простой параметр
    • создаем новый набор данных FilterFio с таким же или более коротким SQL-запросом;
    • создаем параметр ReportParameterFio (с принимаемым из набора данных значением fio);
    • в результате создается второй параметр со значениями, не зависящими от первого;
  • для добавления зависимости необходимо в дереве отчета выбрать набор данных FilterFio правой кнопкой выбрать пункт меню Edit;
  • в отрывшемся окне в левой части выбрать раздел DataSet - Parameters и нажать на кнопку +;
  • в отрывшемся окне в поле Name ввести имя параметра (например, @lab_id);
  • в поле Value нажать стрелку меню и выбрать пункт Expression…;
  • в левой части окна в области Fields: раскрыть группу Parameters и выбрать пункт ReportParameterLaboratory;
  • двойным кликом или кнопкой Append добавить пункт ReportParameterLaboratory в область Expression:;
  • нажать кнопку OK;
  • в оставшемся открытым окне свойств набора данных в левой части окна выбрать раздел DataSet - Query;
  • в поле Query: в конце запроса добавить условие WHERE cl."ID" = @lab_id.

Таким образом, итоговые записи данного запроса будут браться не напрямую из набора данных БД, а после предварительной фильтрации на основе лаборатории, выбранной в первом параметре.

В результате связанный параметр функции не активен, пока не будет определено значение основного параметра лаборатории.

Внимание!

При использовании в параметре множественных значений (Multivalue) и множественном выборе в SQL в качестве значений для фильтра WHERE (независимо от типа данных в параметре - и String, и Integer) будет передаваться плоская строка со значениями через запятую, которая будет интерпретироваться SQL как набор литералов.

Сравнение будет проводиться по схеме "поиск строки в наборе строк").

Для корректной работы блок WHERE в SQL должен выглядеть так:

WHERE ssf."CHILD_ID"::text IN (@ss_id) 
    AND ao."ID"::text IN (@ao_id)

Внимание!

При фильтрации по полям, которые могут содержать пустые значения (NULL), прямое сравнение с параметром (например, column = @param) может привести к потере данных, так как в SQL результат сравнения NULL с любым значением всегда дает Unknown.

Для корректной работы и обработки «пустых» чекбоксов или невалидных данных используется функция COALESCE. Она заменяет NULL на значение по умолчанию (например, FALSE), что позволяет фильтру увидеть строку.

Для надежной фильтрации блок WHERE в SQL должен выглядеть так:

WHERE cl."ID" = @lab_id
    AND COALESCE(a.accreditation_value, FALSE) = @is_accred