Если не заморачиваться с возможным пустым значением полей, то, в данном случае, надо просто создать два отдельных Range на поле, содержащее начало диапазона и на поле, содержащее конец диапазона.
Два Range, созданные по разным полям автоматически объединяются по "И", что, в данном случае и требуется
X++:
// init:
QueryBuildDataSource qbds;
qbds = this.query().dataSourceTable(tableNum(MyTable));
rangeBegin = qbds.addRange(fieldNum(mlm_EmployeesTable, begin_date));
rangeEnd = qbds.addRange(fieldNum(mlm_EmployeesTable, finish_date));
X++:
// executeQuery:
if(firstOpen == True)
{
rangeBegin.value(global::QueryRange(dateNull(), systemDateGet()))
rangeEnd.value(global::QueryRange(systemDateGet(), dateNull()))
}
else
{
rangeBegin.value(global::QueryRange(dateNull(), TerminationDate.value()))
rangeEnd.value(global::QueryRange(TerminationDate.value(), dateNull()))
}
Если же значения полей могут быть пустыми (есть дата начала, но нет даты конца или наоброт), то все значительно сложнее.