| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Сложный фильтр складских журналов
			 
			
			В форме закупки через стандартный фильтр, добавив зависимые таблицы строк закупки и складских аналитик например, могу отфильтровать закупки со строками с определнным складом. Здесь все отлично. 
		
		
		
		
		
		
		
	Почему такая фишка не получается со складскими журналами? В списке отношений когда хочу добавить таблицу строк журналов к самим журналам (1:n) она отсутствует. Откуда вообще беруться эти списки зависимых таблиц? Ведь между строками и журналами определнно существует однозначная связь!  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Вы не совсем правильно действуете. К строкам складского журнала складскую аналитику надо добавлять не ч/з 1:n, а ч/з n:1. Это отношение показывает в каком направлении идет связывание необходимых таблиц. Т.е. складские журналы -> строки складских журналов (InventJournalTable.JournalId = InventJournalTrans.JournalId), складские аналитики -> строки складских журналов (InventDim.InventDimId = InventJournalTrans.InventDimId).  
		
		
		
		
		
		
		
	Здесь кроется одна засада. Мне не удалось отфильтровать по складу-получателю для журнала переноса. Best Practices говорит, что использование в одной таблице двух полей одинакового типа является ошибкой, что и видно на данном примере. А строится все это дело по таблице xRefTableRelation, данные в которую заносятся при построении перекрестных ссылок. Если перекрестные ссылки не построены, то при вызове меню выбора отношений будет предложено это сделать, причем только для отношений м-ду таблицами  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: Logger (2). | |
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано AndyD  
Вы не совсем правильно действуете. К строкам складского журнала складскую аналитику надо добавлять не ч/з 1:n, а ч/з n:1. Это отношение показывает в каком направлении идет связывание необходимых таблиц. Т.е. складские журналы -> строки складских журналов (InventJournalTable.JournalId = InventJournalTrans.JournalId), складские аналитики -> строки складских журналов (InventDim.InventDimId = InventJournalTrans.InventDimId). По номенклатуре отфильтровать журналы тоже невозможно хотя в InventJournalTrans номенклатура вроде как одна! У меня в списках выбора 1:n, n:1 складских жур. вообще нет строк журнала. У вас по другому или я не понял мысли бестпрактис  
		 | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Давайте по шагам с самого начала. 
		
		
		
		
		
		
		
	Структура: 1. Выбираем "Таблица складского журнала" -> 1:n -> "Строки складского журнала (Журнал)" 2. Выбираем "Строки складского журнала" -> n:1 - > "Складская аналитика" Условия: 1. Добавляем новую строку 2. В колонке "таблица" выбираем "Складская аналитика" 3. В колонке "поле" выбираем "Склад" 4. В колонке "критерий" выбираем нужный склад Ок. Вуаля. Извините, что расписываю так подробно, но не вижу способа объяснить свою мысль яснее  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Посмотрел внимательно на SysQueryBuilder и понял что был неправ. Поля одинакового типа здесь не при чем. Все дело в том, как строятся датасоурсы. Для отработки связей используется класс DictRelation, методы loadFieldRelation или loadTableRelation. При этом поле для которого строится связь нигде не учитывается и происходит, судя по всему, выбор первого из подходящих по FieldId. 
		
		
		
		
		
		
		
	 
		 | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Да и еще. 
		
		
		
		
		
		
		
	Если открыть меню отношений для строк складского журнала n:1, то видно, что таблица "Складская аналитика" указыватеся дважды. Та что со словоми "(Номер аналитики)" - для поля InventDimId, а без - для ToInventDimId  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано AndyD  
Давайте по шагам с самого начала. Структура: 1. Выбираем "Таблица складского журнала" -> 1:n -> "Строки складского журнала (Журнал)" 2. Выбираем "Строки складского журнала" -> n:1 - > "Складская аналитика" Условия: 1. Добавляем новую строку 2. В колонке "таблица" выбираем "Складская аналитика" 3. В колонке "поле" выбираем "Склад" 4. В колонке "критерий" выбираем нужный склад яснее 1. открыл складской журнал "перенос" 2. нажал фильтрация записей 3. в структуре на "таблица складского журнала" кликнул правой кнопкой выбрал 1:n там меню пунктов из 10-ти появляется, но никаких подобий "строки складского журнала" там нет. Может у меня аксапта неправильная? Что сделать чтобы у меня нормальный список сформировался?  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Может у вас перекрестные ссылки не обновились? 
		
		
		
		
		
		
		
	Попробуйте выполнить следующий джоб PHP код: 
	
			
	 | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано AndyD  
Может у вас перекрестные ссылки не обновились? Попробуйте выполнить следующий джоб PHP код: 
	
			
	Выполнил джобик. отработалось чтото, но ситуация не изменилась. Печально.  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Были ли у вас модификации на таблице InventJournalTrans? 
		
		
		
		
		
		
		
	Проверьте, не изменялся ли тип поля JournalId. В стандарте используется EDT InventJournalId. Проверьте, есть ли релейшен на таблицу InventJournalTable для EDT, используемого в этом поле. Проверьте, есть ли релейшены на таблице InventJournalTrans для связи с InventJournalTable (не уверен, что причина может быть в этом, но проверить стоит)  | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано Perc  
...По номенклатуре отфильтровать журналы тоже невозможно хотя в InventJournalTrans номенклатура вроде как одна!... У меня фильтрует складские журналы Перенос нормально. 1. Добавил к Таблице складского журнала через 1:n таблицу Строки складского журнала. 2. В Поле выбрал Номенклатура 3. В критерии - код номенклатуры. Фильтр сработал нормально. Не забудьте про значение поля "Разнесено". Ваша ситуация не воспроизводится. 
				__________________ 
		
		
		
		
	ИМХО. С уважением, Владимир Ю.  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Злыдни 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано AndyD  
Проверьте, есть ли релейшены на таблице InventJournalTrans для связи с InventJournalTable (не уверен, что причина может быть в этом, но проверить стоит)  | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Я имел в виду, что релейшен может стоять не на поле JournalId таблицы InventJournalTable, а на какое-то другое. Хотя это уже клиника. 
		
		
		
		
		
		
		
	По идее должно отрабатываться и без добавления релейшена на таблице. Может быть это исправлено в каких-то версиях? У меня 3.0 sp3 cu1  | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Спасибо, Yprit, за существенное уточнение. Так все работает.
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	ИМХО. С уважением, Владимир Ю.  | 
| 
	
 |