Цель, создать вот такой вот Query
Код:
while select ledgerJournalTrans
where ledgerJournalTrans.TransDate == todayDate
&& ledgerJournalTrans.AccountType == LedgerJournalACType::Cust
exists join ledgerJournalTransLink
where (ledgerJournalTransLink.Voucher == ledgerJournalTrans.Voucher
&& ledgerJournalTransLink.TransDate == ledgerJournalTrans.TransDate
)&&
(ledgerJournalTransLink.AccountType == LedgerJournalACType::Bank ||
(ledgerJournalTransLink.AccountType == LedgerJournalACType::Cust
&& ledgerJournalTransLink.OffsetAccountType == LedgerJournalACType::Bank))
{...}
Делаю:
Код:
value = strfmt('((%1 == "%2") || ((%3 == "%4") && (%5 == "%6")))',
fieldId2name(TableNum(LedgerJournalTrans), fieldNum(LedgerJournalTrans, AccountType)),
queryValue(LedgerJournalACType::Bank),
fieldId2name(TableNum(LedgerJournalTrans), fieldNum(LedgerJournalTrans, AccountType)),
queryValue(LedgerJournalACType::Cust),
fieldId2name(TableNum(LedgerJournalTrans), fieldNum(LedgerJournalTrans, OffsetAccountType)),
queryValue(LedgerJournalACType::Bank));
linkedQbds.addRange(fieldNum(LedgerJournalTrans, DataAreaId)).value(value);
С точки зрения синтаксиса, на сервер запрос отправляется, как раз такой, какой нужен, но вот беда. Индексы Enum-ов какие то бредовые
Код:
...
((B.ACCOUNTTYPE=193) OR ((B.ACCOUNTTYPE=202) AND (B.OFFSETACCOUNTTYPE=193))))
...
Что делать не ясно, мысли кончились. Если вместо queryValue(LedgerJournalACType::Bank) написать queryValue(6) на сервер уходит запрос с другими индексами Enum-ов, но не менее бредовыми. Может кто сталкивался и составлял "хитрые запросы" с участием Enum- полей? А то уже не ясно, что делать дальше