Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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.
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.
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:
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.
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
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.
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.
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.
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.
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:
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.
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.
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.