Axapta 写普通日记账,财务维度不起作用

Axapta 写普通日记账,财务维度不起作用,axapta,x++,dynamics-ax-2012,Axapta,X++,Dynamics Ax 2012,我正在用x++给《普通杂志》写信。我现在可以发布在那里,但是行项目上的尺寸没有显示出来。运行的代码只有701100----而其余的没有填充到行项目中。我不知道为什么。。。我试过几种不同的方法。。。比如下面 ledgerDimensions = ["701100","701100", "MIDWHS", "ACCT", "000001", "AIR", "019-000100"]; journalTrans.parmLedgerDimension(AxdDimensionUtil::g

我正在用x++给《普通杂志》写信。我现在可以发布在那里,但是行项目上的尺寸没有显示出来。运行的代码只有701100----而其余的没有填充到行项目中。我不知道为什么。。。我试过几种不同的方法。。。比如下面

 ledgerDimensions = ["701100","701100", "MIDWHS", "ACCT", "000001", "AIR", "019-000100"];   
  journalTrans.parmLedgerDimension(AxdDimensionUtil::getLedgerAccountId(ledgerDimensions));   
offsetDimensions =  ["701100","701100", "MIDWHS", "ACCT", "000001", "AIR", "019-000100"];   
journalTrans.parmOffsetLedgerDimension(AxdDimensionUtil::getLedgerAccountId(offsetDimensions)); 
 journaltrans.save()
而且也试过了

 // dimensionAttribute = DimensionAttribute::findByName("Location");
 // dimensionAttributeValue =            //DimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute, "MINOT");
 // dimStorage = DimensionAttributeValueSetStorage::find(0);
 // dimStorage.addItem(dimensionAttributeValue);
 //   journalTrans.parmOffsetDefaultDimension(dimStorage.save()); 
//journalTrans.save()

两人都只是添加了账号,没有其他内容。。不知道为什么

我将该服务用于通用期刊的导入接口。 在我的代码下面,用这种方式试试,用这个服务创建维度很容易。 我从我们的系统中复制了代码并对其进行了注释,如果您需要任何进一步的解释,请询问我

声明:

LedgerGeneralJournal                    ledgerGeneralJournal;
LedgerGeneralJournalService             ledgerGeneralJournalService;
AfStronglyTypedDataContainerList        journalHeaderCollection;
LedgerGeneralJournal_LedgerJournalTable journalHeader;
AfStronglyTypedDataContainerList        journalLineCollection;
AifEntityKeyList                        journalHeaderCollectionKeyList;
int                                     journalLineCounter; // to create more than one line
int                                     entityKeyCount;
int                                     journalHeaderCounter; // to create more than one journal header if needed
如果需要,为计数器变量添加parm方法:

public int parmJournalLineCounter(int _journalLineCounter = journalLineCounter)
{
    journalLineCounter = _journalLineCounter;

    return journalLineCounter;
}

public int parmJournalHeaderCounter(int _journalHeaderCounter = journalHeaderCounter)
{
    journalHeaderCounter = _journalHeaderCounter;

    return journalHeaderCounter;
}
初始化: 标题

这里是我创建带尺寸线的方法。 请注意,我只在这里使用CostCenter,如果您需要更多,请按照使用CostCenter的方式添加它们(我对行进行了注释)

最后,写日记:

public void finalizeLedgerJournal()
{
    int     keyCount;
    List    journalIdList;

    journalHeader.parmLedgerJournalTrans(journalLineCollection);
    ledgerGeneralJournal.parmLedgerJournalTable(journalHeaderCollection);
    journalHeaderCollectionKeyList = LedgerGeneralJournalService.create(ledgerGeneralJournal);

    // if you need the journalId for further processing:
this.parmEntityKeyCount(journalHeaderCollectionKeyList.getEntityKeyCount());

    if (entityKeyCount > 0)
    {
        for (keyCount = 1;keyCount <= entityKeyCount;keyCount++)
        {
            if (!contract.parmJournalIdList())
            {
                contract.parmJournalIdList(new List(Types::String));
            }
            journalIdList = contract.parmJournalIdList();
            journalIdList.addEnd(LedgerJournalTable::findByRecId(journalHeaderCollectionKeyList.getEntityKey(keyCount).parmRecId()).JournalNum);
            contract.parmJournalId(LedgerJournalTable::findByRecId(journalHeaderCollectionKeyList.getEntityKey(keyCount).parmRecId()).JournalNum);
        }
    }
}
public void finalizeEledgerJournal()
{
整数键计数;
列表日志列表;
journalHeader.parmLedgerJournalTrans(JournalInCollection);
账本普通日记账。parmLedgerJournalTable(日记账头收集);
journalHeaderCollectionKeyList=LedgerGeneralJournalService.create(ledgerGeneralJournal);
//如果需要日志ID进行进一步处理:
this.parmEntityKeyCount(journalHeaderCollectionKeyList.getEntityKeyCount());
如果(entityKeyCount>0)
{
对于(keyCount=1;keyCount)
protected void writeLine(
    str                     _oldCompany,
    TransDate               _transDate,
    Voucher                 _voucher,
    str                     _mainAccountNum,
    AmountMST               _amount,
    LedgerJournalTransTxt   _transTxt,
    CurrencyCode            _currencyCode,
    str                     _offsetAccountNum,
    str                     costCenter
    )
{
    LedgerGeneralJournal_LedgerJournalTrans journalLine;
    AifMultiTypeAccount                     journalLineLedgerDimensionMain;
    AifDimensionAttributeValue              journalLineDim1Main;
    AfStronglyTypedDataContainerList        journalLineDimensionCollectionMain;
    AifMultiTypeAccount                     journalLineLedgerDimensionOffset;
    str                                     lineMainAccount;
    str                                     lineFullAccount;
    str                                     lineMainDimensionName = 'CostCenter';
    str                                     lineMainDimensionValue;
    str                                     lineOffsetAccount;
    str                                     lineOffsetFullAccount;


    this.parmJournalLineCounter(this.parmJournalLineCounter()+1);
    journalLine = this.parmJournalLineCollection().insertNew(this.parmJournalLineCounter());
    journalLine.parmLineNum(this.parmJournalLineCounter());

    journalLine.parmCompany(CompanyInfo::findByPTROldCompany(_oldCompany).company());
    journalLine.parmOffsetCompany(journalLine.parmCompany());
    journalLine.parmTransDate(_transDate);
    journalLine.parmVoucher(_voucher);
    journalLine.parmAccountType(LedgerJournalACType::Ledger);
    lineMainAccount = _mainAccountNum;

    journalLine.parmAmountCurCredit(_amount > 0 ? 0 : _amount);
    journalLine.parmAmountCurDebit(_amount > 0 ? _amount : 0);
    journalLine.parmTxt(_transTxt);
    journalLine.parmCurrencyCode(_currencyCode);
    journalLine.parmOffsetAccountType(LedgerJournalACType::Ledger);
    lineOffsetAccount = _offsetAccountNum;

    // Create Main Account Dimensions
    journalLineLedgerDimensionMain = journalLine.createLedgerDimension();
    journalLineLedgerDimensionMain.parmAccount(lineMainAccount);
    lineFullAccount = strFmt("%1-%2-", lineMainAccount, costCenter ? lineMainDimensionValue : ''); // if you need more dimensions, add them here first
    journalLineLedgerDimensionMain.parmDisplayValue(lineFullAccount);
// and then add the values here like costcenter:
        if (costCenter)
        {
            lineMainDimensionValue = costCenter;
            journalLineDimensionCollectionMain = journalLineLedgerDimensionMain.createValues();
            journalLineDim1Main = new AifDimensionAttributeValue();
            journalLineDim1Main.parmName(lineMainDimensionName);
            journalLineDim1Main.parmValue(lineMainDimensionValue);
            journalLineDimensionCollectionMain.add(journalLineDim1Main);
            journalLineLedgerDimensionMain.parmValues(journalLineDimensionCollectionMain);
        }
        journalLine.parmLedgerDimension(journalLineLedgerDimensionMain);
        // Create Offset Account Dimensions
// same procedure with offset dimensions if needed
        if (_offsetAccountNum)
        {
            journalLineLedgerDimensionOffset = journalLine.createOffsetLedgerDimension();
            journalLineLedgerDimensionOffset.parmAccount(lineOffsetAccount);
            lineOffsetFullAccount = strFmt("%1--", lineOffsetAccount);
            journalLineLedgerDimensionOffset.parmDisplayValue(lineOffsetFullAccount);
            journalLine.parmOffsetLedgerDimension(journalLineLedgerDimensionOffset);
        }
    }

        // Create Lines
        journalLineCollection = journalHeader.createLedgerJournalTrans();
public void finalizeLedgerJournal()
{
    int     keyCount;
    List    journalIdList;

    journalHeader.parmLedgerJournalTrans(journalLineCollection);
    ledgerGeneralJournal.parmLedgerJournalTable(journalHeaderCollection);
    journalHeaderCollectionKeyList = LedgerGeneralJournalService.create(ledgerGeneralJournal);

    // if you need the journalId for further processing:
this.parmEntityKeyCount(journalHeaderCollectionKeyList.getEntityKeyCount());

    if (entityKeyCount > 0)
    {
        for (keyCount = 1;keyCount <= entityKeyCount;keyCount++)
        {
            if (!contract.parmJournalIdList())
            {
                contract.parmJournalIdList(new List(Types::String));
            }
            journalIdList = contract.parmJournalIdList();
            journalIdList.addEnd(LedgerJournalTable::findByRecId(journalHeaderCollectionKeyList.getEntityKey(keyCount).parmRecId()).JournalNum);
            contract.parmJournalId(LedgerJournalTable::findByRecId(journalHeaderCollectionKeyList.getEntityKey(keyCount).parmRecId()).JournalNum);
        }
    }
}