|
![]() |
#1 |
Участник
|
Если когда-нибудь будете делать через Query в АОТ, то метод paсk должен выглядеть так:
X++: public container pack() { return [#CurrentVersion, #CurrentList, (queryRun) ? queryRun.pack() : conNull()]; } X++: public boolean unpack(container packedClass) { version version = runbase::getVersion(packedClass); container queryCon; switch (version) { case #CurrentVersion: [version,#CurrentList,queryCon] = packedClass; if (sysQuery::isPackedOk(queryCon)) queryRun = new queryRun(queryCon); else this.initQuery(); break; default: return false; } return true; } |
|
![]() |
#2 |
Участник
|
Еще для себя напишу, чтобы не забыть
На моем примере на картинке в начале этой темы я показал форму, которая построена на Query, использующую таблицу InventBatch. Это необычная таблица, привязанная сразу к двум таблицам в запросе: к таблице InventDim по полю InventBatchId и к таблице InventTable по полю ItemId. Чтобы запрос с этой таблицей работал корректно, я источник данных для нее сделал дочерним к InventDim через дизайнер Query в АОТ, а в методе initQuery() моего класса программно добавил связку с источником данных InventTable X++: void initQuery() { Query query = new Query(queryStr(zInventAdvanceProdDateReport)); QueryBuildDatasource qbds; QueryBuildRange qbr; ; qbds = query.dataSourceTable(tableNum(InventBatch)); qbr = sysQuery::findOrCreateRange(qbds, fieldNum(InventBatch, ItemId)); qbr.value("((ItemId == InventTable_1.ItemId))"); qbr.status(RangeStatus::Hidden); queryRun = new QueryRun(query); } Последний раз редактировалось Ace of Database; 02.04.2013 в 18:40. |
|
Теги |
runbasereport, диалог, динамическая форма, периодическая операция, программно |
|
|