|
![]() |
#1 |
Axapta
|
Цитата:
X++: void createIncomingJournal() { LedgerJournalNameId incomingName; LedgerJournalTable incomingJournal; ledgerJournalTrans incomingTrans; ledgerJournalTrans ledgerJournalTrans; LedgerJournalEngine ljeIn; LedgerJournalEngine ledgerJournalEngine; NumberSeq numSeq; ProjTable projTable; RContractTable rct; RContractPartnerType rctType; ; ttsbegin; select forupdate incomingJournal; incomingJournal.clear(); incomingJournal.initValue(); incomingJournal.JournalName=incomingName; incomingJournal.insert(); ljeIn = new BMLedgerJournalEngine(null); ljeIn.newJournalActive(incomingJournal); if(ljeIn) { while select lines { ledgerJournalTrans=incomingTrans; ledgerJournalEngine=ljeIn; select forupdate ledgerJournalTrans; ledgerJournalTrans.clear(); ledgerJournalTrans.TransDate=lines.PaymDate; ledgerJournalTrans.currencyCode=lines.CurrencyID; ledgerJournalTrans.ExchRate=lines.ExchRate; ledgerJournalTrans.initValue(); ledgerJournalTrans.JournalNum=incomingJournal.JournalNum; ledgerJournalEngine.numberSeqFormHandlerJournal().parmLedgerJournalTrans(ledgerJournalTrans); ledgerJournalEngine.formMethodDataSourceCreatePost(); ledgerJournalEngine.initValue(ledgerJournalTrans); ledgerJournalTrans.TransDate=lines.PaymDate; ledgerJournalTrans.currencyCode=lines.CurrencyID; ledgerJournalTrans.ExchRate=lines.ExchRate; ledgerJournalTrans.accountType=lines.AccountType; ledgerJournalTrans.AccountNum=lines.Account; ledgerJournalTrans.offsetAccountType=lines.offsetAccountType; ledgerJournalTrans.OffsetAccount=lines.offsetAccount; if(AmountDebit) ledgerJournalTrans.AmountCurDebit=lines.AmountDebit; else if(AmountCredit) ledgerJournalTrans.AmountCurCredit=lines.AmountCredit; ledgerJournalTrans.Txt=lines.TransTxt; ledgerJournalTrans.DocumentNum=lines.DocumentNum; ledgerJournalTrans.DocumentDate=lines.PaymDate; ledgerJournalTrans.validateWrite(); ledgerJournalEngine.preWrite(ledgerJournalTrans); ledgerJournalEngine.formMethodDataSourceWritePre(); ledgerJournalTrans.write(); ledgerJournalEngine.write(ledgerJournalTrans); } } ttscommit; if(ljeIn) info(strfmt("Создан журнал входящих платежей %1", incomingJournal.JournalNum)); } ![]() Цитата:
![]() |
|
![]() |
#2 |
Участник
|
Ну вот, а я бросился было искать мануалы, научающие девелоперов всегда располагать код бизнес-логики в таблицах; при программном создании записей всегда вызывать OnValidate, OnInsert и OnModify;...
По крайней мере, так нас учили раньше и гордо называли это "Navision Way". Может, с выходом более поздних версий что-то поменялось, и теперь этот путь уже не такой прямой ![]() |
|
|
|