|  24.09.2009, 09:01 | #1 | 
| Участник | Помогите показать в одном гриде две таблицы 
			
			Добрый день. Нужно в одном гриде показать две таблицы InventItemBarCode и InventTable: BarCode | ItemId | ItemName | ... (первые две колонки из InventItemBarCode остальные из InventTable) Ведущая таблица InventItemBarCode. В Init-методе датасоурса InventTable я попытался построить DynaLink: X++: public void init() { Query q; QueryBuildDataSource qb; ; super(); q = new Query(); qb = q.addDataSource(TableNum(InventTable)); qb.clearDynalinks(); qb.addDynalink(FieldNum(InventTable, ItemId), InventItemBarCode, FieldNum(InventItemBarCode, ItemId)); this.query(q); } Что я не так сделал? Второй день пытаюсь и не могу понять где ошибка. Пытался по-всякому, но пока безрезультатно.  Если пытаюсь связать через JoinSource, то таблицы связываются, но не по полю ItemId а по BarCode, см. вторую картинку. Последний раз редактировалось s.alex; 24.09.2009 в 09:25. | 
|  | 
|  24.09.2009, 10:43 | #2 | 
| Moderator | 
			
			Вообще говоря, эта задачка должна решаться через inner join InventTable к InventItemBarCode. 1. Проверьте, отключен ли у вас конфиг. ключ SysDeletedObjects30 (судя по всему, у вас АХАРТА 3.0; метку в 3шке не помню, ключ находится в ветке "Администрирование"). Внимание!!! Напоминаю, что при его отключении все DEL_-поля будут физически удалены из БД! 2. Если ключ отключен и все равно связь устанавливается как на 2й картинке, попробуйте добавить на InventItemBarcode relation на InventTable: InventItemBarcode.itemId == InventTable.ItemId 
				__________________ Андрей. | 
|  | 
|  24.09.2009, 10:50 | #3 | 
| MCITP |   
			
			Вообще-то, диналинк используется для других целей... Вам нужен обычный innerJoin, сделайте соединение инвентТабле к Баркоду через ИннерДжоин. Если связывается челез баркод, то делаете всё то же что у вас и есть, только замените диналинк, на обычный линк, типа так: X++: qb.relations(false) //qb.clearLinks(); qb.addLink(...) 
				__________________ Zhirenkov Vitaly | 
|  | 
|  24.09.2009, 10:58 | #4 | 
| Участник | Цитата: 
		
			Сообщение от Dron AKA andy
			   Вообще говоря, эта задачка должна решаться через inner join InventTable к InventItemBarCode. 1. Проверьте, отключен ли у вас конфиг. ключ SysDeletedObjects30 (судя по всему, у вас АХАРТА 3.0; метку в 3шке не помню, ключ находится в ветке "Администрирование"). Внимание!!! Напоминаю, что при его отключении все DEL_-поля будут физически удалены из БД! 2. Если ключ отключен и все равно связь устанавливается как на 2й картинке, попробуйте добавить на InventItemBarcode relation на InventTable: InventItemBarcode.itemId == InventTable.ItemId Про ключ как-то страшно, удалить все DEL_-поля из таблиц: на это я точно не решусь!!! | 
|  | 
|  24.09.2009, 11:09 | #5 | 
| Moderator | 
			
			DEL_-поля нужны только на этапе перехода с предыдущей версии на текущую, т.е. если у вас 3.0, то они были необходимы при переходе 2.5 -> 3.0. При обычной работе этот ключ рекомендуется отключать, в его хелпе об этом прямо написано.
		 
				__________________ Андрей. | 
