12.04.2014, 09:41 | #1 |
Участник
|
Как вернуть одну строку для одного журнала?
Query legerJournalTableQuery = new Query();
QueryBuildDataSource legerJournalTableDS,legerJournalTransDS; ; legerJournalTableDS = legerJournalTableQuery.addDataSource(tablenum(LedgerJournalTable)); legerJournalTableDS.addRange(fieldnum(LedgerJournalTable,postedDate)); legerJournalTableDS.addRange(fieldnum(LedgerJournalTable,posted)).value(queryvalue(NoYes::Yes)); legerJournalTableDS.addRange(fieldnum(LedgerJournalTable,journalName)); legerJournalTableDS.addRange(fieldId2Ext(fieldnum(LedgerJournalTable,Dimension),4)); legerJournalTableDS.addRange(fieldnum(LedgerJournalTable,offsetAccountType)).value(queryvalue(LedgerJournalACType::Bank)); legerJournalTableDS.orderMode(orderMode::OrderBy); legerJournalTableDS.addSortField(fieldNum(LedgerJournalTable,PostedDate)); legerJournalTableDS.addSortField(fieldNum(LedgerJournalTable,OffsetAccount), SortOrder:escending); legerJournalTransDS = legerJournalTableDS.addDataSource(tablenum(LedgerJournalTrans)); legerJournalTransDS.relations(true); legerJournalTransDS.addRange(fieldnum(LedgerJournalTrans,TransDate)); |
|
12.04.2014, 09:42 | #2 |
Участник
|
firstonly - не работает!!
|
|
12.04.2014, 10:23 | #3 |
Участник
|
Какую именно? Любую?
1. Можно извратиться с notexist join таблицы строк к самой себе с условием типа LedgerJournalTrans1.RecId < LedgerJournalTrans2.RecId. Тогда вернется строка с минимальным идентификатором. 2. Или просто добавить условие LedgerJournalTrans.LineNum == 1, если можете гарантировать что в каждом журнале есть строка с таким номером. 3. Возможен ещё вариант с созданием промежуточной View. P.S.: А вам для чего? |
|
12.04.2014, 13:17 | #4 |
Участник
|
legerJournalTransDS = legerJournalTableDS.addDataSource(tablenum(LedgerJournalTrans),'a');
legerJournalTransDS.relations(true); legerJournalTransDS.addRange(fieldnum(LedgerJournalTrans,TransDate)); legerJournalTransDS1 = legerJournalTransDS.addDataSource(tablenum(ledgerJournalTrans),'b'); legerJournalTransDS1.joinMode(joinMode::NoExistsJoin); qbr = legerJournalTransDS1.addRange(fieldnum(LedgerJournalTrans,recId)); qbr.value( strfmt('(%1.%2 < %3.%4)', legerJournalTransDS.name(), fieldId2name(tableNum(ledgerJournalTrans),fieldnum(ledgerJournalTrans,recId)), legerJournalTransDS1.name(), fieldId2name(tableNum(ledgerJournalTrans),fieldnum(ledgerJournalTrans,recId)) )); |
|
14.04.2014, 08:12 | #5 |
Участник
|
поменяйте местами таблицы в запросе и firstonly должен сработать
|
|
15.04.2014, 12:12 | #6 |
Участник
|
если поменять местами, сработает да - но вернется вообще только одна запись, а мне нужно для каждого журнала по одной записи.
|
|
15.04.2014, 12:26 | #7 |
Участник
|
Можно сделать два запроса. Первый по журналам, а второй по строкам firstOnly.
|
|