Хотя даже и не обязательно создавать два range, вполне работает и по одному.
Вот часть установки фильтров как раз похожего случая когда нужно попадание даты в диапазон и дата окончания диапазона может быть открытой:
X++:
qbrTemp = findOrCreateRange_W(qbdsSetup, fieldNum(SysPolicySetup_OVK, FromDate));
qbrTemp.value(SysQuery::range(dateNull(), searhDate));
qbrTemp = findOrCreateRange_W(qbdsSetup, fieldNum(SysPolicySetup_OVK, ToDate));
rangeTemp = SysQuery::range(searhDate, dateNull());
rangeTemp += (', ' + SysQuery::valueEmptyString());
qbrTemp.value(rangeTemp);
Прекрасно транслируется в запрос:
Код:
SELECT * FROM SysPolicySetup_OVK
WHERE ((PolicyType = 1))
AND ((PolicyStatus = 1))
AND ((FromDate<={ts '2019-02-13 00:00:00.000'}))
AND ((ToDate>={ts '2019-02-13 00:00:00.000'} OR ToDate = {ts '1900-01-01 00:00:00.000'}))
Правда только что заметил ошибку нижнего диапазона - нужно сдвинуть на день.