22.02.2012, 17:11 | #1 |
Участник
|
Join временной таблицы в запросе
Всем привет!
Пересмотрел несколько похожих тем, но к сожалению, из-за нехватки опыта, понимания так и не пришло. Задача такова: На форме (не важно какой, у формы 1 источник данных) нужно организовать фильтр по полю ItemId. Т.к. область значений может быть достаточна велика, то я решил использовать временную таблицу, заполнить ее нужными значениями (ItemId) и сдлеать join к постоянной таблице, являющейся источником данных на форме. Я пытаюсь в executeQuery() сформировать запрос и присвоить его datasource формы. Вот примерный код: X++: public void executeQuery() { Query query; QueryBuildDataSource qbdsRetailPriceBuffer, qbdsTmpTable; TmpTable tmpTable = TmpTable::InitOnServer(); ; query = new Query(); qbdsRetailPriceBuffer = query.addDataSource(tablenum(RetailPriceBuffer)); if(InventLocationFilter.valueStr() && CustomSectionFilter.valueStr()) { tmpTable.data(GetCustomSectionFilterResult(InventLocationFilter.valueStr(), CustomSectionFilter.valueStr())); qbdsTmpTable = qbdsRetailPriceBuffer.addDataSource(tablenum(TmpTable)); qbdsTmpTable.addLink(fieldnum(RetailPriceBuffer, ItemId), fieldnum(TmpTable, ItemId)); qbdsTmpTable.joinMode(JoinMode::ExistsJoin); qbdsTmpTable.fetchMode(false); } this.query(query); super(); } X++: public static server TmpTable InitOnServer() { TmpTable tmpTable; select firstonly tmpTable; return tmpTable; } X++: public static server TmpTable GetCustomSectionFilterResult(InventLocationId _inventLocationId, CustomSectionId _customSectionId) { TmpTable tmpTable = TmpTable::InitOnServer(); ; //Заполнение tmpTable... return tmpTable; } Что же я делаю не так? Помогите пожалуйста, если кто сталкивался. С уважением, Евгений. |
|