![]() |
#7 |
Роман Долгополов (RDOL)
|
Похоже я продолжаю упорно рекламировать одну и ту же фичу
![]() Выборка произвольных записей одним запросом Набираем RecId в Set любым способом (пример пробега по выделенным записям во втором сообщении) ну или вот готовый код: X++: public static Set dsGetMarked(FormDataSource _ds) { Set markedRecords = new Set(Types::Int64); Common markedRecord; if (! _ds.anyMarked() && _ds.cursor()) { markedRecords.add(_ds.cursor().RecId); } else { markedRecord = _ds.getFirst(true); while (markedRecord) { markedRecords.add(markedRecord.RecId); markedRecord = _ds.getNext(); } } return markedRecords; } Чуть измененный пример из исходной темы: X++: static void refList_TutorialSet(Args _args) { RecordReferenceList_RU refList = RecordReferenceList_RU::construct(); RecordReference_RU ref; InventTable inventTable; int i; Set markedRecords = new Set(Types::Int64); Query query; QueryBuildDataSource qbds; QueryRun queryRun; ; setprefix("RecordReferenceList_RU"); while select inventTable { markedRecords.add(inventTable.RecId); i++; if (i > 10) { break; } } refList.setRecords(markedRecords); refList.flush(); info("Query"); query = new Query(); qbds = query.addDataSource(tablenum(InventTable)); refList.join(qbds); queryRun = new QueryRun(query); while (queryRun.next()) { info(queryRun.get(tablenum(InventTable)).caption()); } info("Select"); while select inventTable join ref where ref.RefRecId == inventTable.RecId && ref.ParmId == refList.getParmId() { info(inventTable.caption()); } refList.cleanup(); } |
|
|
За это сообщение автора поблагодарили: Eldar9x (1). |