Коллеги, добрый день!

В сегодняшней статье я хочу поделиться некоторым своим опытом по практическому применению такого инструмента, как 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 — найти способ заставить его применять в итоговом отчете Структуру/Группировку (пресловутые «плюсики»), а также закрепление областей и некоторые другие «красивости»:

XLS-отчет для почтовой рассылки

После экспериментов, оказалось, что самый простой способ это сделать — написать VBA-макрос, который будет запускаться при открытии пользователем XLS-файла и выполнять все необходимые действия по созданию структуры и другим преобразованиям на листе.

Код макроса можно как написать вручную, так и автоматически сгенерировать с помощью функции «Запись макроса». Триггер запуска нужно установить в Workbook-Open:

Workbook-Open

 XLS-книгу с макросом нужно сохранить в формате *.XLSM и в настройках отчета в NPrinting выставить такую опцию:

Workbook-Open

А также, в теле письма рекомендуется проинформировать пользователей, что, возможно, Excel выдаст предупреждение о безопасности. Я написал такой текст и добавил его к тексту письма от робота рассылки NPrinting:

«Примечание: отчет содержит макрос, который выполняет группировки строк для улучшения читабельности. По умолчанию он должен запуститься при открытии файла. Если этого не происходит, возможно, Excel заблокировал макросы из соображений безопасности — в таком случае обычно выводится предупреждающее сообщение. Включить выполнение макросов можно следующим образом: Меню Файл — Параметры — Центр управления безопасностью — Параметры центра — Параметры макросов — Включить все макросы.»

Кейс: email уведомления от 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 с отчетом

После того, как приложение QVW создано, нужно создать новый проект NPrinting со следующими элементами:

  1. Sources: QVW-приложение рассмотренное выше;
  2. Recipients: e-mail адреса получателей;
  3. Reports: HTML Reports — достаточно вынести в шаблон нужный чарт из QVW-приложения;
  4. Tasks: создать один таск на Reload указанного QVW, второй таск — Report Task с HTML-отчетом из предыдущего пункта и нужным Message (в теме письма можно использовать переменные, поэтому я вставил туда ту, которая возвращает слово «РАССИНХРОНИЗАЦИЯ» капслоком в случае превышения порога;
  5. Shedules: создать Job с тасками из предыдущего пункта (QVW Reload первым).

Далее, нужно создать новый таск QlikView Server/Publisher, который будет стартовать по заданному триггеру (завершение другого таска, как в моем случае), запускать NPrinting из командной строки с параметрами на открытие NSQ-файла проекта и сразу же запуск джоба из него. Делается это с помощью Supporting Task со следующими параметрами:

supporting tasks NPrinting

В поле 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-отчет и отсылать письмо с ним во вложении.

Примеры рассылаемых писем с уведомлениями:

Все хорошо —

HTML-отчет

Все плохо —

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