Кнопка «Назад» с блэкджеком и триггерами

by Андрей Белобородов
Кнопка «Назад» с блэкджеком и триггерами

Вступление

Если ты когда-нибудь создавал триггер по событию в QlikView, то обязательно сталкивался с тем, что кнопка «Назад» перестала работать.

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


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

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

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

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

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


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

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

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

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

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

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

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

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

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


Эпилог

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

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

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

Если вам понравилась статья или у вас есть идеи как сделать это лучше, пишите мне на почту: me@andbel.it

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

August 31, 2018
by Андрей Белобородов
Qlik
Разработка
Лучшие практики