|
02.11.2017, 15:17 | #1 |
Banned
|
X++: journalTrans.initValue(); journalTrans.JournalNum = journalNum; ... journalTrans.AccountType = LedgerJournalACType::Project; journalTrans.LedgerDimension = this.getLedgerDim(LedgerJournalACType::Project, curExt(), projId); journalTrans.AmountCurDebit = costAmount; journalTrans.DefaultDimension = LedgerJournalEngine::initDefaultDimensionServer(journalTrans); ... public RefRecId getLedgerDim(LedgerJournalACType _accountType, DataAreaId _dataAreaId, DimensionValue _accountId) { RefRecId ledgerDimension; DictEnum dictEnum = new DictEnum(enumNum(LedgerJournalACType)); DimensionDynamicAccountServiceProvider dimensionDynamicAccountServiceProvider; DimensionDynamicAccountContract dimensionDynamicAccountContract = new DimensionDynamicAccountContract(); dimensionDynamicAccountContract.parmCompany(_dataAreaId); dimensionDynamicAccountContract.parmAccountType(_accountType); DimensionAttributeValueContract ledgerContract = DimensionAttributeValueContract::construct(dictEnum.value2Label(_accountType), _accountId); dimensionDynamicAccountContract.parmPrimaryDimensionAttributeValue(ledgerContract); dimensionDynamicAccountServiceProvider = DimensionDynamicAccountServiceProvider::newForDynamicAccountContract(dimensionDynamicAccountContract); DimensionStorageResult dimensionStorageResult = dimensionDynamicAccountServiceProvider.resolve(); switch(dimensionStorageResult.parmStatus()) { case DimensionStorageResultStatus::Valid: ledgerDimension = dimensionStorageResult.parmSavedRecId(); break; default: error(strFmt("blah-blah-blah-blah-bla", dimensionStorageResult.parmStatus())); break; } return ledgerDimension; } |
|
|
За это сообщение автора поблагодарили: Aquarius (1). |
02.11.2017, 15:36 | #2 |
Участник
|
Цитата:
да и this.getLedgerDim() можно просто заменить на стандартную journalTrans.parmAccount() Да и вообще самое сложное - это присвоить ваучер, это кстати хорошая задача для собеседования Последний раз редактировалось trud; 02.11.2017 в 15:44. |
|
|
За это сообщение автора поблагодарили: Aquarius (1). |
02.11.2017, 16:01 | #3 |
Banned
|
Цитата:
Сообщение от trud
здесь кстати потенциальная ошибка, часть полей(типа всяких условий оплат и профилей) инициализируются в момент изменения счета.
да и this.getLedgerDim() можно просто заменить на стандартную journalTrans.parmAccount() Да и вообще самое сложное - это присвоить ваучер, это кстати хорошая задача для собеседования 2) Точно, journalTrans.parmAccount() 3) Ваучер обычно присваиваем через JournalTableData. |
|
|
За это сообщение автора поблагодарили: Aquarius (1). |
02.11.2017, 16:13 | #4 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: Aquarius (1). |