15.12.2010, 15:03 | #21 |
Administrator
|
Кажется понял - почему у меня сработало. В моем примере не было предыдущего reread(). Т.е. если в Вашем примере убрать первые строки с reread(), то все отработает независимо от вызова clear();
X++: static void JobTestCommonReread(Args _args) { InventTable InventTable, InventTable2; RecId RecId; ; select firstonly InventTable; RecId = InventTable.RecId; // InventTable2.RecId = RecId; // InventTable2.reread(); // info(InventTable2.ItemId); InventTable2.clear(); InventTable2.RecId = RecId; InventTable2.reread(); info(InventTable2.ItemId); }
__________________
Возможно сделать все. Вопрос времени |
|
|
За это сообщение автора поблагодарили: S.Kuskov (1). |
15.12.2010, 15:46 | #22 |
Участник
|
Действительно, clear не "портит" пустой курсор. Интересно, а есть ли вообще смысл в использовании метода clear(), ведь вместо него всегда можно присвоить курсору NULL? И как выясняется иногда это даже надёжнее
P.S.: Ещё проблемы с методом clear() - оригинальный orig: Последний раз редактировалось S.Kuskov; 15.12.2010 в 15:55. |
|
15.12.2010, 16:58 | #23 |
Administrator
|
Цитата:
Передаем курсор в какой-либо метод, который его (до)заполняет и вставляет / обновляет запись в БД. Передаем мы (к примеру) CustTrans. На "входе" в метод стоит параметр типа CustVendTrans или Common. Если в методе выполнить метод clear(), то он обнулит все поля, не изменив инициализацию входящего параметра. Т.е. наша переменная типа CustVendTrans (Common) будет все равно знать, что она на самом деле CustTrans-овая. Если же мы присвоим null, то наша переменная потеряет свою "CustTrans-овость". Что недопустимо, т.к. внутри метода - эта информация будет уже невосстановима.
__________________
Возможно сделать все. Вопрос времени |
|
|
За это сообщение автора поблагодарили: gl00mie (2), S.Kuskov (1). |