D365FO – Как добавить финансовую аналитику на табличную сетку

Category: Статьи Post Date: 09.07.2020

Данная статья описывает общие шаги по добавлению финансовой аналитики (сегментированного поля) на табличную сетку (Grid) в D365FO.

Для дальнейшего объяснения давайте представим, что мы добавляем новые таблицу и форму

Новая таблица содержит два поля – Тип счета (AccountType) и Счет (LedgerDimension), по которому осуществляется связь с таблицей DimensionAttributeValueCombination

Форма выглядит вот так

В дизайнере формы настройте свойства для элемента формы представляющего собой сегментированное поле ввода

– Auto declaration = Yes

– Account type field = AccountType

– Controller class = DimensionDynamicAccountController

– Filter expression = %1

  1. Перекройте метод modified на поле LedgerDimension источника данных формы (form datasource)
  2. Перекройте методы lookup и checkUserCustomLookup на элементе сегментированного поля

Datasource | D365O_FinancialDimension | LedgerDimension | modified

 

[DataSource]

class D365O_FinancialDimension

{

    [DataField]

    class LedgerDimension

    {

        void modified()

        {

            super();

            D365O_FinancialDimension_ds.refresh();

        }

    }

}

 

Desgin | D365O_FinancialDimension_LedgerDimension | lookup

public void lookup()

{

    switch (D365O_FinancialDimension.AccountType)

    {

        case LedgerJournalACType::Bank:

            BankAccountTable::lookupBankAccount(this);

            break;

        case LedgerJournalACType::Cust:

            CustTable::lookupCustomer(this);

            break;

        case LedgerJournalACType::FixedAssets:

            AssetTable::lookupAccountNum(this);

            break;

        case LedgerJournalACType::Project:

            ProjTable::lookupProjId(this, D365O_FinancialDimension);

            break;

        case LedgerJournalACType::Vend:

            VendTable::lookupVendor(this);

            break;

        default:

            super();

            break;

    }

}

Desgin | D365O_FinancialDimension_LedgerDimension | checkUserCustomLookup

 

public boolean checkUseCustomLookup(int _accountTypeEnumValue, int _secondaryAccountTypeEnumValue)

{

    boolean returnValue;

          

    LedgerJournalACType accountType = any2Enum(_accountTypeEnumValue);

    switch (accountType)

    {

        case LedgerJournalACType::Bank:

        case LedgerJournalACType::Cust:

        case LedgerJournalACType::FixedAssets:

        case LedgerJournalACType::Project:

        case LedgerJournalACType::Vend:

            returnValue = true;

            break;

        default:

            returnValue = false;

            break;

     }

           

    return returnValue;

}

Настройте форму D365O_FinancialDimensions как объект запуска и запустите.

Если вы хотите чтобы в сегментированном поле можно было видеть и вводить только счет ГК (MainAccount), настройте на элементе сегментированного поля ввода свойство Is default account = True

Подписывайтесь на канал @d365neti в Telegram

Подписаться

Добавить комментарий