|  02.03.2013, 18:22 | #1 | 
| Участник | Отмена использования временной таблицы в FormDatasource 
			
			Доброго времени суток! Можно ли при использовании временной таблицы в источнике данных формы переключаться на использование нормальной таблицы? Вот пример кода (к сожалению не работающего как надо) X++: public void executeQuery() { InventTable inventTableTmp; InventTable inventTableData; ; if (! InventTable_DS.cursor().isTmp()) { // Используем временную таблицу InventTable_DS.cursor().setTmp(); inventTableTmp.setTmp(); select firstonly inventTableData; inventTableTmp.data(inventTableData); inventTableTmp.insert(); InventTable_DS.cursor().setTmpData(inventTableTmp); } else { // Пытаемся использовать таблицу из БД (не работает) InventTable_DS.setRecord(inventTableData); } super(); } Практическая задача состоит в использовании временной таблицы для построения выборки данных из разных компаний. Но в то же время пользователь может сбросить выборку с помощью галочки на форме. Использование временной таблицы в таком случае жутко замедляет процесс выборки, т.к. приходится загонять во временную таблицу все стопятсот тыщ записей, хранящихся в БД. PS: Надеюсь понятно описал проблему   | 
|  | 
|  02.03.2013, 18:58 | #2 | 
| Участник | 
			
			Отвечу не по существу вопроса, но по существу проблемы.  Я так понял что для отображения всех строк вы хотите связывать датасурс с постоянной таблицей, а для отображения сокращённого перечня строк со временной? Я правильно вас понял? Я бы советовал вам всегда использовать постоянную таблицу, а для реализации фильтра присоединять вспомогательную таблицу через ExistsJoin. Выборка произвольных записей одним запросом связанные данные из разных компаний Последний раз редактировалось S.Kuskov; 02.03.2013 в 19:26. | 
|  | |
| За это сообщение автора поблагодарили: A_BAS (1). | |
|  02.03.2013, 19:52 | #3 | 
| Участник | 
			
			Спасибо за ответ. Хорошая идея.  Но использовать это буду только если другого выхода не будет. Поскольку очень не хочется переписывать код предшественников.   | 
|  | 
|  02.03.2013, 20:11 | #4 | 
| Участник | 
			
			Хоть это вроде бы и тоже самое, но на всякий случай попробуйте  X++: InventTable_ds.QueryRun().setRecord(inventTableData); Ещё вопрос. А вы делаете executeQuery() после подмены или ещё как-нибудь перевыбираете данные? | 
|  | 
|  02.03.2013, 21:11 | #5 | 
| Участник | 
			
			Неа. Не работает. Даже если подставить другую таблицу в датасорс, курсор все равно остается временным. Цитата: 
		
			Ещё вопрос. А вы делаете executeQuery() после подмены или ещё как-нибудь перевыбираете данные?
		
	 | 
|  |