Есть два варианта.
Первый:
PHP код:
void clicked()
{
InventTrans InventTransDB = InventTrans::findTransId("л00000268");
InventTrans InventTransDS;
;
super();
InventTransDS = InventTrans_ds.getFirst(0, false);
while (InventTransDS.RecId != InventTransDB.RecId &&
InventTransDS) {
InventTransDS = InventTrans_ds.getNext();
}
if (InventTransDS)
InventTrans_ds.findRecord(InventTransDB);
else {
InventTrans_ds.create(true);
InventTrans_ds.cursor().data(InventTransDB);
InventTrans_ds.setCurrent();
}
}
Здесь сначала происходит поиск среди записей, уже загруженных в displayCache. Если нужной записи не находится, в FormDataSource создается новая строка и заполняется данными из необходимой записи.
Плюс подхода в том, что видны записи, уже имеющиеся в displayCache, а к ним добавляется только нужная запись. Минус - если просмотреть dataSource до конца, в displayCache появится две одинаковых записи, и, соответственно, в Grid тоже будет две одинаковых записи, что вводит в заблуждение.
Второй вариант:
PHP код:
void clicked()
{
InventTrans InventTransDB = InventTrans::findTransId("л00000268");
;
super();
select InventTrans where InventTrans.RecId == InventTransDB.RecId;
}
Плюсы подхода в отсутствии минусов предыдущего. Минусы - целиком перезаписывается displayCache. Причем в него заносится только одна запись.