Uitgaande
van minor changes in een rapport (zoals een veld verplaatsen,
grotere/kleiner, HMTL enabelen etc.). Dit omdat dan de data hetzelfde
blijft en er geen nieuwe velden / datasets uit de dataprovider (DP) moet
komen kan dit allemaal herbruikt worden.
Een standaard rapport aanpassen in v7 moet in twee stappen gebeuren:
1. Het dupliceren / aanpassen in een nieuw model
2. Het sturen naar het nieuwe rapport.
Het dupliceren / aanpassen in een nieuw model
In
versie 7 is het niet mogelijk middels extensions een rapport te
extenden. Er ook kan geen design middels extensions worden toegevoegd.
De enige methode is om het rapport in zijn geheel te dupliceren.
Met
je project in eigen model open en actief, ga in de AOT naar het
rapport. Rechtermuis, dupliceren. Deze komt dan in je project. Maak de
veranderingen in het rapport.
Het sturen naar het nieuwe rapport
De
aansturing welk rapport wordt gebruikt, is in te richten bij print
management bij de verschillende modulen. Ondanks dat je misschien niet
de optie 'print management' gebruiken aanzet bij de boeking.
Bij
modules, onder 'form setup" kan het één en ander ingericht worden voor
print management. Hier kan je ook een rapport ontwerp selecteren;
Het zit wat weggestopt, er is een slecht benadrukte knop hier:
Hier vind je per rapport een node, kan je ook kopieën toevoegen. Aan de rechter kant kan een rapport worden gekozen:
Let op: ook al maak je geen gebruik van print management bij boeking, hier wordt wel gekeken naar het ontwerp dat gebruikt wordt
De keuzes komen uit een tabel, genaamd PrintMgmtReportFormat
Deze wordt (aan)gevuld vanuit code, elke keer als de "print management setup" form opend. Hiervoor moet wat code gemaakt worden:
[SubscribesTo(classstr(PrintMgmtReportFormatPublisher), delegatestr(PrintMgmtReportFormatPublisher, notifyPopulate))]
public static void notifyPopulate()
{
#PrintMgmtSetup
INTGlobal::addPrintMgmtReportFormat(PrintMgmtDocumentType::PurchaseOrderRequisition,
ssrsReportStr(INTPurchPurchaseOrder, Report),
ssrsReportStr(INTPurchPurchaseOrder, Report),
#NoCountryRegionId,
false);
INTGlobal::addPrintMgmtReportFormat(PrintMgmtDocumentType::PurchaseOrderConfirmationRequest,
ssrsReportStr(INTPurchPurchaseOrder, Report),
ssrsReportStr(INTPurchPurchaseOrder, Report),
#NoCountryRegionId,
false);
}
Met deze code wordt het rapport automatisch toegevoegd. Let op: de INTGlobal::addPrintMgmtReportFormat is een public 1:1 kopie van PrintMgmtReportFormatSubscriber::add.
In V7 is deze methode private in de applicationsuite model en kan niet
worden gebruikt. Als een rapport al bestaat, dan wordt deze niet opnieuw
toegevoegd.
Na
een build kan het rapport gekozen worden in de lijst bij de print
management setup. Mogelijk kan je ook het rapport handmatig invoeren in
de tabel PrintMgmtReportFormat,
maar aangezien je het rapport al moet ontwikkelen / inchecken, is een
klein beetje extra code die je rapport opneemt in de standaard
waarschijnlijk wel beter.
Er is nog een maar; het is afhankelijk van hoe je het rapport te zien krijgt. Je kan namelijk via de gejournaliseerde informatie weergeven -> oorspronkelijk of vanuit het proces (boeking -> inquiry/confirmation). Het kan dus zijn dat het nieuwe ontwerp nog niet gebruikt wordt bij weergeven \ oorspronkelijk. Om dit ontwerp consequent te gebruiken, moet het rapport ook als standaard worden opgegeven. Hiervoor is de volgende code nodig:
Let op: hierna moet wel één keer het verstopte print management scherm geopend worden, zodat de tabel geïnitialiseerd word.
Er is nog een maar; het is afhankelijk van hoe je het rapport te zien krijgt. Je kan namelijk via de gejournaliseerde informatie weergeven -> oorspronkelijk of vanuit het proces (boeking -> inquiry/confirmation). Het kan dus zijn dat het nieuwe ontwerp nog niet gebruikt wordt bij weergeven \ oorspronkelijk. Om dit ontwerp consequent te gebruiken, moet het rapport ook als standaard worden opgegeven. Hiervoor is de volgende code nodig:
///
<summary>
/// Delegate
handler for the getDefaultReportFormatDelegate method of the
<c>PrintMgmtDocType</c> class.
///
</summary>
///
<param name =
"_docType"><c>PrintMgmtDocumentType</c> enumeration
value.</param>
///
<param name = "_result">The <c>EventHandlerResult</c>
object.</param>
[SubscribesTo(classstr(PrintMgmtDocType), delegatestr(PrintMgmtDocType, getDefaultReportFormatDelegate))]
public static void getDefaultReportFormatDelegateHandler(PrintMgmtDocumentType _docType, EventHandlerResult _result)
{
switch (_docType)
{
case PrintMgmtDocumentType::PurchaseOrderConfirmationRequest:
case PrintMgmtDocumentType::PurchaseOrderRequisition:
_result.result(ssrsReportStr(INTPurchPurchaseOrder, Report));
}
}
Let op: hierna moet wel één keer het verstopte print management scherm geopend worden, zodat de tabel geïnitialiseerd word.
Geen opmerkingen:
Een reactie posten