05.11.2004, 16:07 | #1 |
Участник
|
Прогр. создание общего журнала. (LedgerJournalTable )
Мне нужно программно создать общий журнал, ну а потом сделать там строчки.
Никто не поджскажет, какими классами это делается. А если кто кинет кусок кода - то вообще поклон до земли. |
|
05.11.2004, 16:38 | #2 |
Участник
|
Классов таких я не знаю. Можно написать свой и сделать у него такой метод:
Пусть например нужно создать журнал с номером П000-100 и 1 строку в нем. static void сreateJournal() { LedgerJournalTable ledgerJournalTable; LedgerJournalTrans ledgerJournalTrans; ; ttsbegin; ledgerJournalTable.clear(); //очищение курсора ledgerJournalTable.JournalNum = "П000-100"; // заполнение других полей журнала производится аналогично ledgerJournalTable.insert(); ledgerJournalTrans.clear(); ledgerJournalTrans.JournalNum = "П000-100"; // заполнение остальных полей строки журнала производится аналогично ledgerJournalTrans.insert(); ttscommit; } |
|
05.11.2004, 16:52 | #3 |
Модератор
|
Не стоит. Можно, конечно, и ручками, но я бы копал в сторону классов LedgerJournal*
В самом LedgerJournal идет отработка инициализации журнала - номерной серии + генерация номера ваучера, насколько я помню. Посмотри, как работает сама форма и делай аналогично. Хотя, если кто-то подалиться кодиком, я тоже буду не против! С Уважением, Георгий. |
|
05.11.2004, 16:58 | #4 |
Участник
|
Посмотрите класс BMblock_LedgerJournal. Там можно посмотреть как создать журнал, как создать его строки и как все это потом разнести.
|
|
05.11.2004, 17:00 | #5 |
Участник
|
Ручками все записи создавать конечно можно, но не хотелось бы...
Спастбо за класс - покапаю. Разносить не надо... Такие вещи лучше ручками -) |
|
05.11.2004, 19:04 | #7 |
Участник
|
ledgerAccount _pr;
LedgerJournalTable _ljt; LedgerJournalEngine ledgerJournalEngine; ledgerJournalTrans _ljtr; Args postArgs = new Args(); ; // looking for PurchReceipt account _pr = InventPosting::item(InventAccountType::PurchReceipt,this.ItemId); if (! _pr) throw error("Íå çàäàí ñ÷åò Ïðèõîä ïî çàêóïêå"); // create journal _ljt = null; _ljt.selectForUpdate(); _ljt.clear(); _ljt.initValue(); _ljt.JournalName = SalesParameters::find().PassToAgentJournalNameSec_W; if (! _ljt.JournalName) throw error("Íå çàäàí æóðíàë 2-õ âàë. ñêëàäà â ïàðàìåòðàõ ìîäóëÿ Ðàññ÷åòû ñ êëèåíòàìè"); _ljt.Name = "Ïåðåäà÷à íà ðåàëèçàöèþ (2-õ âàë. ñêëàä)"; _ljt.CurrencyCode = companyinfo::secondaryCurrency_RU(); _ljt.CurrentOperationsTax = CurrentOperationsTax::WarehouseCur_RU; _ljt.insert(); ledgerJournalEngine = new BMLedgerJournalEngine(null); ledgerJournalEngine.newJournalActive(_lJT); if (_ljt.CurrentOperationsTax != CurrentOperationsTax::WarehouseCur_RU) throw error("Íåïðàâèëüíûé òèï ó÷åòà â æóðíàëå " +_ljt.JournalName); // create journal lines _ljtr = null; _ljtr.selectForUpdate(); _ljtr.clear(); _ljtr.initValue(); _ljtr.journalNum = _lJT.journalNum; ledgerJournalEngine.numberSeqFormHandlerJournal().parmLedgerJournalTrans(_lJTr); ledgerJournalEngine.formMethodDataSourceCreatePost(); ledgerJournalEngine.initValue(_lJTr); // fill journal lines _ljtr.CurrencyCode = companyinfo::secondaryCurrency_RU(); _ljtr.TransDate = this.PassToAgentDate_W; _ljtr.AccountType = LedgerJournalACType::Ledger; _ljtr.AccountNum = _pr; _ljtr.OffsetAccountType = LedgerJournalACType::Ledger; _ljtr.OffsetAccount = InventPostingBrokerage::LedgerAccount(this.ItemId); [_ljtr.AmountCurCredit,_ljtr.ExchRate] = this.GetAmountAndRateForJournalMain(); if ( _ljtr.AmountCurCredit < 0.01) throw error("Íåò ñåáåñòîèìîñòè â âàëþòå " + companyinfo::secondaryCurrency_RU()); _ljtr.ExchRate = 0; _ljtr.Dimension = this.Dimension; // write journal lines _lJTr.validateWrite(); ledgerJournalEngine.preWrite(_lJTr); ledgerJournalEngine.formMethodDataSourceWritePre(); _lJTr.write(); ledgerJournalEngine.write(_lJTr); // post journal now... postArgs.record(_lJT); postArgs.caller(NULL); postArgs.parmEnum(0); LedgerJournalPost::main(postArgs); return _ljt.JournalNum; |
|