27.01.2012, 12:14 | #1 |
Участник
|
Связь двух таблиц
Дело обстоит так: Из формы заказов открывается сторонняя форма, на форме лежит табличка(S_LogisticsJournal) которая связана с SalesTable по SalesID(связана не в смысле Relation а в смысле логически) причем 1 записи из SalesTable может соответствовать несколько в S_LogisticsJournal. Задача: при открытии формы с табличкой(S_LogisticsJournal) на гриде нужно выводить только те записи которые соот-ют записи в SalesTable причем в сортированном виде. Я делал так: создавал Relation м\у табличками, а в Inite дата соурса(S_LogisticsJournal) писал след код:
X++: if (element.args().dataset() == tablenum(SalesTable)) { qb.relations(true); qb.addSortField(fieldnum(S_LogisticsJournal, DocumentNum), SortOrder::Descending); } X++: qb = q.addDataSource(TableNum(S_LogisticsJournal)); if (element.args().dataset() == tablenum(SalesTable)) { qb.addDynalink( fieldnum(S_LogisticsJournal, Source), element.args().record(),fieldnum(SalesTable, SalesID)); qb.addSortField(fieldnum(S_LogisticsJournal, DocumentNum), SortOrder::Descending); } X++: SELECT * FROM S_LogisticsJournal WHERE SalesTable.SalesId=S_LogisticsJournal.Source X++: SELECT * FROM S_LogisticsJournal WHERE S_LogisticsJournal.Source=SalesTable.SalesId |
|
27.01.2012, 12:24 | #2 |
Ищущий знания...
|
Цитата:
Сообщение от AngelDominantes
Дело обстоит так: Из формы заказов открывается сторонняя форма, на форме лежит табличка(S_LogisticsJournal) которая связана с SalesTable по SalesID(связана не в смысле Relation а в смысле логически) причем 1 записи из SalesTable может соответствовать несколько в S_LogisticsJournal. Задача: при открытии формы с табличкой(S_LogisticsJournal) на гриде нужно выводить только те записи которые соот-ют записи в SalesTable причем в сортированном виде. Я делал так: создавал Relation м\у табличками, а в Inite дата соурса(S_LogisticsJournal) писал след код:
X++: if (element.args().dataset() == tablenum(SalesTable)) { qb.relations(true); qb.addSortField(fieldnum(S_LogisticsJournal, DocumentNum), SortOrder::Descending); } X++: qb = q.addDataSource(TableNum(S_LogisticsJournal)); if (element.args().dataset() == tablenum(SalesTable)) { qb.addDynalink( fieldnum(S_LogisticsJournal, Source), element.args().record(),fieldnum(SalesTable, SalesID)); qb.addSortField(fieldnum(S_LogisticsJournal, DocumentNum), SortOrder::Descending); } X++: SELECT * FROM S_LogisticsJournal WHERE SalesTable.SalesId=S_LogisticsJournal.Source X++: SELECT * FROM S_LogisticsJournal WHERE S_LogisticsJournal.Source=SalesTable.SalesId
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
27.01.2012, 12:30 | #3 |
Ищущий знания...
|
+
для примера смотрите открытие формы журнала накладных клиентов по кнопке запросы из заказов на продажу.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
27.01.2012, 12:34 | #4 |
Участник
|
Да если EDT настроить работать будет, однако данная форма запускается еще и из формы предложений где нужно связывать с полем QuotationID у которого свой EDT. в таком случае оно не сработает!
|
|
27.01.2012, 12:38 | #5 |
Ищущий знания...
|
Цитата:
Либо делайте по аналогии реализации ценовых соглашений, которые вызываются как из клиентов, так и из поставщиков, номенклатуры... И там нормально отрабатывают все связи.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
27.01.2012, 12:41 | #6 |
Участник
|
Цитата:
Такой джойн не пробовали? X++: qb.addLink( fieldnum(S_LogisticsJournal, Source), fieldnum(SalesTable, SalesID)); qb.joinMode(JoinMode::InnerJoin); qb.addSortField(fieldnum(S_LogisticsJournal, DocumentNum), SortOrder::Descending); Последний раз редактировалось Krasher; 27.01.2012 в 12:44. |
|
|
За это сообщение автора поблагодарили: AngelDominantes (1). |
27.01.2012, 12:47 | #7 |
Участник
|
Цитата:
Сообщение от Krasher
Эти две записи абсолютно идентичны с точки зрения выполнения. Такой джойн не пробовали?
X++: qb.addLink( fieldnum(S_LogisticsJournal, Source), fieldnum(SalesTable, SalesID)); qb.joinMode(JoinMode::InnerJoin); qb.addSortField(fieldnum(S_LogisticsJournal, DocumentNum), SortOrder::Descending); |
|
27.01.2012, 18:53 | #8 |
Участник
|
Прислушайтесь к советам участников. Не нужно ничего дополнительно программировать. То что вы хотите реализовать решается в несколько щелчков мыши. Читайте про Dynalink.
Как настроить DynaLink или фильтр в форме Как подключить датасоурсы на два вторичных ключа одинакового типа на форме Последний раз редактировалось S.Kuskov; 27.01.2012 в 18:57. |
|
|
За это сообщение автора поблагодарили: Pustik (2), lev (7). |
|
Похожие темы | ||||
Тема | Ответов | |||
Связь двух разных кубов в OLAP? | 5 | |||
Связь таблиц CustPackingSlipTrans и SalesLine | 4 | |||
Невидимая связь двух таблиц в формах | 11 | |||
Связь двух таблиц | 10 | |||
Связь таблиц по RecId и отображение строки | 16 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|