Показать сообщение отдельно
Старый 31.03.2016, 13:09   #9  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,651 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Alucardkds Посмотреть сообщение
Да, эти таблицы связаны. В обеих таблицах есть поле DepartmentId и при создании записи в Table1 могут быть созданы только те, по которым есть записи в Table2.

И моя идея реализации работает по 1-ому варианту, да.
Но если есть что-то более оптимальное - с радостью выслушаю совет..
X++:
void initQuery()
{
    query query1 = new query();
   QueryBuildDataSource    qbds1, qbds2;
    ;

    qbds1= query1.addDataSource(tableNum(Table1));
    qbds2= qbds1.addDataSource(tablenum(Table2));

    // Если есть явно прописанные Relation на таблицах или в EDT
    //qbds2.relation(true);
    // Если нет, то указать объединение явно
    qbds2.addLink(fieldnum(Table1, DepartmentId), fieldnum(Table2, DepartmentId))

    // Явное указание полей, которые будут отображены в форме диалога
    qbds1.addRange(fieldnum(Table1, Field1));
    qbds2.addRange(fieldnum(Table2, Field1));

    queryrun1 = new queryRun(query1);
}
X++:
void printSheet1()
{
...
    EDT    edt1, edt2;
    Table1    table1;
    Table2    table2;
...
    ;
    while (queryrun1.next())
    {
        table1 = queryrun1.get(tablenum(Table1));
        table2 = queryrun1.get(tableNum(Table2));

        edt1 = Table1.Field1;
        edt2 = Table2.Field2;
        (...)
  }
}
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: mazzy (2), Alucardkds (1).