Нет! Почему active() ? Это нужно выполнить в самом конце, как после отработки изменения этапа. Теоретически там, где вы делаете
Dictionary::dataFlush(_tablenum)
smaServiceOrderLine_ds.reread();
smaServiceOrderLine_ds.refresh();
, чего делать не нужно.
Это можно сделать в методе main класса, который меняет фазу, в самом его конце.
После отработки executeQuery у Вас "уедет" курсор. Как после этого спозиционироваться - написано
здесь
Просто рекомендация - почитайте руководства по программированию, раздел про формы. Крайне важно знать, основные стандартные методы на форме и порядок, в котором они вызываются при различных телодвижениях юзера. Почитайте также на форуме про методы reread, refresh,research,executeQuery()