Skip to main content
Announcements
Defect acknowledgement with Nprinting Engine May 2022 SR2, please READ HERE
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

OnDemand Nprinting Report

I have created 2 qvw files f1.qvw (saved in normal mode)  and f1_run.qvw(saved in web-view mode),

f1.qvw has a chart containing the name of recipients, their email, filter condition, and group. Example shown below

Chart 1

EmpName     Email                              Filter                                       Group

a1                   a1@gmail.com              EmpName={a1}<verify>         EmpGroup

a2                   a2@gmail.com              EmpName={a2}<verify>         EmpGroup

...........

and another chart containing

Chart 2

EmpName     Customer                     Detail                         Year               Amount

a1                  xxx                            oiuwoier                       yyyy       99.99

a1                  yyy                             oiwueroi                      yyyy       908.99

a2  ..............

I build a xx.nsq file with this f1.qvw as the connection. The nsq has a recipient import task (RecipientImport) which imports the recipients from the first chart. Report in the .nsq file is build on second chart and cycles on the EmpName (i.e. separate report for each Emp). I also put condition chart 2 has Values. There are no filter in the report.  Another task to run the report (RunReport) which will generate report for the recipients and deliver report to them containing data pertaining to them. No filters on the Task. Only recipient have filters.

When I do the test run of the report it imports the recipients and delivers the report correctly to the recipients.

Now I want to run the report On-Demand with user selection. So, I created f1_run.qvw which has a list box to select the EmpName, Year and Customer. I added Task Extension Object to import the recipients with current selection and connected it to recipient import task(RecipientImport). Another Task Extension Object to run the report with current selection and connected it  to Report run task (RunReport) of the nsq.

Question :

1. When I run the recipient import task from f1_run.qvw, each time I run all the recipients are imported and not those who are selected and in the .nsq file a Recipient import task shows another entry of task RecipientImport.( i.e. now in .nsq I see 2 RecipientImport.Task with same name). Is it Ok that each time I run the report I have another RecipientImport Task in my .nsq file.

2. Is it possible to import only those recipients whos names are selected in the list box containing EmpName on the f1_run.qvw.

3. Is it possible to do test run of On-Demand Report, since I do not want to send emails to the actual recipients while testing.

4. As I have understood that .nsq file cannot interact with qvw saved in webview mode, so it needs for connection qvw saved without webview mode (so I created f1.qvw).  Extension Objects can be seen in qvw saved in Webview mode (so I created f1_run.qvw). I am not clear now how selections on f1_run.qvw filter data in .nsq file since it is having connection with f1.qvw only.

Please if someone could clarify each of my questions.

1 Solution

Accepted Solutions
Not applicable
Author

Hi Daniel,

The issue is resolved with the help of Nprinting Support Portal. I was doing everything right but in the Report Task I had added EMPGroup as the recipient. So it was trying to run the report for all the imported employee who belong to the group. I removed EMPGroup from the recipient and added an empty recipients. Then when I run the report for the selected recipient, (additional recipient in the extension object on the qvw saved in web view mode). It delivers the report correctly to the selected recipients.

Verify filter is used on each recipient so that he gets report pertaining to himself.

Thanks for your time.

View solution in original post

15 Replies
Daniel_Jenkins
Specialist III
Specialist III

Hi Tripti,

If you want to use On-Demand to send a report to a user selected list of recipients, I suggest that you do not execute an Import Recipient Task every time but rather:

  • create the report task with no recipients in the NPrinting project
  • use a list box containing a user selectable list of recipients on the QlikView document with the On-Demand extension objects
  • use the GetFieldSelections() function in the Additional Recipients field to capture and send the list of selected recipients to the NPrinting Server Service

I suggest that you download our Training Materials NP_Training.zip - Box and take a look at the "Run a Task that sends a report to selected recipients" section of the SalesDemo for Ajax.qvw document.

It is not possible to do a test run for on-demand. I suggest that you use test recipients (with test e-mail addresses) for testing.

The QlikView document being used as a connection (source) in the NSQ should always be saved with WebView turned off - let's call it X. The QlikView document with the On-Demand extension objects must of course have WebView turned on - let's call it Y. Selections are made on Y and passed to the NPrinting Server Service via the Extension Object. NPrinting uses the connection and retrieves the required QlikView objects for the report from X and applies the selections passed to it by the On-Demand Extension Object (if Use current selections is checked).

HTH - Daniel.

Not applicable
Author

I tried with Additional Recipients, If the report is not having the recipient, then it gives the error Recipient not found.

As I have understood from the tutorial "Run a Task that sends a report to selected recipients", the recipient has to be there in the .nsq project.

I have say 20 recipients and I run a schedule every day, (since my data and recipient list may change) to reload the X.qvw which is saved in non-web view mode, and also to import the recipients but do not run the report.

Now I allow the user to select the recipient and run the report. The report runs and delivers to the selected recipients but since I have used verify with the filter for the recipients, the Task show the fail status in Y.qvw (Web view mode) with warning could not generate report for the recipients not selected.

If I do not use the verify option with the filter then it sends report to all the recipients. I do not want to send the report to other recipients.

If you could help

Not applicable
Author

I have used cycle to create separate reports for each user. Condition HasValues.

Also recipient has filter name={himself}<verify> option.

My aim is to send report to selected recipient with data pertaining to himself.

1. I want to know the order of execution of different things, when on-Demand user selects say only 3 recipients out of 20 available in the nsq.

2. Order in which filters/ cycle/ condition are applied.

3. What are the minimum things I should do use in terms of filters/ cycle/ conditions to send report to selected recipient with data pertaining to himself.

