Fragensteller
Berichts Vorschau bei den Angeboten

Frage
-
Hallo zusammen.
Würde gerne eine Vorschau bei den Angeboten machen.
Heißt ich bin in den Angeboten - Mache einen neuen Navigationsbutton und dann wird der Angebotsreport (Berichte) ausgeführt.
Den Button Vorschau habe ich schon, ein Skript auch schon. Aber der Bericht wird nicht ausgeführt.
Anbei noch das Skript. Vielleicht findet einer von euch den Fehler oder hat eine andere Lösung parat.<html><head><meta charset="utf-8"></head><body onload="OnLoad();" onresize="OnResizeComplete();">
<meta http-equiv="X-UA-Compatible" content="IE=5.0000">
<title></title>
<script type="text/javascript">
OnLoad = function () {
if (window.location.href.indexOf('webresourceeditor') != -1)
return;
var parentEntity = window.parent.Xrm.Page.data.entity;
var reporturl = window.parent.Xrm.Page.context.prependOrgName(
"/crmreports/viewer/viewer.aspx?action=run&helpID=Inlinequote.rdl&id={2fa994fc-aad1-e211-825c-00505684165b}&p:quoteid="
+ parentEntity.getId());
var reportFrame = document.getElementById("reportContainer");
reportFrame.src = reporturl;
reportFrame.onreadystatechange = function () {
if (reportFrame.readyState != "complete")
return;
var menubar = reportFrame.contentWindow.document.getElementById('crmMenuBar');
if (menubar != null) {
menubar.parentNode.parentNode.style.display = "none";
}var resultsFrame = reportFrame.contentWindow.document.getElementById('resultFrame');
var timerId = window.setInterval(function () {
var resultsFrame = reportFrame.contentWindow.document.getElementById('resultFrame');
if (resultsFrame == null)
return;if (resultsFrame.contentWindow.document.getElementById('ParametersRowreportViewer') == null)
return;window.clearInterval(timerId);
resultsFrame.contentWindow.document.getElementById('ParametersRowreportViewer').style.display = "none";
resultsFrame.contentWindow.document.getElementById('ParametersRowreportViewer').nextSibling.style.display = "none";
}, 1000);
}
}OnResizeComplete = function () {
var fr = window.document.getElementById('reportContainer');
fr.style.width = (document.body.offsetWidth - 30) + 'px';
fr.style.height = (document.body.clientHeight - 30) + 'px';
}
</script>
<meta name="GENERATOR" content="MSHTML 10.00.9200.16540">
<iframe id="reportContainer" src="about:blank" style="width: 662px; height: 270px;"></iframe>
</body></html>
Wolle39
Alle Antworten
-
Hallo Wolle,
Kann es sein, dass du in deinem Bericht einen Parameter definiert hast bei dem die Sichtbarkeit "falsch" ist: http://scottstoecker.wordpress.com/2012/06/18/readonlyreportparameterexception-thrown-in-ssrs-2008/
Eine genauere Fehlermeldung solltest du am ReportServer im Event-Viewer finden - hier sollte auch der Parameter enthalten sein, der diesen Fehler verursacht...
Funktioniert der Bericht eigentlich, wenn du ihn "normal" über das Berichtsmenü ausführst?
Liebe Grüße,
Andreas Buchinger
Andreas Buchinger
Microsoft Dynamics Certified Technology Specialist
MCPD: SharePoint Developer 2010 -
Hallo Andreas,
der Bericht funktioniert ganz normal (Im Angebot - Bericht ausführen OK und über Berichte - Bericht ausführen auch OK). Ich denke auch das es an der Parametern liegt.
Den ich habe noch einen anderen Lösungsansatz gefunden, der mir in der Summe besser gefallen würde aber nicht den gewünschten Bericht zum Angebot ausführt. Das stimmt der Parameter auch nicht. Er Filter dann nach dem Besitzer der Angebote. Bin gerade überfragt wie ich die Filtereinstellung setzen muss!
Hier noch der Link zum anderen Lösungsweg.
http://mscrmshop.blogspot.de/2012/02/step-by-step-tutorial-to-add-crm-report.html
Wolle39
-
Hallo,
der Button "Bericht ausführen" übergibt an den Report per URL noch einige Parameter, die der "Standard"-Angebotsbericht auch benötigt.
So wie es ausschaut, übergibst du diese aber nicht in deinem Script. Dein Report erwartet diese aber. Vergleiche doch mal die Parameter in der URL, wenn du den Bericht per Button aufrufst mit der URL, die du erstellst.
Schöne Grüße,
Nils Frohloff
-
Hallo Nils.
Hier die Url aus dem "Bericht ausführen" im Angebot:
und die Url erzeugt das Skript:
Anbei noch das Skript:function showReport()
{//Get iframe control
var iframeObject = Xrm.Page.getControl("IFRAME_OverviewReport");if (iframeObject != null)
{
//URL we created in first step + id of the current record (Xrm.Page.data.entity.getId())
var strURL = "/crmreports/viewer/viewer.aspx?action=run&id=%7b2FA994FC-AAD1-E211-825C-00505684165B%7d&records=" + Xrm.Page.data.entity.getId();
//Set iframe URL
iframeObject.setSrc(strURL);}
}Wenn ich die generierte Url aus dem Skript im Browser eingebe, kommt das erste Angebot das in der quoteid liste oben steht und alle dem Besitzer gehören.
Kannst Du sehen, wo der Fehler liegt!?
Danke.
Gruß Wolfi
Wolle39
- Bearbeitet Wolle39 Freitag, 27. September 2013 15:03
-
Hab´s jetzt selber rausgefunden.
Im Skript folgendes hinzugefügt.
&context=records&recordstype=1084
Also so in dem Fall:
function showReport()
{//Get iframe control
var iframeObject = Xrm.Page.getControl("IFRAME_OverviewReport");if (iframeObject != null)
{
//URL we created in first step + id of the current record (Xrm.Page.data.entity.getId())
var strURL = "/crmreports/viewer/viewer.aspx?action=run&id=%7b2FA994FC-AAD1-E211-825C-00505684165B%7d&records=" + Xrm.Page.data.entity.getId() + "&context=records&recordstype=1084";
//Set iframe URL
iframeObject.setSrc(strURL);}
}Gruß an Alle und Danke
Wolle39