|
![]() |
#1 |
Участник
|
А о какой версии Аксаты идет речь?
Помнится, при попытке передать серверную временную таблицу на клиентский курсор с помощью вызова setTmpData() в трешке, валилась клиентская сессия. Вообще, setTmpData() ничего не копирует, а устанавливает указатель на тотже временный файл, что и у передаваемого аргумента. При этом табличная переменная, вызывающая метод, так же оказывается на той стороне, что и аргумент. При этом есть большой ньюанс. Если табличная переменная находится на противоположной стороне от агргумента, в табличной переменной аргумента не было вставлено данных и в момент вызова функции счетчик ссылок аргумента равен 1, то вызывающая табличная перенная не поменяет своего положения, но файл временной таблицы будет пересоздан. X++: server class MyTable MyClass // Экземпляр класса будет создан на сервере { MyTable myTable; } public MyTable MyClass.getMyTableTmp() { ; myTable.setTmp(); //табличная переменная создана на сервере //Здесь не важно заполнение. Клиентский курсор всегда переезжает на сервер return myTable; } static server MyTable MyClass::getMyTableTmpStatic() { MyTable myTable; ; myTable.setTmp(); //табличная переменная создана на сервере //Не заполняем myTable, если будет вставка, то клиентский курсор переедет на сервер return myTable; } static client void processMyTable() { MyTable myTable; MyClass myClass = new MyClass(); ; myTable.setTmp(); //Таблиная переменная создана на клиенте myTable.setTmpData(MyClass::getMyTableTmpStatic()); //табличная переменная указывает на клиентский временный файл myTable = null; myTable.setTmp(); //Таблиная переменная создана на клиенте myTable.setTmpData(myClass.getMyTableTmp()); // табличная переменная будет указывать на серверный временный файл, копирования на клиент не будет } Для более ранних версий, скорее всего, так же верно, но я не проверял ![]() Замечу еще, что setTmpData() не сбрасывае и не устанавливает данные в самой табличной переменной. Т.е. если до вызова функции установить значения каких-либо полей, то они останутся уставновленными и после вызова функции. Но в файле временной таблицы этих данных не окажется (если не были вставлены в передаваемом курсоре, естественно) - select их не вернет
__________________
Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 25.07.2012 в 10:10. |
|
|
За это сообщение автора поблагодарили: sukhanchik (2), lev (5), Eldar9x (3). |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|