|  | 
|  24.09.2009, 11:12 | #6 | 
| Участник | Цитата: 
		
			Сообщение от ZVV
			   Вообще-то, диналинк используется для других целей... Вам нужен обычный innerJoin, сделайте соединение инвентТабле к Баркоду через ИннерДжоин. Если связывается челез баркод, то делаете всё то же что у вас и есть, только замените диналинк, на обычный линк, типа так: X++: qb.relations(false) //qb.clearLinks(); qb.addLink(...) X++: q = new Query(); qb = q.addDataSource(TableNum(InventTable)); qb.relations(False); qb.addLink(FieldNum(InventItemBarCode, ItemId), FieldNum(InventTable, ItemId)); this.query(q); Ошибка: Источник данных не входит в состав родительского источника данных. Пробовал настраивать JoinSource для InventTable_DS - не помогает. Последний раз редактировалось s.alex; 24.09.2009 в 11:16. | 
|  | 
|  24.09.2009, 11:14 | #7 | 
| Участник | 
			
			Ключ нашел в АОТ, но что значит "включить"?
		 | 
|  | 
|  24.09.2009, 11:41 | #8 | 
| Administrator | Цитата: 
		
			Сообщение от s.alex
			   Сделал вот так  X++: q = new Query(); qb = q.addDataSource(TableNum(InventTable)); qb.relations(False); qb.addLink(FieldNum(InventItemBarCode, ItemId), FieldNum(InventTable, ItemId)); this.query(q); Ошибка: Источник данных не входит в состав родительского источника данных. Пробовал настраивать JoinSource для InventTable_DS - не помогает. X++: q = new Query(); qb = q.addDataSource(TableNum(InventTable)); qb = qb.addDataSource(tablenum(InventItemBarCode)); qb.addLink(FieldNum(InventItemBarCode, ItemId), FieldNum(InventTable, ItemId)); this.query(q); Включить / отключить ключ означает зайти в \Администрирование\Настройка\Система\Конфигурация и установить / снять соответствующую галку 
				__________________ Возможно сделать все. Вопрос времени | 
|  | 
|  24.09.2009, 12:05 | #9 | 
| Участник | 
			
			Проблему решил!!!! Вы будете смеяться, это пожалуйста, только не пинайте сильно! Решил таким образом 1) настроил свойство JoinSource не в InventTable_DS, а в InventItemBarCode_DS с InnerJoin в LinkType, т.е. поменял направление связи. 2) убрал все что я перекрывал на InventTable_DS 3) GRID связал с InventTable_DS (раньше был связан с InventItemBarCode_DS, я же хотел чтобы по ней была основная выборка!!!) В итоге в гриде все Ок, все поля видны, по всем полям работают поиски и фильтры и запрос получился вот такой: | 
|  | 
|  24.09.2009, 12:25 | #10 | 
| MCITP |   
			
			Там не в этом проблема была, а в том что добавлять ничего не нужно было   )) Датасорс же уже был в запросе, просто его нужно было найти и к нему сделать линк, а не добавлять ещё один, причём на первом уровне...  Ну автор разобрался и ладно... Конечно "теорией запросов Аксапты" надо бы ему заняться поплотнее.   
				__________________ Zhirenkov Vitaly | 
|  | 
|  24.09.2009, 14:47 | #11 | 
| Участник | |
|  | 
|  24.09.2009, 18:53 | #12 | 
| MCITP |   
			
			Ну в хелпе/документации про это есть. Книжки "MorphX", "Inside Microsoft Dynamics" неплохие - поихите по форуму проскакивали на них ссылки. 
				__________________ Zhirenkov Vitaly | 
|  | 
|  25.09.2009, 13:11 | #13 | 
| Участник | 
			
			Смотри здесь
		 
				__________________ // no comments | 
|  | 
| Теги | 
| join, грид, таблица | 
|  | 
|  Похожие темы | ||||
| Тема | Ответов | |||
| Две таблицы в одном datasource | 10 | |||
| Две таблицы в одном гриде | 3 | |||
| две таблицы в двух разных вирт компаниях | 1 | |||
| Две таблицы - один grid!? | 3 | |||
| Как привязать две таблицы или как это наз-ся? | 13 | |||
| 
 |