Скрипт инициализации
В текстовом поле на вкладке Скрипт инициализации пишется SQL-скрипт, который запускается при выполнении запроса. В скрипте можно использовать параметры, описание которых приведено выше, в пункте Фильтры и параметры.
Результат скрипта может быть применен к выборке, которая динамически формируется пользователем во время выполнения запроса. Для этого необходимо установить флажок Использовать временную таблицу. Результат запроса помещается во временную таблицу (структура таблицы аналогична структуре запроса). После выполнения скрипта снова выполняется запрос.
Пример: чтобы обновить пол пациентов, удовлетворяющих фильтру, необходимо сформировать такой скрипт:
update patients set POL = 1 where patients_id in (select PATIENTS_ID from %TempStatResult()),
где %TempStatResult() — это обращение ко временной таблице.
В скрипте инициализации можно использовать:
·динамические фильтры,
·ресурсы (таблицы и ссылки на записи),
Вставка в текст скрипта одного из этих элементов осуществляется из контекстного меню, вызываемого правой кнопкой мыши.
Выполнять скрипт можно всегда (при каждом выполнении запроса) или по запросу (для выполнения скрипта будет предложено установить флажок).
В поле Комментарий можно ввести описание скрипта, которое будет отображаться в окне фильтра.
В поле Открывать файл указывается файл XLS, в который импортируются данные запроса. Если файл выбран, в результате выполнения запроса вместо окна просмотра отчета в МЕДИАЛОГ открывается данный файл. Настройки импорта данных в Excel см. в разделе Импорт данных отчета в Excel.
Параметры завершения запроса по timeout
Если в скрипте используются транзакции, в начале скрипта инициализации рекомендуется прописать инструкцию
SET XACT_ABORT ON
В этом случае при завершении выполнения скрипта по timeout транзакция также завершается, выполняется ее откат, при этом таблицы будут разблокированы. Если данная инструкция не используется, после завершения запроса по timeout транзацкция не завершается и таблицы остаются заблокированными.
Время на выполнение запроса (timeout) можно определить в файле Automedi.ver, прописав параметр MaxQueryTime в секции [DBKERNEL]. Время указывается в секундах. Например,
[DBKERNEL]
MaxQueryTime=600
устанавливает время выполнения запроса равным 600 секундам (10 минутам). Если параметр не указан, время на выполнение запроса – 300 секунд (5 минут).
Переменные запроса
На вкладке Переменные запроса можно декларировать и инициализировать SQL переменные, которые затем применяются в запросе. Используется синтаксис языка SQL.