Im Berichtsdesigner können die Benutzer den Bericht auf der Grundlage der vorausgefüllten Quelle entwerfen. Der Benutzer hatte eigentlich keine Kontrolle über die Struktur seiner Quelle. Die Quelle wurde immer von Uniconta gefiltert und kontrolliert. Der Benutzer musste den Bericht mit Bezug auf die Quelle entwerfen.
Aber mit der neuen Funktion der benutzerdefinierten Quellenberichte kann der Benutzer nicht nur den Bericht gestalten, sondern auch die Struktur der Datenquelle erstellen. Diese Funktion ist für einfache Berichte und spezielle Berichte wie Rechnungen, Auftragsbestätigungen, Bestellanforderungen usw. anwendbar.
Der Benutzer kann den benutzerdefinierten Quellbericht aus der Anwendung heraus mit Hilfe des Standardassistenten erstellen oder eigene Benutzer-Plugins programmieren, um sowohl das Layout des Berichts als auch die Struktur der Datenquelle zu erstellen und zu gestalten.
- Bericht mit benutzerdefinierten Quellen erstellen
-
- Wenn der Benutzer die Anwendungsoption auswählt, muss er seine Quelle definieren. Drei Parameter sind erforderlich
-
-
- Typ: Tabellentyp, über den der Bericht erstellt werden soll.
- Quellenname: Der Benutzer kann der Quelle einen Namen geben, der dann in der Feldliste angezeigt wird.
-
Bericht: Für welchen Berichtstyp.
- Hier kann der Benutzer die in Uniconta verfügbaren Tabellentypen auswählen. Es werden sowohl Tabellen als auch UserTables des Unternehmens angezeigt.
- Jetzt wählt der Benutzer die Art des Berichts aus, den er erstellen möchte.
- Hier wird der Bericht ohne Layout und Einstellungen geladen. Der Benutzer sieht alle öffentlichen Eigenschaften aufgelistet.
- Hier kann der Benutzer die in Uniconta verfügbaren Tabellentypen auswählen. Es werden sowohl Tabellen als auch UserTables des Unternehmens angezeigt.
- Wenn der Benutzer die Option Plugins als Quellenanbieter auswählt, muss er zur Definition seiner Quelle vier Parameter angeben
- Benutzer-Assembly: Geben Sie die vom Benutzer erstellte Benutzer-Assembly an. Es wird eine Liste aller geladenen Assemblies angezeigt
- Typ: Geben Sie den in der Benutzer-Assembly definierten Typ an.
- Name der Quelle: Name für die Quelle.
-
Berichte: Typ des Berichts, der erstellt werden soll.
- Hier wird die Liste der im Plugin verfügbaren Typen ausgefüllt. Als Beispiel haben wir also zwei Klassen erstellt, nämlich DebtorExted und DebtOrder
- Innerhalb der Plugin-DLL haben wir zwei Klassen DebtorExtended, die von DebtorClient erbt, und die zweite ist DebtOrder, die DebtorOrderClient enthält
switch (ActionType) { case "OrderDesigner": case "OrderPreview": try { var arrayDebtOrder = Array.CreateInstance(typeof(DebtorOrderClient), 1); arrayDebtOrder.SetValue(selectedItem, 0); if (ActionType == "OrderPreview") { string repParams = "Report=DebtOrderSampleRep;reportType=PackNote"; object[] src = new object[2] { arrayDebtOrder, repParams }; AddDockItem(TabControls.ReportsPreviewPage, src, "custom rep preview"); } else if (ActionType == "OrderDesigner") globalEvents.NotifyOpenExternalReport(typeof(DebtorOrderClient), arrayDebtOrder, "debtOrder"); } catch (Exception ex) { MessageBox.Show(string.Format("{0}n{1}", ex.Message, ex.StackTrace)); } break; case "xDesigner": case "xPreview": try { var DebtOrd = new CustomPageSample.DebtOrder(selectedItem); var debtOrdCollection = Array.CreateInstance(typeof(CustomPageSample.DebtOrder), 1); debtOrdCollection.SetValue(DebtOrd, 0); if (ActionType == "xPreview") { string repParams = "Report=customDebtOrderSampleRep;reportType=OrderConfirmation"; object[] src = new object[2] { debtOrdCollection, repParams }; AddDockItem(TabControls.ReportsPreviewPage, src, "custom rep preview"); } else if (ActionType == "xDesigner") globalEvents.NotifyOpenExternalReport(typeof(CustomPageSample.DebtOrder), debtOrdCollection, "debtOrder"); } catch(Exception ex) { MessageBox.Show(string.Format("{0}n{1}", ex.Message, ex.StackTrace)); } break; }
switch (ActionType) { case "Designer": case "Preview": try { var debtEx = new CustomPageSample.DebtorExtended(); StreamingManager.Copy(selectedItem, debtEx); var arrayDebt = Array.CreateInstance(typeof(CustomPageSample.DebtorExtended), 1); arrayDebt.SetValue(debtEx, 0); if (ActionType == "Preview") { string repParams = "Report=customDebtSampleRep;reportType=Statement"; object[] src = new object[2] { arrayDebt, repParams }; AddDockItem(TabControls.ReportsPreviewPage, src, "custom rep preview"); } else if(ActionType== "Designer") globalEvents.NotifyOpenExternalReport(typeof(CustomPageSample.DebtorExtended), arrayDebt, "DebtExtended"); } catch(Exception ex) { MessageBox.Show(string.Format("{0}n{1}",ex.Message,ex.StackTrace)); } break; }
-