Спасибо за подсказки. Пока сделал еще несколько тестов.
Вот эти три сообщения выдают правильное значение "05-07-18":
Date.RESET;
Date.SETRANGE("Period Type",Date."Period Type":
ate);
Date.SETRANGE("Period Start",
DMY2DATE(5,7,2018));
IF Date.FINDLAST THEN
MESSAGE('%1', Date."Period Start");
Date.RESET;
Date.SETRANGE("Period Type",Date."Period Type":
ate);
Date.SETFILTER("Period Start",
'=%1', DMY2DATE(5,7,2018));
IF Date.FINDLAST THEN
MESSAGE('%1', Date."Period Start");
Date.RESET;
Date.SETRANGE("Period Type",Date."Period Type":
ate);
Date.SETFILTER("Period Start",
'>=%1&<=%2', DMY2DATE(5,7,2018),DMY2DATE(5,7,2018));
IF Date.FINDLAST THEN
MESSAGE('%1', Date."Period Start");
А вот эти три выдают "01-01-9999", т.е. последнее значение в виртуальной таблице:
Date.RESET;
Date.SETRANGE("Period Type",Date."Period Type":
ate);
Date.SETRANGE("Period Start",
DMY2DATE(5,7,2018), DMY2DATE(5,7,2018));
IF Date.FINDLAST THEN
MESSAGE('%1', Date."Period Start");
Date.RESET;
Date.SETRANGE("Period Type",Date."Period Type":
ate);
Date.SETFILTER("Period Start",
'>%1&<%2', DMY2DATE(4,7,2018),DMY2DATE(6,7,2018));
IF Date.FINDLAST THEN
MESSAGE('%1', Date."Period Start");
Date.RESET;
Date.SETRANGE("Period Type",Date."Period Type":
ate);
Date.SETFILTER("Period Start",
'%1..%2', DMY2DATE(5,7,2018),DMY2DATE(5,7,2018));
IF Date.FINDLAST THEN
MESSAGE('%1', Date."Period Start");
Т.е. даже если диапазон или фильтр используют два одинаковых значения, т.е. сортировка не должна влиять, запрос всё равно не работает.
Похоже, придется в майкрософтовскую поддержку обращаться.