Naprawa „Przejdź do głównej” w arkuszu kasowym Axapty (AX 2009)

Zdjęcie autora
Lindus One
Autor:
Lindus One
Data Publikacji:
Aktualizacja:

Funkcjonalność „Przejdź do głównej” w AX jest bardzo użyteczna, ale czasami zawodzi. Naprawimy to w arkuszu kasowym

Materiał archiwalny - aktualność może być ograniczona

Opis rozwiązania

Standardową funkcjonalnością w Microsoft® Dynamics™ AX 2009 (oraz we wcześniejszych wersjach Axapty) jest bezpośrednie przechodzenie do formularza powiązanej tabeli. Przykładem tego jest np. formularz zamówień sprzedaży w którym możemy klikając prawym przyciskiem myszy otworzyć powiązane konto odbiorcy którego zamówienie dotyczy. Niestety czasami zdarza się, że nie działa to prawidłowo. Przykładem tego jest arkusz księgowania kasy.

W arkuszu tym podczas próby przejścia do formularza odbiorców lub dostawców otwiera się nam formatka bez danych. Jest to związane z dużą komplikacją formularza. Funkcjonalność „Przejdź do formularza głównej tabeli” osiągana jest za pomocą trzech sposobów:

  1. Relacja na EDT
  2. Właściwość FormRef na tabeli
  3. Metodę jumpRef() na dataSource formularza

W powyższym przypadku możemy wykorzystać trzeci sposób żeby naprawić błędnie działającą funkcję.

W formularzu „LedgerJournalTransRCash” na źródłach danych (Data Sources) w tabeli „LedgerJournalTrans” w polu „OffsetAccount” nadpisujemy metodę jumpRef(). Wklejamy poniższy kod i mamy funkcjonalność „Przejdź do głównej” dla odbiorców, dostawców i kont księgowych. W praktyce inne skoki nie są potrzebne. Osoba wprowadzająca dane do arkusza kasowego będzie nam bardzo wdzięczna.

Kod x++ metody jumpRef()

public void jumpRef()
{
    CustTable           custTable;
    VendTable           vendTable;
    LedgerTable         ledgerTable;
    LedgerJournalACType ledgerJournalACType;
    Args                args;
    MenuFunction        menuFunction;
    ;
    args = new Args();//Obiekt do przeniesienia danych przy wywołaniu
    ledgerJournalACType = LedgerJournalTrans.OffsetAccountType;

    switch (ledgerJournalACType)//Sprawdzamy rodzaj konta (odbiorca, dostawca, księga główna)
    {
        case LedgerJournalACType::Cust :
            custTable.AccountNum = LedgerJournalTrans.OffsetAccount;
            args.record(custTable);//Przekazujemy odpowiedni rekord żeby docelowy formularz otworzył się z właściwym kontem
            menuFunction = new MenuFunction(menuitemdisplaystr(CustTable), MenuItemType::Display);
            menuFunction.run(args);//Najbardziej zalecany sposób uruchomienia formularza, kontrolowane są uprawnienia
        break;
        case LedgerJournalACType::Vend :
            vendTable.AccountNum = LedgerJournalTrans.OffsetAccount;
            args.record(vendTable);
            menuFunction = new MenuFunction(menuitemdisplaystr(VendTable), MenuItemType::Display);
            menuFunction.run(args);
        break;
        case LedgerJournalTrans.OffsetAccountType == LedgerJournalACType::Ledger :
            ledgerTable.AccountNum = LedgerJournalTrans.OffsetAccount;
            args.record(ledgerTable);
            menuFunction = new MenuFunction(menuitemdisplaystr(LedgerTable), MenuItemType::Display);
            menuFunction.run(args);
        break;
        default :
        super();
    }
}