Коллеги, добрый день!
В сегодняшней статье я хочу поделиться некоторым своим опытом по практическому применению такого инструмента, как NPrinting.
Наверняка многие из вас либо слышали о нем, либо сами пробовали в действии. В любом случае, надеюсь, вас заинтересуют мои кейсы по организации рассылок с помощью QlikView NPrinting.
Краткая предыстория
Для начала упомяну о том, что это за продукт, и как он эволюционировал.
NPrinting появился на свет в 2008 году, его разработала американо-итальянская компания Vizubi. Продукт являл собой надстройку над QlikView, и был призван решать следующие задачи:
- создавать шаблонные отчеты в форматах Office ( Word/ Excel/ PowerPoint) с данными и объектами из QlikView;
- персонифицировать отчеты для различных адресатов;
- централизованно и автоматически распространять отчеты по различным каналам (настраиваемый e-mail, сетевые папки, публикация на портал и т. п.).
Ролевая модель NPrinting — подсистема централизованной подготовки регламентированной отчетности на основе уже имеющихся наработок на QlikView.
Основные возможности:
- NPrinting позволяет создавать шаблоны отчетов в форматах Word/Excel/PowerPoint/HTML и импортировать в них данные и элементы из приложений QlikView (таблицы, диаграммы, списки) простым drag & drop.
- К шаблонам прикрепляются регламентные задания, указывающие, какие данные нужно загружать в копию отчета, и для каких адресатов ее распространять.
- Все настройки выполняются через интуитивный графический интерфейс, без необходимости написания кода.
Продукт развивался, обрастал клиентами и поклонниками, и стал настолько популярен, что QlikTech решил приобрести компанию-разработчика и включить его в свой портфель. Начиная с января 2015, NPrinting вошел в состав продуктов под торговой маркой Qlik, его нынешнее название — QlikView® NPrinting.
Кейс: Структурированный XLS-отчет для почтовой рассылки по компании
В этом кейсе, заказчику требовалось автоматизировать его «стандартный» ежедневный отчет по продажам, структура и вид которого «исторически сложились и изменению не подлежат». При решении этой задачи потребовалось придумать различные хитрости, в том числе связанные с нетипичными иерархиями (например, вхождение некоторых элементов в две иерархии одновременно, при том, что обе нужно показать в одной таблице), а в части NPrinting — найти способ заставить его применять в итоговом отчете Структуру/Группировку (пресловутые «плюсики»), а также закрепление областей и некоторые другие «красивости»:
После экспериментов, оказалось, что самый простой способ это сделать — написать VBA-макрос, который будет запускаться при открытии пользователем XLS-файла и выполнять все необходимые действия по созданию структуры и другим преобразованиям на листе.
Код макроса можно как написать вручную, так и автоматически сгенерировать с помощью функции «Запись макроса». Триггер запуска нужно установить в Workbook-Open:
XLS-книгу с макросом нужно сохранить в формате *.XLSM и в настройках отчета в NPrinting выставить такую опцию:
А также, в теле письма рекомендуется проинформировать пользователей, что, возможно, Excel выдаст предупреждение о безопасности. Я написал такой текст и добавил его к тексту письма от робота рассылки NPrinting:
«Примечание: отчет содержит макрос, который выполняет группировки строк для улучшения читабельности. По умолчанию он должен запуститься при открытии файла. Если этого не происходит, возможно, Excel заблокировал макросы из соображений безопасности — в таком случае обычно выводится предупреждающее сообщение. Включить выполнение макросов можно следующим образом: Меню Файл — Параметры — Центр управления безопасностью — Параметры центра — Параметры макросов — Включить все макросы.»
Кейс: e—mail уведомления от QlikView Server/Publisher с компактным отчетом в теле письма
Как известно, одной из «фишек» QlikView Desktop/QlikView Server/Publisher является возможность рассылки e-mail уведомлений о тех или иных событиях. Например:
- уведомления об ошибках при выполнении тасков QV Server/Publisher можно настроить в Management Console (System-Setup-Distribution Services-Alert E-mail),
- уведомления с настраиваемым сообщением в формате plain text можно повесить на открытие/обновление конкретного приложения QVW (QV Desktop: Tools — Alerts — Mail Recepients )
Но что делать, если мне, как администратору, требуется регулярно получать сообщение с отчетом внутри сразу после выполнения определенного таска в Publisher?
И здесь на выручку может прийти NPrinting.
Сначала необходимо подготовить приложение QVW с собственно отчетом, который требуется получить (под отчетом здесь понимается объект визуализации QV). В моем случае приложение генерирует отчет о степени синхронности данных между двумя источниками данных, вот наглядный скриншот:
После того, как приложение QVW создано, нужно создать новый проект NPrinting со следующими элементами:
- Sources: QVW-приложение рассмотренное выше;
- Recipients: e-mail адреса получателей;
- Reports: HTML Reports — достаточно вынести в шаблон нужный чарт из QVW-приложения;
- Tasks: создать один таск на Reload указанного QVW, второй таск — Report Task с HTML-отчетом из предыдущего пункта и нужным Message (в теме письма можно использовать переменные, поэтому я вставил туда ту, которая возвращает слово «РАССИНХРОНИЗАЦИЯ» капслоком в случае превышения порога;
- Shedules: создать Job с тасками из предыдущего пункта (QVW Reload первым).
Далее, нужно создать новый таск QlikView Server/Publisher, который будет стартовать по заданному триггеру (завершение другого таска, как в моем случае), запускать NPrinting из командной строки с параметрами на открытие NSQ-файла проекта и сразу же запуск джоба из него. Делается это с помощью Supporting Task со следующими параметрами:
В поле Command Line Statement нужно прописать такую строку:
«C:\Program Files (x86)\NPrinting\Client\NPrinting.exe» /NPrintingFile «c:\NPrinting\Projects\Синхронность между ZIC_V02 и ZRT_V01.nsq» /Job «E-mail alert: Синхронность между ZIC_V02 и ZRT_V01»
Теперь при активации соответствующего триггера, QVS будет сам запускать NPrinting (понятно, что для этого он должен быть установлен на той же машине), тот будет обновлять QVW-приложение, формировать HTML-отчет и отсылать письмо с ним во вложении.
Примеры рассылаемых писем с уведомлениями:
Все хорошо —
Все плохо —
На этом на сегодня все. В следующий раз расскажу о более сложно кейсе, где NPrinting работает в связке с QlikView, Excel и PowerPoint для автоматизации процесса бюджетирования.
P.s. Несколько полезных ссылок для тех, кто планирует поизучать продукт подробнее:
- http://www.qlik.com/products/qlikview/NPrinting — страница продукта на официальном сайте Qlik;
- https://community.qlik.com/docs/DOC-14618 — копия раздела Knowledge base с сайта Vizubi, теперь располагающаяся в Qlik Community (и к большому сожалению, удаленная из оригинального источника — превосходная структуризация и поиск не были перенесены на движок коммюнити, видимо, из-за его технологических ограничений).
P.p.s. Также дополнительные обучающие материалы, которые помогут настроить первые отчеты в NPrinting:
1. Презентация по функционалу NPrinting и основным настройкам:
2. Видео о том, как настроить отчеты в NPrinting
3. Видео о более продвинутом функционале NPrinting – Pixel Perfect и MultiDoc
Спасибо, Отличная инструкция по использованию nPrinting! Хотел уточнить: для чего нужна успешная рассылка? Не стоит ли добавить логику, чтобы письмо приходило только в случаи рассинхронизации, чтобы уменьшить число писем в ящике?
Александр, успешная рассылка нужна для того, чтобы встав утром дома и взглянув на экран гаджета, видеть на нем утренние уведомления, что таски отработали штатно и нигде ничего не зависло. Если их в обычное время не появилось — тут же дома включаю VPN и проверяю в чем причина отставания экстракций от графика.
Василий, промахнулись, наверное.
Василий, спасибо, за интересный опыт! Жалко, что не удалось убедить клиента сделать первый отчет в своднике. Кстати о сводных таблицах, пробовали ли Вы использовать слайсеры при разработке отчетов в Nprinting? У меня с этим проблема- слайсеры вставить можно, но при открытии отчета выскакивают ошибка. При этом есть ощущение, что ее можно как-то обойти.
См. Комментарий ниже.
Тамара, по поводу слайсеров в Excel для отчетов nprinting — нет, не пробовал, но по идее должно работать. Видится так — вы создаете excel шаблон с двумя листами, на одном будет размещаться плоская таблица из qlikview, на другом — сводная таблица excel, ссылающаяся на таблицу на первом листе. В свойствах сводной таблицы выставьте опцию «обновлять при открытии книги». Добавьте к ней Слайсеры. В настройках шаблона внутри nprinting, в свойствах объекта «плоская таблица» поставьте опцию, запрещающую смещение ячеек (не помню названия, чейчас посмотреть негде). Это нужно для того, чтобы ссылка в свойствах сводной таблицы excel не съезжала.
Если проблема не исчезнет — свяжитесь со мной личным сообщением здесь или через linkedIn.
Василий,
Спасибо, это все учтено и работает прекрасно. Для счастья не хватает только слайсеров. )) Если по случаю будете с этм разбираться, черкните, плиз где-нибудь, была бы оч признательна.
Тамара, попробовал сделать кейс со слайсерами — действительно, как вы и сказали, при Preview вылезает неинформативная ошибка. Обойти в лоб с помощью настроек слайсера — не получилось. Но нашел обходной путь…. VBA-Макрос ))) Вот такой простейший код мне Excel сгенерил, работает ОК:
ActiveWorkbook.SlicerCaches.Add2(ActiveSheet.PivotTables(«PivotTable1»), _
«Dim01»).Slicers.Add ActiveSheet, , «Dim01», «Dim01», 211.5, 425.25, 144, 187.5
ActiveSheet.Shapes.Range(Array(«Dim01»)).Select
P.s. на коммьюнити тоже сталкивались с такой проблемой, https://community.qlik.com/thread/193200 — отписал в треде вариант решения.
Василий, а в какой момент срабатывает макрос?
Триггер на запуск макроса срабатывает в момент открытия книги Excel, при соответствующих настройках безопасности (может быть выдано предупреждение и запрос). См. статью выше.
Василий, спасибо!
А почему ошибка вылетает не разбирались? нельзя ее как-то по другому предупредить?
Макросы только от полной безысходности использую. ))
Тамара, чтобы разобраться в том, почему она вылетает, нужно быть разработчиком продукта )) Я только могу констатировать условия, при которых это проявляется.
Можете написать в поддержку Клика, может быть это кандидат на баг, который мог бы быть исправлен в последующих версиях.
Ладно, Василий, попробую, спасибо большое за ответы!
Василий,скажите пожалуйста,а сталкивались ли вы с применением макроса для рассылки отчета по адресатам,только без Нпринтинга?Если да,то насколько сложный макрос?Спасибо!
Нет, сам лично не сталкивался. Но у АТК есть такое решение (правда не знаю, актуально ли оно в свете существования Нпринтинг):
QlikView ChartRobot – продукт, разработанный Консультационной Группой АТК, предназначенный для создания отчетов из QlikView приложений, их автоматической рассылки согласно расписанию.
Возможности:
1)Формирование отчетов в форматах:Excel, HTML, PDF, TXT, XML
2)Рассылка отчетов с отфильтрованными данными на определенные адреса пользователей
3)Хранение актуальных (или всех) отчетов пользователей в «привязанных» к ним папках. Возможность автоматического удаления файлов из папок после завершения рассылки
4)Архивация экспортируемых отчетов перед рассылкой (ZIP)
5)Гибкая настройка экспортируемых отчетов
6)И многое другое…