полазив по форуму и посмотрев отвлеченные темы сделал следующим образом:
PHP код:
BDI_Charges_DS.write();
cur.data(BDI_Charges);
BDI_Charges_DS.research();
BDI_Charges_DS.findRecord(cur);
что убрало проблему с тем, что новая запись перемещалась вниз грида, а активной становилась какая-то другая..
Однако продолжает мучать вопрос - неужели нельзя сделать что-нибудь более экономичное по ресурсам, чем перечитывание всего датасорса?