Всем, привет!
Хочу поделиться нестандартным опытом применения QlikView для кладовщиков. Да-да, аналитика в массы! 😀
Киоск производительности персонала в QlikView: задача
Задача такая: у рядовых сотрудников нет четкого понимания формирования сдельной части оплаты труда. Из-за этого в конце каждого месяца выстраивалась очередь к начальнику склада с вопросами: “А почему столько я получил? А почему в прошлом месяце больше?”. Это отнимало много времени: как у сотрудников, так и у руководителя.
Если кратко, то задачу можно описать следующим образом:
- Проинформировать рядовых сотрудников склада об их производительности.
- Информация не должна обновляться слишком часто, чтобы это не отвлекало и не превратилось в игру «сделал перемещение — сбегал проверил».
- Максимальная простота и наглядность интерфейса.
- Защищенность от возможности что-то перенастроить или посмотреть чужие данные.
- Физическая доступность для персонала.
Реализация
Исходные данные о производительности уже собирались и анализировались в центральном офисе. На складе было решено установить специальное рабочее место для контроля собственной производительности, доступной для сотрудника склада. Соответственно, дано:
- Данные о производительности каждого сотрудника
- Обычная рабочая станция, у которой настроен общий доступ к диску и установлен QlikView,
- Локальный клиент QlikView Personal Edition (мы же хотим сэкономить лицензии 😀 ).
Два раза в сутки, примерно в конце рабочей смены, с центрального сервера QlikView данные о производительности размещались на локальный диск «Киоска производиельности» (далее по тексту именно так я буду именовать развернутое на складе решение).
Разработчиками был нарисован простенький интерфейс из 3 таблиц:
- Производительность за прошедшие 3 смены.
- Суммарная производительность за текущий расчетный период.
- Суммарная производительность за прошедший расчетный период.
А теперь предстояло решить главную проблему: как кладовщик будет выбирать себя в фильтрах? Ведь он не должен иметь возможности посмотреть чужую статистику и должен максимально быстро найти именно себя.
Решили использовать понятную и привычную для всех сотрудников склада технологию – бейджик со своим уникальным логином и соответствующим штрихкодом. Сканируя этот бейджик, он регистрирует все свои работы на складе. Поэтому мы подключили к киоску самый обычный сканер штрих кодов, ведь он является чуть менее распространенным, но, тем не менее, обычным средством ввода информации.
В нашем Киоске сканер преобразует отсканированный штрихкод в текст, и алгоритм работы получился следующим:
- Человек сканирует штрихкод,
- QlikView воспринимает это как ввод текста в строку поиска по полю «логин».
Оставалось лишь немного настроить сканер, чтобы он автоматически добавлял символ перехода на новую строку после отсканированного текста (то есть чтобы QlikView получал следующую информацию: «Логин+Enter»).
Вот так Киоск производительности выглядит в собранном состоянии:
Из нестандартного могу, пожалуй, выделить следующие элементы:
- Как заставить экран ОС не блокироваться? Я установил простейшую программу, которая двигала курсор по экрану каждые 2 минуты из угла в угол. Подобное приложение можно скачать здесь: https://movemouse.codeplex.com
- Как оставлять нужный фильтр с логином всегда активным? Достаточно просто сделать его активным, ведь после отключения мыши единственный источник ввода информации — сканер штрихкодов. Но на всякий случай я еще настроил тригер «on any select» — активация нужного объекта.
- Как перезагружать локальное приложение без участия сервера и необходимости его переоткрывать? Windows scheduler не подошел, т.к. он бы создавал новое приложение QlikView (уверен, что можно и его использовать – буду рад прочитать об этом в комментариях). Но я решил не выходить за рамки оболочки одного приложения QlikView и не использовать иные приложения, ведь чем меньше составных частей в решении, тем меньше шанс, что будет сбой. Вот, что я сделал:
a. Настроил тригер на любое изменение переменной. Действие — reload
b. А вот значение переменной я сделал вычисляемым:
=if(hour(now())=9 and Minute(now())=10 and Second(now())>55,1,0)
Таким образом, каждый день в 9:10:55 значение переменной изменялось с «0» на «1» и срабатывал тригер, который в свою очередь запускал перезагрузку. Отдельным бонусом является то, что при такой перезагрузке ее нельзя отменить и по завершении QlikView не выводит перечень доступных полей, то есть он просто возвращает в интерфейс отчета с обновленными данными.
Заключение или умей мыслить нестандартно
Своим постом я хотел рассказать о том, что даже применение совсем элементарных функций QlikView может решать реальную задачу бизнеса, надо лишь чуть шире взглянуть на методы достижения результата. Уверен, что даже новичок после просмотра пары видео в интернете сможет создать подобное приложение, именно поэтому я не описываю само приложение (там все очень просто и неинтересно – скриншот я приложил).
Желаю всем удачи в творческом подходе к решению аналитических задач! Жду ваших комментариев и идей по нестандартному использованию QlikView.
Интересная и полезная статья!
И по ней сразу вопрос (ну не совсем по ней) — я так понят у вас стоит просто локальный клиент.
а вот у нас стоит доступ через WEB, и есть отчет, который обновляется данными каждые 5 минут.
Может сможете посоветовать, как автоматически можно попробовать обновлять отображение этого отчета в WEB — (Хотим повесить монитор, что бы почти в реальном времени видеть данные).
У нас есть и такая реализация. На сервере есть отчет, который обновляется раз в 5 минут и на выходе генерит csv файл. Данный файл с данными размещается на портале. И есть страничка портала, которая отрисовывает данные из csv. И уже в самой страничке прописан код, который ее перерисовывает при изменении данных в csv.
Каков механизм передачи информации от сканера в QV?
Сканер настроен таким образом, что считывает штрих-код и преобразует его в строку в конце которой подставляет символ перевода каретки (аналог нажатию enter). А на стороне клика сделано так, что объект для поиска (фильтр) всегда активен и ждет ввода данных. на время запуска перезагрузки экран закрывается всплывающим сообщением, чтобы сканирование в этот момент не «нажало» кнопку «прервать».
Добрый день.
Очень интересная статья, и как раз то, что мы хотим внедрить у себя на складе.
Есть несколько вопросов:
1. Можно ли сделать все своими силами, или лучше прибегнуть к помощи внешних разработчиков?
2. Хотим чтобы информация постоянно высвечивалась на мониторе с рейтингом лучших, а если сотрудник не попал в топ, то подойдя к монитору (ПК) смог бы узнать всю информацию по себе
3. Сколько по времени заняло у Вас внедрение этого функционала?