| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Отображение связи n:n на форме
			 
			
			Вопрос 1: как правильно сделать отображение связанных n:n таблиц на ОДНОЙ форме? 
		
		
		
			Вопрос 2: как правильно сделать вызов второй формы, которая содержит таблицу, связанную отношением n:n к первой? Вопрос 3: есть ли где-нибудь в стандартной аксапте отображение связей n:n, которое можно взять за образец? ================================ Подробнее: Есть две таблицы, которые связаны отношением n:n (многие-ко-многим) и понятны пользователям Есть третья служебная таблица, которая физически содержит эти связи Пользователи "знают" только о двух первых таблицах. Для пользователей третья таблица не имеет никакого практического смысла. Поэтому не хотелось бы заставлять их открывать какие-то служебные окна и/или служебные фильтры хотелось бы иметь либо одно окно, в котором показаны строки с отношением n:n либо два отдельных окна: в первом Таблица1, по кнопочке открываем второе окно с таблицей2. А во втором окне видны только связанные с первой записи. Как такое сделать правильно? Есть ли уже аналоги/образцы в Аксапте? Спасибо.  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Можно сделать View = Таблица2 join ТаблицаNN. И тогда рассматривать связь Таблицы1 к View уже как 1:n.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 
			
			На картинках показана связь 1:n. Следует ли из этого, что есть желание переделать связь n:n на связь 1:n ? 
		
		
		
		
		
		
			Если связь n:n, то что все-таки отображается в первом гриде? Просто все записи из Таблицы 1? Или все записи из Таблицы 1 на каждую связь с Таблицей 2 (в этом случае будут отображаться дубликаты)? Является ли какая-то из таблиц "более главной"? 
				__________________ 
		
		
		
		
		
			Dynamics AX Experience Последний раз редактировалось CDR; 16.03.2011 в 14:46.  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			На вскидку полный аналог - пользователи и группы пользователей. Соответственно две формы для каждого справочника, связанные значения второй таблицы отображаются на отдельной вкладке.  
		
		
		
		
		
		
			Есть еще примеры, но там обычно одна таблица является "более главной" и связь задается только относительно ее в отдельной форме, хотя в БД полноценный n:n. Например, связь Клиента и Отраслей. 
				__________________ 
		
		
		
		
	Ivanhoe as is..  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А почему нельзы добавить на форму приджойненный к первой таблице датасорс со связями, а вторую таблицу заделайить к нему?
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Axapta v.3.0 sp5 kr2  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Согласен, если забыть про стандартные примеры, то так и делаю.
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Ivanhoe as is..  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Только наверное наоборот, нужно к ведущей таблице заделайить (LinkType = Delayed) связку из приджойненных таблиц. Ну или как я выше предложил такую связку оформить как View. Иначе в первой таблице мы получим дубликаты записей из-за inner joina
		 
		
		
		
		
		
		
		
		
			Последний раз редактировалось S.Kuskov; 16.03.2011 в 14:51. Причина: пояснения  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: AndyD (2). | |
| 
			
			 | 
		#8 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Такое решение подразумевает, что первая таблица является главной. Соответственно просмотреть все записи в первой таблице, соответствующие какой-либо записи из второй таблицы не получится.
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Dynamics AX Experience  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
 . А как вы себе представляете двухстороннее взаимодействие в рамках одной формы? Переключатель режимов? Но всё равно же в каждый конкретный момент какая-то из таблиц должны быть главной. Имхо, две формы - будут понятнее для пользователя.
		Последний раз редактировалось S.Kuskov; 16.03.2011 в 14:57.  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Это еще одна форма. Внимательно читаем вопрос Сергея номер 1.   
		
		
		
		
		
		
			![]() А вообще немного странный вопрос. Если взять пример Ивана с пользователями и группами, то что хочет Сергей увидеть, выведя на ОДНОЙ форме связь n:n? В какие группы входит пользователь? Какие пользователи входят в группу? Или и то, и другое сразу? 
				__________________ 
		
		
		
		
		
			Dynamics AX Experience Последний раз редактировалось CDR; 16.03.2011 в 15:00.  | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			О, как быстро. 
		
		
		
		
		
		
			
		
		
		
		
	Спасибо. Цитата: 
	
