Показать сообщение отдельно
Старый 10.12.2004, 10:55   #17  
bucken is offline
bucken
Участник
Аватар для bucken
 
259 / 12 (1) ++
Регистрация: 04.09.2003
Адрес: Москва
Ну что ж....

PHP код:
 tmpT.setTmpData(tmpDS_DS.cursor().data()); 
1. Если это приводит к падению аксапты, то не есть ли это ошибка программы, хотя бы потому что падение любого по - считается критической ошибкой?
2. "Вам кажется ответили" - ГДЕ?

3.
Цитата:
Я по той ссылке мало того что не нашёл никаких доводов что это надо, более того, любопытства ради набросл у себя форму с временной таблицей TmpItemQty и кнопкой с кодом:
Потому что надо читать внимательно.
А написано следующее там:
Цитата:
Будьте внимательны, cursor() вернет вам буфер таблицы, который используется для вывода данных в форму. То есть, если вы начнете делать select'ы, указывая в качестве таблицы именно этот cursor(), будет происходить фильтрация данных, выводимых в форму. Лучше создать еще один объект, и делать select'ы по нему.
Цитата:
void method(FormDataSource _formDS)
{
Common common = _formDS.cursor().data();
}--------------------------------------------------------------------------------
Цитата:
Чтобы понять, что я имел в виду, под фильтрацией буфера, проведите маленький эксперимент:


Создайте форму и добавьте к ней DataSource. Например, InventTable.
На форме разместите Grid, в котором выведите какие-нибудь данные DataSource.
Также на форме поставьте кнопку. В методе clicked() у нее напишите что-нибудь вроде:

X++ code:--------------------------------------------------------------------------------
Common common;
;
common = InventTable_ds.cursor();
select common where common.(fieldnum(InventTable, ItemId)) like "С*";--------------------------------------------------------------------------------

Нажмите на кнопку и наблюдайте за содержимым Grid'а.

А теперь представьте, что вы генерируете более сложные запросы. Представьте, что будет видеть пользователь!
4.
Цитата:
То Аксапта вылетает. И это логично, если присмотреться к описанию метода .data(). (Более того, логично почему он работает для невременных таблиц.) Копия таблицы полученная из метода data() просто обязана "разлинковываться" от своего буфера в памяти, и вообще непонятно что потом с этим data() делать.
"не понятно" - смотрите выше.
"описанию метода .data()."
А что присматриваться то?
Создание полной копии буфера без сслылок на буфер источника. Так называемое копирование объектов.
5.

Цитата:
ItemQty.setTmpData( TmpItemQty_ds.cursor()
Это к сожалению не полная копия - это просто новая ссылка.


Лана.. Alks, я и в правду занервничал - чуть злиться даже начал.
Опять же таки не хочу флудить и все такое. Не будем пылить по пусту, ок?





__________________
Уточните значение слов и вы избавите человечество от половины его заблуждений. (Рене Декарт) / Axapta 2.5