If someone could clarify my doubt.

Daniel_Jenkins
Specialist III
Specialist III

Hi Tripti,

Yes, the recipient must exist in the NSQ or the task will fail with Specified recipient in On-Demand request not found: <recipient>. So you need to make sure you run the Import Recipient task before hand and ensure that all the recipients available for selection in Y already exist in the NSQ. You mention that you are running a task to reload X and update the recipient list in the NSQ - when are you updating Y? Why not do that at the same time?

The <verify> option behavior you are experiencing is working as designed. If you do not use verify for a filter and there are no possible results for that filter, it is as if there are no selections in the QlikView document so the complete set is made available. When <verify> is used and there is no possible result set for the filter then an empty set is returned.

E.g. Let us say you have a field called Year with 3 values {2013, 2014, 2015}.

Filter Year={2016} without verify will return all values for Year {2013,2014,2015} . Filter Year={2016}<verify> will return {} - empty set.

Addressing your other questions:

I have used cycle to create separate reports for each user. Condition HasValues.

Also recipient has filter name={himself}<verify> option.

My aim is to send report to selected recipient with data pertaining to himself.

Since you are using recipient filters you should not use Cycle. NPrinting will automatically apply the filter and create separate reports and distribute as set up.

1. I want to know the order of execution of different things, when on-Demand user selects say only 3 recipients out of 20 available in the nsq.

You can find the exact sequence of events in the QlikView NPrinting Server log file. Look under Log Settings to learn the location of the log files.

2. Order in which filters/ cycle/ condition are applied.

Filters are applied in this sequence: Task > Recipient > CYCLE > Report > LEVEL/PAGE > Object. Check this article: How to Apply a Specific Filter to Tables or Images – Customer Feedback for Vizubi. This means that if you have a filter on the same field later in the sequence, it will override the filter applied earlier. For example if you have filters Year={2013,2015} at the task level and Year={2015} at the Report level, the report will be filtered for Year={2015} as it will be applied later and therefore override the earlier filter. Filters on different fields are all ANDed.

3. What are the minimum things I should do use in terms of filters/ cycle/ conditions to send report to selected recipient with data pertaining to himself.

At minimum you will need to define recipient filters for each recipient. You can define them in your data source and import them as part of your Import Recipient task: Filter Syntax, Parameters, and Options for Importing Recipients

Then you can choose a distribution method..

To distribute user specific reports by e-mail: How to Distribute User Specific QlikView Reports by E-mail

To distribute user specific reports to user folders: How to Distribute User Specific QlikView Reports to User Folders – Customer Feedback for Vizubi

If you want further assistance with your specific environment I suggest you open a case with Qlik Support via the customer portal: QlikView Customer Portal - Business Intelligence (BI) Reporting Software Solutions | Qlik

Best,

Daniel.

Not applicable
Author

Hi Daniel,

Thanks for all your time. I am using cycle because I have one recipient to whom I want to sent report user wise for all the selected recipient. This recipient is the manager of all the employees and therefore should received all the individual reports. I have not used any filter for this recipient.

As you have also mentioned, When I have a filter EmployeeName={name}<verify> for each recipient task runs fine with error and task failed status but distribution is ok.

And if I remove the verify option it generates report for all the recipient. Selected recipients have report pertaining to them and not selected recipients have report pertaining to all the recipients selected in the listbox of y.qvw since for their filter no data is available and so it picks all the selected data.

Now I want the report should not be delivered to recipients not selected. Is there any way out to accomplish this.

Not applicable
Author

If it is possible to import only the selected recipients the issue could be resolved. Is there any way to import only the selected recipients.

Daniel_Jenkins
Specialist III
Specialist III

Hi Tripti,

Have you tried the method I suggested? Please download the Training Files and take a look at the "Run a Task that sends a report to selected recipients" section of the SalesDemo for Ajax.qvw document. In my opinion that is the simplest solution.

I don't see a straightforward way to use On-Demand to import only the recipients selected in Y.qvw (the document with the On-demand extension objects). If you want to do it your way I believe you would have to:

  • have an import recipient task in the NSQ that uses a source, say RECP.XLSX with the import rule including All recipients and Delete old recipients enabled. Make sure they are all in one group and that group is assigned as the only recipient for the report task. Recipient filters should also be included.
  • somehow overwrite RECP.XLSX with another file that contains only the selected recipients along with their e-mail addresses, filters etc. Not sure how you would do this as I believe running macros that create files from the AJAX client is not the way to go
  • run the recipient task so that only the selected recipients now exist in the group
  • run the report task that sends out the duly filtered reports to the recipients in the group

All this seems way too complicated and I have not tested the process. The method in the training files has been tested and works fine.

If you cannot get it to work I suggest you open a case with Qlik Support. It will really help if you include a sample project (NSQ, QVW, Report templates, Excel file with recipients) and also indicate which recipient reports to which manager.

Best,

Daniel.

Not applicable
Author

Hi Daniel,

The issue is resolved with the help of Nprinting Support Portal. I was doing everything right but in the Report Task I had added EMPGroup as the recipient. So it was trying to run the report for all the imported employee who belong to the group. I removed EMPGroup from the recipient and added an empty recipients. Then when I run the report for the selected recipient, (additional recipient in the extension object on the qvw saved in web view mode). It delivers the report correctly to the selected recipients.

Verify filter is used on each recipient so that he gets report pertaining to himself.

Thanks for your time.

Daniel_Jenkins
Specialist III
Specialist III

Hi Tripti,

Yes, as I mentioned in my very first point "create the report task with no recipients...."

Glad you got it working.

Best,

Daniel.