Совсем не извращение ... 
В осколках исходников, завалявшихся у меня по первой версии 5.85.01, в интефейсе оборотов при наложении фильтра именно так же, как и происходит у вас - наложение фильтров/ограничений, затем GetLast'ом проверка, в случае отсутсвия наличия присутсвия - ругань и вопросы 
вообще список список исключений по работе с БД :
ExDbNotFound  Запись не найдена  
ExDbDuplicateKey  Дублированное значение уникального ключа  
ExDbModifiableKeyValueError  Модификация ключевого поля  
ExDbTransactionError  Ошибка во время транзакции  
ExDbTransactionIsActive  Транзакция уже открыта  
ExDbInvalidRecordAddress  Ошибочный адрес записи  
ExDbLockError  Ошибка блокировки  
ExDbRecordInUse  Запись используется  
ExDbSurrKeyZero  Обновление записи с нулевым суррогатным ключом  
ExDbInvalidIndexNumber  Ошибочный номер индекса  
ExDbNoPosition  Ошибочная позиция  
ExDbInvalidRelation  Ошибочная связь  
ExDbAccessToFieldDenied  Доступ запрещен  
ExDbFileInTransaction  Файл используется транзакцией  
ExDbSemaphorNotExist  Семафор не существует  
ExDbSemaphorIsBusy  Семафор занят  
ExDbSemaphorModeError  Ошибка задания параметра установки семафора  
ExDbSemaphorError  Ошибка работы с семафорами  
ExDbInvalidField  Передано неправильное поле в метод File.OpenMemo 
Вываливаются они при позиционировании программном. Как раз ваш GetFirst/GetLast  и порождать должен ExDbNotFound.
Работает это с Атлантиса 3.02.хх