|
20.04.2010, 17:10 | #1 |
Участник
|
Relation CustTable, VendTable и т.д. на таблице LedgerJournalTrans AX2009
Доброго времени суток.
Вопрос вот в чем. На таблице LedgerJournalTrans есть ряд Relation, например CustTable, в которых помимо прочего используется LedgerJournalTrans.Company == CustTable.dataAreaId. Если в базе несколько компаний и таблица CustTable общая (включена в табличную коллекцию, которая связана с виртуальной компанией, в которую входят все компании), то при переходе к основной таблице на поле AccountNum (AccountType = Клиент), получаем пустой грид (так как в поле Company строк журнала выбирается реальная компания, а в dataAreaId таблицы клиентов - виртуальная). Все это происходит в AX2009, в Ax3 при существовании тех же Relation - все ОК. Подскажите в чем дело плз. |
|
20.04.2010, 19:24 | #2 |
Участник
|
Эта проблема для типа счета Клиент/Поставщик/Счет ГК решена в Rollup 3 для DAX 2009. Желательно поставить это обновление и ситуация исправится.
Если нет возможности посмотреть как это было сделано, то ниже шаги которые исправят ситуацию: 1. На Формах LedgerJournalTrans* там где в качестве типа счета/корр. счета могут быть указаны выше приведенные типы счетов, нужно проверить что на источнике данных LedgerJournalTrans для полей AccountNum и OffsetAccount перекрыт метод jumpRef. 2. Там где это не сделано, перекрыть. 3. В теле метода jumpRef поля accountNum источника данных LedgerJournalTrans(например для формы LedgerJournalTransDaily) написать следующий код : X++: public void jumpRef() { switch(ledgerJournalTrans.AccountType) { case LedgerJournalAcType::Ledger : LedgerTable::jumpRefLedger(ledgerJournalTrans.AccountNum,ledgerJournalTrans.Company); break; case LedgerJournalAcType::Cust : CustTable::jumpRefCustomer(ledgerJournalTrans.AccountNum,ledgerJournalTrans.Company); break; case LedgerJournalAcType::Vend : VendTable::jumpRefVendor(ledgerJournalTrans.AccountNum,ledgerJournalTrans.Company); break; default : super(); } } Но правильней на мой взгляд поставить Rollup 3. Если в строке журнала у вас будет не заполнен код поставщика, а при переходе к основной таблице будет показан весь справочников поставщиков, то в метод jumpRefVendor на VendTable нужно внести следующее изменение: X++: changecompany(companyId) { args = new Args(formstr(VendTable)); //args.record(_accountNum ? VendTable::find(_accountNum) : args.record()); args.record(VendTable::find(_accountNum)); formRun = classfactory.formRunClass(args); formRun.init(); formRun.run(); formRun.wait(); } |
|
20.04.2010, 20:04 | #3 |
Участник
|
Спасибо. Rollup 3 конечно поставим
|
|