Показать сообщение отдельно
Старый 07.12.2007, 14:10   #1  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
? if (record) в случае join с использованием group by
Выполните у себя такое вот задание - только убедитесь что номенклатура, которая указана в макросе выше, есть в остатках на каком-то складе.
X++:
static void testIfCursorBuffer(Args _args)
{
    InventSum   inventSum;
    InventDim   inventDim;
    #define.ItemId("ESB-009")
    ;
    select inventDim
        group by InventLocationId
        join sum(AvailPhysical) from inventSum
            group by ItemId
            where inventSum.ItemId == #ItemId &&
            inventDim.inventDimId == inventSum.InventDimId;

    print inventSum.AvailPhysical;
    print inventDim.InventLocationId;
    
    if (inventSum)
        print "InventSum";
        
    if (inventDim)
        print "InventDim";

    pause;

    select sum(AvailPhysical) from inventSum
        group by ItemId
        where inventSum.ItemId == #ItemId
        join inventDim
            group by InventLocationId
            where inventDim.inventDimId == inventSum.InventDimId;

    print inventSum.AvailPhysical;
    print inventDim.InventLocationId;
    
    if (inventSum)
        print "InventSum";
        
    if (inventDim)
        print "InventDim";

    pause;
}
Результаты получаются такие:

1) before first pause:

4500
MW
InventDim

2) before second pause:

4500
MW
InventSum

Кто что думает про такое поведение?
В смысле про то, что вторая запись из join является не-проинициализированной с точки зрения АХ?