28.07.2013, 15:58 | #1 |
Участник
|
Не отображаются данные в Grid'е из tmp-датасорса
Есть простая форма
(stringEdit_inventJournalId (не привязан к датасорсу), Grid_tmpInventJournalTrans, button_FillGrid), где можно выбрать номер журнала проводок, нажать кнопку "заполнить" и информация о строках журнала сохраняется во временной таблице и отображается в гриде. (обработку сейчас не рассматриваем). Форму можно вызвать из меню и из другой формы(журнал проводок). Используется один и тот же номер журнала (т.е. при вызове из журнала мы получаем строку журнала проводок, но пока нигде ее не используем) Проблема заключается в том, что при вызове из меню строки отображаются на гриде, при вызове из журнала-нет. Также при вызове из журнала после нажатия кнопки "заполнить" поле выбора номера журнала (а оно не привязано к датасорсу!) становится неактивным. X++: void FillGrid() { InventJournalTrans iTrans; InventDim inventDim_; ; ttsbegin; while select forupdate tmpInventJournalTrans { tmpInventJournalTrans.delete(); } ttscommit; // ijourTo=InventJournalTable::find(stringEdit_JournalId.text()); ijourTo=InventJournalTable::find('itj0023561'); while select ITrans where iTrans.JournalId == ijourTo.JournalId { select forupdate tmpInventJournalTrans; ttsbegin; tmpInventJournalTrans.clear(); tmpInventJournalTrans.ItemId = itrans.ItemId; tmpInventJournalTrans.Qty = abs(itrans.Qty); tmpInventJournalTrans.InventDimId = itrans.inventDimId; tmpInventJournaltrans.LedgerAccountIdOffset = itrans.LedgerAccountIdOffset; tmpInventJournaltrans.insert(); ttscommit; //info(tmpInventJournalTrans.ItemId); } tmpInventJournalTrans_ds.research(); //info(tmpInventJournalTrans.ItemId); } Info Сообщение (14:53:52) ПлиткаБой Info Сообщение (14:53:52) Костюм Info Сообщение (14:53:52) Костюм Info Сообщение (14:53:52) Футболка Info Сообщение (14:53:52) Футболка Info Сообщение (14:53:52) ПлиткаБой Вывод инфобокса при вызове из журнала: Info Сообщение (14:55:15) ПлиткаБой Info Сообщение (14:55:15) Костюм Info Сообщение (14:55:15) Костюм Info Сообщение (14:55:15) Футболка Info Сообщение (14:55:15) Футболка Info Сообщение (14:55:15) В чем может быть проблема??? |
|
28.07.2013, 20:53 | #2 |
Участник
|
код - жесть. бедный клиент, а потом говорят, что аксапта - говно.
вы бы книжку по программированию прочли для начала |
|
28.07.2013, 21:13 | #3 |
Участник
|
Думаю, вы уже нашли ответ в блоке "Похожие темы", которые отображаются внизу страницы
данные из временной таблицы - в Grid |
|
29.07.2013, 09:42 | #4 |
Участник
|
Строчка...
X++: select forupdate tmpInventJournalTrans; Если, как вы выражаетесь с меню работает, а с журнала нет, то скорее всего... связь с журналом все таки есть и она динамическая. Можно попробывать ее разорвать в init датасоурса временной таблицы прописав после super() примерно следующее: X++: this.query().dataSourceNo(1).clearDynalinks(); P.S. Попробуйте еще сменить... X++: tmpInventJournalTrans_ds.research(); X++: tmpInventJournalTrans_ds.executeQuery(); |
|
|
За это сообщение автора поблагодарили: alicedr (1). |
29.07.2013, 22:43 | #5 |
Участник
|
Спасибо за советы!
Моя невнимательность. После добавления X++: ijTrans.JournalId = iJourTo.journalId; |
|
30.07.2013, 08:49 | #6 |
Участник
|
Попробуйте также улучшить код.
Например конструкцию X++: while select forupdate tmpInventJournalTrans { tmpInventJournalTrans.delete(); } X++: delete_from tmpInventJournalTrans; Поэтому в этом куске кода выборка для обновлений будет лишней. X++: while select ITrans where iTrans.JournalId == ijourTo.JournalId { select forupdate tmpInventJournalTrans; // <- лишний код ttsbegin; tmpInventJournalTrans.clear(); tmpInventJournalTrans.ItemId = itrans.ItemId; tmpInventJournalTrans.Qty = abs(itrans.Qty); tmpInventJournalTrans.InventDimId = itrans.inventDimId; tmpInventJournaltrans.LedgerAccountIdOffset = itrans.LedgerAccountIdOffset; tmpInventJournaltrans.insert(); ttscommit; //info(tmpInventJournalTrans.ItemId); }
__________________
// no comments Последний раз редактировалось dech; 30.07.2013 в 08:56. |
|