|  21.08.2018, 16:43 | #1 | 
| Участник | Обновить на grid поле из временной таблицы 
			
			Есть строки журнала Есть стандартная функция валидации (проверки) этих строк Пользователи хотят видеть на гриде поле с ошиками (а не на закладке история (history) ) плюс хотят сортировать/ фильтровать по нему. 1) Создаю в AOT временную таблицу TempDb MyTempTable (два поля: ErrorLog, LedgerJournalTrans.RecId) 2) в classDeclaration формы обьявляю переменную MyTempTable 3) добавляю MyTempTable как datasource на форму (outer join to ledgerJournalTrans по RecId) 4) добавляю на grid поле Error из этого DS 4) в init датасоурса MyTempTable пишу: MyTempTable_ds.linkPhysicalTableInstance(myTempTable). 5) При нажатии пользотелелем кнопки Validate таблица заполняется и вызывается MyTempTable_ds.refresh() .... но поле на grid не обновляется  Таблица заполняется верно. Почему результаты не показываются? Спасибо | 
|  | 
|  21.08.2018, 16:56 | #2 | 
| Участник | 
			
			Немного в сторону. А зачем отдельная темповая таблица? Почему не хотите в сами строки записать результат?
		 
				__________________ Ivanhoe as is.. | 
|  | 
|  21.08.2018, 17:15 | #3 | 
| Участник | 
			
			Строки таблицы ledgerJournalTrans?  То есть, добавить в нее новое поле и не сохранять данные в нем (то есть, saveContents = No на поле таблицы)? | 
|  | 
|  21.08.2018, 18:55 | #4 | 
| Участник | 
			
			Не уверен. Но разве надо линковать временную таблицу именно к MyTempTable_ds? По моему, надо просто к самой таблице линковать.  MyTempTable.linkPhysicalTableInstance(myTempTable). DS - это уже результат выборки, который все-равно будет переопределен после executeQuery() ds.refresh() - это обновление картинки. Но перед этим надо сначала прочитать данные с диска. Поэтому обычно дают пару команд на обновление текущей записи X++: ds.reread(); // Прочитать с диска ds.refresh(); // Обновить картинку 
				__________________ - Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... | 
|  | 
|  21.08.2018, 19:05 | #5 | 
| Участник | Цитата: По поводу обновления разве не research() нужен? Была тема про варианты обновления ds на форуме, там все варианты расписали. 
				__________________ Ivanhoe as is.. | 
|  | 
|  21.08.2018, 19:06 | #6 | 
| Участник | 
				__________________ Ivanhoe as is.. | 
|  | 
|  21.08.2018, 19:27 | #7 | 
| Участник | Цитата: 
		
			Сообщение от Владимир Максимов
			   Не уверен. Но разве надо линковать временную таблицу именно к MyTempTable_ds? По моему, надо просто к самой таблице линковать.  MyTempTable.linkPhysicalTableInstance(myTempTable). DS - это уже результат выборки, который все-равно будет переопределен после executeQuery() ds.refresh() - это обновление картинки. Но перед этим надо сначала прочитать данные с диска. Поэтому обычно дают пару команд на обновление текущей записи X++: ds.reread(); // Прочитать с диска ds.refresh(); // Обновить картинку Последний раз редактировалось IKA; 21.08.2018 в 19:30. | 
|  | 
|  21.08.2018, 19:29 | #8 | 
| Участник | Цитата: ( хотя бы потому, что outer join не даст все равно фильтровать по этому полю, если не ошибаюсь) | 
|  | 
|  22.08.2018, 02:08 | #9 | 
| Участник | 
			
			Что-то вызывает большие сомнения подчиненная временная таблица. Такое вообще работает? Не в форме, а "в принципе". Если просто запрос в джобе написать? Насколько я помню, в младших версиях временная таблица могла быть только "верхней" в запросе Может Вам вместо outer join просто дисплейный метод сделать? 
				__________________ - Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... | 
|  | 
|  22.08.2018, 08:44 | #10 | 
| Участник | Цитата: 
		
			Может Вам вместо outer join просто дисплейный метод сделать?
		
	 Цитата: 
		
			 плюс хотят сортировать/ фильтровать по нему.
		
	 
				__________________ Я прибыл к вам из Кантемировской дивизии. А там, как известно, дураков не держат!   | 
|  | 
|  22.08.2018, 08:50 | #11 | 
| Участник | 
			
			Если реально много ошибок и нужно с ними разбираться, самое удобное - хранить прямо в строках журнала, по ним же и фильтровать / сортировать и т.п.
		 
				__________________ Ivanhoe as is.. | 
|  | 
|  23.08.2018, 11:51 | #12 | 
| Участник | |
|  | 
|  23.08.2018, 14:52 | #13 | 
| Участник | Цитата: | 
|  | 
|  23.08.2018, 16:44 | #14 | 
| Участник | Цитата: 
		
			Сообщение от belugin
			   Можно, для этого в Ax2009 сделали QueryFilter 
				__________________ Существует 10 типов людей: одни понимают двоичную систему, другие - нет. | 
|  | 
|  23.08.2018, 16:52 | #15 | 
| Участник | |
|  | 
|  23.08.2018, 17:33 | #16 | 
| Участник | |
|  | |
| За это сообщение автора поблагодарили: belugin (5), YoungPadawan (1). | |
|  23.08.2018, 17:35 | #17 | 
| Участник | 
			
			Текст в ссылке:  Цитата: 
		
			// The QueryFilter class was not in Microsoft Dynamics AX 2009.
		
	 UPD Цитата: 
		
			По этому не понянто как бы помог ему QueryFilter , если бы он даже присутствовал
		
	 Последний раз редактировалось YoungPadawan; 23.08.2018 в 17:40. Причина: Осознал свою ошибку | 
|  | 
|  23.08.2018, 19:02 | #18 | 
| Участник | 
			
			Извините, перепутал версии. Тогда могу предложить сделать View с outer Join и присоединить его при помощи innerJoin
		 | 
|  | 
|  23.08.2018, 19:10 | #19 | 
| Участник | 
			
			Можно ещё динамически переключать тип джоина. Но это смахивает на какое-то извращение. (Я такое делал)
		 | 
|  | 
|  23.08.2018, 20:06 | #20 | 
| Участник | 
			
			Я не уверен, что такое сработает. Я помню что на какой-то версии range попадал в ON а не в WHERE в результате при фильтрации просто исчезали данные по ячейкам UPD: хотя если обратно переключать, как советуют тут https://stackoverflow.com/questions/...ta-dynamics-ax то может пройти. Правда на пустоту не получится фильтровать. | 
|  |