Если вы когда-нибудь создавали триггер по событию в QlikView, то обязательно сталкивались с тем, что кнопка «Назад» перестала работать. Сегодня Андрей Белобородов расскажет, как с этим бороться – сначала короткая версия, для опытных разработчиков, а затем – длинная, с подробной инструкцией для новичков. Ну и в конце статьи можно будет скачать qvw-файл с примером.

Итак, ты создал триггер по событию в QlikView, а кнопка «Назад» перестала работать. Связано это с тем, что кнопка работает не только с выборками, но и с переменными. Если они изменялись, то нажатие на кнопку «Назад» вернет тебя не к предыдущей выборке, как ты этого хочешь, а к предыдущему значению переменной (спойлер — тебе это на хрен не надо).

Что же делать?

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

Алгоритм действий следующий:

  1. Создаем N альтернативных состояний, где N — это потенциальное количество шагов назад
  2. Создаем N триггеров «Copy State Contents» на событие «OnAnySelect», которые будут переносить выборки из одного состояния в другое.
  3. Создаем кнопку «Назад» с триггерами «Copy State Contents», но теперь уже в обратном направлении.

Скачать пример можно тут «Кнопка назад.qvw»

Для тех кто в танке, все подробно и с картинками 🙂

Создаем альтернативные состояния:

Вешаем триггер на событие «OnAnySelect»:

Важно: первый триггер копирует из предпоследнего в последний, следующий из пред-предпоследнего в предпоследний, ну и так далее…

Дошли до первого, который копирует выборки из состояния «$» (для тех, кто не учил матчасть — дефолтное состояние):

Вся эта ерунда работает вот так (я даже не поленился нарисовать):

Теперь создаем триггер для кнопки «Назад» (все то же самое, только в обратном направлении):

Важно: первый триггер копирует из второго в первый, следующий из третьего во второй, ну и так далее…

Как вся ерунда работает в обратном направлении я уже поленился нарисовать, сорьки 🙂

Эпилог

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

Есть еще как минимум пара способов как это сделать:

  • Описанный случай, но только через переменную (если использовать триггер «Copy State Contents» в несуществующее состояние, то оно создается автоматически — можно с этим что-то придумать)
  • Через «$N», где N — это переменная содержащая кол-во шагов назад. В этом случае придется прописывать эту хрень во всех формулах, а еще выборки не будут меняться. Короче так себе способ.

Дублирую ссылку на файл с примером: «Кнопка назад.qvw»

Увидимся в следующих выпусках!

Автор: Андрей Белобородов