$(pInclude(ККД))
Приложение запрашивает конкретную группу библиотек.
QVD Control Library
Модульная система QVS-подпрограмм: нужная папка подключается одной командой, каждый файл добавляет собственную логику, а затем библиотека сама вызывает обработчики очистки и убирает служебные переменные.
ZIP содержит только QVS-файлы в папке Scripts с сохранением структуры каталогов
01 / АРХИТЕКТУРА
Вместо ручного перечисления файлов `IncludeLib` обходит каталог, формирует цепочку `MUST_INCLUDE` и одновременно собирает вызовы очистки для каждого подключённого модуля.
Приложение запрашивает конкретную группу библиотек.
Qlik находит все QVS-файлы в выбранном каталоге.
Из найденных путей динамически собирается очередь подключения.
После работы вызываются `_clear` всех загруженных подпрограмм.
02 / КОРОТКО ОБ ИДЕЕ
Подпрограммы раскладываются по назначению: `ЛОГ`, `ККД`, `ДЕВ` и так далее. `$(pInclude(ККД))` обходит выбранную папку и подключает все QVS-файлы — отдельный `MUST_INCLUDE` для нового модуля не нужен.
СоглашениеСлужебные переменные начинаются с `p`, а каждый модуль предоставляет собственный обработчик `_clear`.
ИспользованиеПодключаем общий `Scripts.qvs`, нужную группу и завершаем загрузку через `Call Exit`.
ОбменQVS-файл, собранный по этим правилам, можно передать коллеге: достаточно положить его в соответствующую папку.
По модели использования это отдалённо напоминает класс: с внешними методами и скрытым по соглашению служебным состоянием. Это только аналогия — сам Qlik Script объектно-ориентированным от этого не становится.
03 / МЕХАНИКА
У Qlik Script нет привычной изоляции локальных переменных внутри подключённых подпрограмм. Поэтому вместе с цепочкой include формируется `pClear`: список вызовов одноимённых `_clear`, который очищает служебное состояние всей библиотеки.
$(MUST_INCLUDE=lib://*/Scripts/Scripts.qvs); // подключаем общий скрипт
$(pInclude(ККД)); // подключаем библиотеку скриптов
// Работаем
Call Exit;
04 / КОНТРАКТ МОДУЛЯ
Единые правила уменьшают конфликты глобальных переменных и позволяют подключать новые QVS-файлы без переписывания центрального загрузчика.
Модуль умеет вывести в trace назначение, версию, ответственного и варианты вызова.
Подпрограмма без постфикса предоставляет публичный сценарий использования модуля.
Каждый модуль знает свои служебные переменные и гарантированно очищает их после работы.
05 / МОДУЛИ
Проверки и технические операции вызываются тем же способом, что и обычная бизнес-логика приложения.
Резервные копии QVD по расписанию: при каждой загрузке, ежедневно, еженедельно или ежемесячно.
Сопоставление текущей таблицы с сохранённой версией по ключам, количеству и значениям мер.
Контроль неожиданных изменений количества строк между этапами загрузки.
Поиск неуникальных записей по ключу с исключениями и отдельным списком мер.
Журналирование приложения, источников, сохранений, измерений, мер, тегов и комментариев.
Достаточно положить модуль в библиотечную папку и реализовать контракт `_clear` — загрузчик найдёт его сам.
06 / ДОКУМЕНТАЦИЯ
Основной архив содержит только исполняемые QVS-файлы. Описание модулей и правила расширения библиотеки можно скачать отдельно.
QLIK ENGINEERING
Архитектура библиотеки создавалась для повторного использования, контролируемой поддержки и чистого состояния после выполнения.