11.09.2015, 17:22 | #1 |
Участник
|
Обновление грида на форме
Есть на форме 2 грида.
В первой заголовки LedgerJournalTable, во второй строки LedgerJournalTrans. В каждом гриде присутствует checkbox(edit method) Для LedgerJournalTrans X++: edit boolean Copy(boolean _set, LedgerJournalTrans _LJT, boolean _mark) { if (_set) { if(!_mark) { if(paMarked.exists(_LJT.RecId)) { paMarked.remove(_LJT.RecId); } } else { paMarked.insert(_LJT.RecId, _LJT.DocumentNum); } } return paMarked.exists(_LJT.RecId); } X++: edit boolean CopyLines(boolean _set, LedgerJournalTable _LJT, boolean _mark) { Query q; QueryRun queryRun; QueryBuildDataSource qbLJT; QueryBuildDataSource qbLJTT; LedgerJournalTrans ljt; boolean ret; q = new Query(); qbLJT = q.addDataSource(tablenum(LedgerJournalTable)); qbLJT.relations(true); qbLJTT = qbLJT.addDataSource(tablenum(LedgerJournalTrans)); qbLJTT.relations(true); qbLJT.addRange(fieldnum(LedgerJournalTable, RecId)).value(SysQuery::value(_LJT.RecId)); queryRun = new QueryRun(q); while(queryRun.next()) { ljt = queryRun.get(tableNum(LedgerJournalTrans)); ret = LedgerJournalTrans_ds.Copy(_set, ljt, _mark); } LedgerJournalTrans_ds.refresh(); return ret; } Последний раз редактировалось syl; 11.09.2015 в 17:33. |
|
13.09.2015, 21:14 | #2 |
Молодой, подающий надежды
|
использовать
X++: ledgerJournalTrans_ds.research(true) X++: ledgerJournalTrans.refreshEx(-1) смотрите так же Kashperuk Ivan: Tutorial: refresh, reread, research, executeQuery - which one to use?
__________________
Кононов Пётр Последний раз редактировалось pedrozzz; 13.09.2015 в 21:33. |
|
14.09.2015, 13:36 | #3 |
Участник
|
Второй метод - Можно сразу в Daily AX WTF.
|
|
|
За это сообщение автора поблагодарили: skuull (1). |
15.09.2015, 13:03 | #4 |
Молодой, подающий надежды
|
А можете более развернуто пояснить свою точку зрения? Для того, чтобы обновить поле-чекбокс, которое выведено только на грид и сделано через edit-метод (и маркированные записи хранятся в Set) по идее этого метода должно быть достаточно, по предоставленной ссылке есть четкое его описание, а так же ограничение. Подходит или нет, каждый решает исходя из поставленных задач и целей. На всякий случай приведу описание тут:
Цитата:
Сообщение от Blog bot
Источник: http://kashperuk.blogspot.com/2010/0...-research.html
refreshEx Does a redraw of the grid rows, depending on the optional argment for specifying the number of the record to refresh (and this means the actual row number in the grid, which is less useful for AX devs). Special argument values include -1, which means that all records will be redrawn, and -2, which redraws all marked records and records with displayOptions. Default argument value is -2. This method should be used sparingly, in cases where multiple rows from the grid are updated, resulting in changes in their displayOptions, as an example. So you should avoid using it as a replacement for refresh(), since they actually have completely different implementations in the kernel. Also, note, that refreshEx() only redraws the grid, so the controls not in the grid might still contain outdated values. Refresh() updates everything, since this is its intention. Источник: http://kashperuk.blogspot.com/2010/0...-research.html
__________________
Кононов Пётр Последний раз редактировалось pedrozzz; 15.09.2015 в 13:05. |
|
15.09.2015, 16:22 | #5 |
Участник
|
1. Выборка данных из БД на клиенте.
2. Выборка всех полей из LedgerJournalTable и LedgerJournalTrans, когда нужен только RecId из LedgerJournalTrans. 3. Названия переменных - qbLJT для LedgerJournalTable, _ljt для LedgerJournalTable - но ljt для LedgerJournalTrans. 4. Нагрузка на АОС и БД когда edit метод CopyLines будет вызываться на форме в display режиме (_set = false). |
|
|
За это сообщение автора поблагодарили: pedrozzz (0). |
15.09.2015, 17:23 | #6 |
Участник
|
Реализация подобного в стандартных SalesCopying/PurchCopying в качестве примера не подойдет? Там WTFчик тоже присутствует, ну хоть не велосипед изобретать...
|
|