но в реальности n:n Отличный вопрос! Об этом я тоже не подумал. С точки зрения Аксапты на одной форме есть ведущий датасорс и подчиненные датасорсы. Если на первом гриде будет Таблица1, то на втором гриде должны отобразиться связанные записи из Таблица2. Да, в вопросе 2 более понятно, чего хочется. Пользователь работает с формой1/таблица1 (ведущая форма), жамкает на кнопку, открывается форма2/таблица2 (подчиненная форма) со связанными записями. Если пользователь работает формой2/таблица2, то уже Форма2 становится ведущей. Пользователь жамкает на кнопку, открывается форма1/таблица1 (подчиненная форма) со связанными записями. Другими словами, хочется dynalink для связей n:n. Ага. Спасибо. Но там вручную программисруемые view. Вопрос скорее о нормальных гридах и о query, нежели о ручной выборке записей. Цитата: 
	
Цитата: 
	
Да-да. Все правильно. Вопрос ведущий-ведомый (master/detail) я не додумал. Форма не должна быть двухсторонней. Верхний грид ведущий, нижний - ведомый. Цитата: 
	
Меня скорее интересует запрос (query), который позволит связать n:n таблицы. В одной форме или в разных - не так уж и важно. Соглашусь, что изначальный вопрос надо было поставить чуть-чуть по-другому.  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
картинкой. я ж конечно сделал тестовую форму. слева Таблица1, справа - Таблица2. посередине техническая таблица со связями n:n. если использовать обычный delayed. то справа мы видим ОДНУ запись, а хочется видеть ВСЕ записи, связанные с левой. что должно быть в запросе? Последний раз редактировалось mazzy; 16.03.2011 в 15:33. Причина: собственно вопрос: что должно быть в запросе?  | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
2 mazzy Я предлагал сделать так 1таблица->иннер джойн->таблица связи->delyed->2таблица Но в этом случае записи в первой таблице множились бы По-этому, надо сделать так 1таблица->delyed->таблица связи->иннер джойн->2таблица 
				__________________ 
		
		
		
		
	Axapta v.3.0 sp5 kr2  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: mazzy (5). | |
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Два грида на одной форме, реализующие связь в одну сторону + два грида на другой форме, реализующие связь в обратную сторону, рализовать проще чем две формы по одному гриду на каждой с возможностью перехода друг к дружке.  
		
		
		
		
		
		
		
	Во втором случае сложность в том, что нужно обеспечить два режима работы формы: "Отображение связанных данных" и "Отображение всех данных". Из-за того что поле связи находится во внешней промежуточной таблице, для использование dynalink прийдется на форме ведущим делать датасорс с этой самой промежуточной таблицей. Само по себе это не проблема, проблема в том, что при отсутствии dynalink (режим "Отображение всех данных") прийдётся в ручную выключать связь промежуточной таблицы с функциональной, т.е превращать функциональную таблицу из ведомой в ведущую.  | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Но только не то. И деловые отношения, и используемые отрасли содержат ссылку на PartyId а у меня немного другой случай. обе мои таблицы ничего не знают о технической таблице со связями.  | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Кстати, много ко многим, это 
		
		
		
		
		
		
			PurchTable->VendInvoicePurchLink->VendInvoiceJour и Заказы тоже 
				__________________ 
		
		
		
		
	Axapta v.3.0 sp5 kr2  | 
| 
	
 | 
| 
			
			 | 
		#17 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Чувствовал же, что чуть-чуть осталось. И чуть-чуть чего-то недопонимаю. Спасибо всем. чего я не понимал: во-первых, даже для связи n:n все равно остается ведущий и ведомый грид! во-вторых, нужно юзать innerJoin вместо Delyed для связи второй таблицы.  | 
| 
	
 | 
| 
			
			 | 
		#18 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			теперь стала понятна и прошлая ветка Отношение many-to-many
		 
		
		
		
		
		
		
			
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#19 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Теперь это стало понятно. Так и будем делать. Спасибо. Цитата: 
	
Хочешь сказать, что если жамкнуть в заказах покупку на запрос \ накладные, то я увижу накладыне по VendInvoicePurchLink? всю жизнь думал, что увижу накладные по одному заказу. Щас. проверю. Спасибо.  | 
| 
	
 | 
| 
			
			 | 
		#20 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Да, накладные по этому заказу будут. Но выбираются они с помощью VendInvoicePurchLink. 
		
		
		
		
		
		
			Смотри метод Init() на датасорсе vendInvoiceJour в форме VendInvoiceJour PS VendInvoiceJournal, конечно же 
				__________________ 
		
		
		
		
		
			Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 16.03.2011 в 16:14.  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: mazzy (5), S.Kuskov (2). | |
| Теги | 
| как правильно, связь таблиц, связь n:n, связи | 
| 
	
	 | 
	
		
		
  |