В методе RunBase.QueryRun() Вы должны вернуть переменную типа QueryRun (или ее наследника SysQueryRun), которая будет использована в диалоге с пользователем. Не сформировать значение, а просто вернуть саму переменную.
Инициализация значений этой переменной (создание QueryRun) должны выполняться в двух местах
- RunBase.initParmDefault() - выполняется в том случае, если класс еще ни разу не был запущен (unpack возвращает false). Первый запуск класса (версии класса) данным пользователем
- RunBase.unpack() - выполняется в том случае, если предусмотрено "запоминание" настроек сделанных пользователем в методе pack(). Т.е. unpack() вернул true.
Собственно обработка запроса (организация цикла по queryRun) - это уже метод RunBase.run()
Если метод RunBase.showQueryValues() возвращает true, то будет отображена кнопка "Выбрать" и сделанные настройки.
В классе Tutorial_RunbaseForm это все наглядно демонстрируется. Хотя без собственно обработки результата
Для классов-наследников от RunBaseReport метод QueryRun() уже перекрыт и в нем используется фиксированная переменная с именем queryRun, которая формируется на основе настроек отчета, имя которого указывается в методе RunBaseReport.LastValueElementName()
Пример в классе Tutorial_RunbaseReport