Показать сообщение отдельно
Старый 27.01.2012, 12:14   #1  
AngelDominantes is offline
AngelDominantes
Участник
 
76 / 9 (1) +
Регистрация: 30.12.2010
Связь двух таблиц
Дело обстоит так: Из формы заказов открывается сторонняя форма, на форме лежит табличка(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);

    }
Но в таком случае Relation не работал, работала только сортировка, если удалить Relation и написать след.
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
Совсем запутался ( помогите разобраться. AX2009