|  26.09.2003, 16:19 | #1 | 
| Участник | SetTmpData vs = 
			
			Добрый день! объясните разницу между использованием оператора присваивания и оператора setTmpData при необходимости передачи данных из одной переменной типа временная таблица в другую такую же. Спасибо | 
|  | 
|  26.09.2003, 18:36 | #2 | 
| Banned | 
			
			tmpTable1 = tmpTable2 - это присвоение курсора, так сказать, по ссылке. Обе переменные после такого присвоения ссылаются на один и тот же класс. Пример: PHP код: 
			Пример: PHP код: 
			 | 
|  | 
|  26.09.2003, 20:39 | #3 | 
| Участник | Цитата: 
		
			Изначально опубликовано EVGL  После же tmpTable1.setTmpData(tmpTable2) переменная tmpTable1 остается отдельным курсором, но запрашивающим тот же блок данных (по-видимому, тот же файл на диске), что и tmpTable2. См документацию. Ключевое слово "Temporary tables" Temporary tables are declared just like any other variable, and have the following characteristics: 
 | 
|  | 
|  26.09.2003, 20:57 | #4 | 
| Участник | 
			
			EVGL, а может у тебя правильная терминология... см. http://technet.navision.com/default....rch=settmpdata Может скажешь где ты видел насчет курсоров во временных таблицах? Про временные таблицы полезно поглядеть на том же technet'е http://technet.navision.com/default....rch=settmpdata | 
|  | 
|  11.02.2009, 16:23 | #5 | 
| Участник | 
			
			Все-таки неясна разница, есть ли какой-нибудь пример из жизни? как ни крути результат один и тот же у этих операторов.....
		 | 
|  | 
|  11.02.2009, 16:48 | #6 | 
| Участник | 
			
			Если вкратце, то setTmpData() создает копию данных. Грубо говоря, вместо одной таблицы, получаем две. В то время, как присвоение копии не создает. Это просто "переименование" переменной. Не две таблицы, а два "имени" одной и той же таблицы. | 
|  | 
|  11.02.2009, 16:56 | #7 | 
| Участник | Цитата: Так в чем же разница между = и setTmpData ??? | 
|  | 
|  11.02.2009, 17:13 | #8 | 
| Участник | 
			
			Даа, похоже разницы действительно почти нет Чуть-чуть поэкспериментировал. Нашел только одно отличие. = сразу инициализирует переменную и текущими значениями исходной переменной, и ссылкой на ее файл setTmpData только ссылку на файл делает, то есть дополнительно нужно запрос сделать будет. Но это оочень несущественное отличие. Других пока не нашел.. | 
|  | 
|  11.02.2009, 17:23 | #9 | 
| Участник | 
			
			это да, просто тогда непонятно, зачем рекомендуется использовать setTmpData()?
		 | 
|  | 
|  11.02.2009, 17:31 | #10 | 
| Участник | 
			
			Да, перепутал с методом xRecord.setTmp()   Вообще-то, EVGL уже указал на различия. При использовании прямого присвоения обе переменные должны быть одного типа. Одна и та же временная таблица. Один объект AOT (один "класс") А при использовании xRecord.setTmpData() - не обязательно. Это могут быть разные таблицы AOT. Хотя, конечно, должны совпадать по структуре копируемые (синхронизируемые) данные. Т.е. попытка скопировать не существующее поле вызовет ошибку. | 
|  | 
|  11.02.2009, 17:32 | #11 | 
| ---------------- | 
			
			а вы передайте свою временную таблицу в метод какого-нибудь классика и сделайте из него выборку после = и после setTmpData
		 | 
|  | |
| За это сообщение автора поблагодарили: ivas (2). | |
|  11.02.2009, 18:11 | #12 | 
| Banned | |
|  |