Как сохранить позицию курсора во время обновления формы в AX4, AX 2009 или AX 2012

На днях возник вопрос как сохранить позицию курсора в гриде на форме во время обновления формы, после вызова метода datasource_ds.research(). Сделать это можно легко с помощью следующего кода. Есть два варианта решения этой задачи, я обычно использую второй:

Вариант 1

void refreshDataSource()
{
    int recordPosition;
    ;

    recordPosition = FormDataSourceName_ds.getposition();

    FormDataSourceName_ds.research(true);
    FormDataSourceName_ds.refresh();

    FormDataSourceName_ds.setposition(recordPosition);
}

 

Вариант 2

void refreshDataSource()
{
    TableName 	tableNameLocal;
    ;

    tableNameLocal = FormDataSourceName_ds.cursor();
    
    // Или вот так еще можно найти выделенную строку (на которой у нас курсор)
    tableNameLocal = TableName::find(FormDataSourceName.RecId);
    
    FormDataSourceName_ds.research();
    FormDataSourceName_ds.refresh();

    FormDataSourceName_ds.findRecord(tableNameLocal);
}

Один из этих вариантов точно должен будет сработать.