Í skýrsluhönnuðinum geta notendur hannað skýrsluna út frá grunni sem hefur verið fylltur út. Notandinn hafði í raun enga stjórn á uppbyggingu grunnsins. Grunnurinn hefur alltaf verið síaður og stjórnaður af Uniconta. Notandi þurfti að hanna skýrsluna með tilvísun í grunninn.
En nú með þessum nýja eiginleika custom-source reporting getur notandinn ekki aðeins hannað skýrsluna heldur einnig búið til uppbyggingu gagnagrunnsins. Þessi eiginleiki á við Einfaldar skýrslur og Sérstakar skýrslur eins og Reikningur, Pöntunarstaðfesting, Innkaupabeiðni o.s.frv.
Notandi getur búið til custom source report innan forritsins með því að nota staðlaða leiðsagnarforritið (wizard) eða notandinn getur forritað í eigin notendaviðbótum til að stofna og hanna bæði snið skýrslunnar og uppbyggingu gagnagrunnsins.
- Stofna Custom-Source Report
- Þegar notandi velur application valkostinn þarf notandi að skilgreina uppruna sinn. Þrjár færibreytur eru nauðsynlegar
- Gerð: Töflugerð sem gera á skýrslu á.
- Source name: Notandi getur gefið upprunanum eitthvert nafn sem birtist á svæðalistanum.
- Skýrslur: Það er fyrir hvaða skýrslugerð.
- Ef notandi velur Plugins valkostinn sem source provider til að skilgreina uppruna hans þarf hann að gera fjórar færibreytur
- User Assembly: Tilgreina notandasamsetninguna sem notandinn stofnaði. Það mun lista upp allar hlaðnar samsetningar
- Gerð: Tilgreina gerðina sem skilgreind er í notendasamsetningunni.
- Source name: Heiti upprunans.
- Skýrslur: Gerð skýrslunnar sem á að stofna.
- Hér mun birtast listi yfir gerðir sem eru í boði í viðbótinni. Sem dæmi höfum við búið til tvo flokka, þ.e. DebtorExteded og DebtOrder
- Inni í plugin DLL höfum við tvo flokka DebtorExtended sem erfir frá DebtorClient og annar er DebtOrder sem inniheldur DebtorOrderClient
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; }