|
![]() |
#1 |
NavAx
|
X++: static void JobTest(Args _args) { InventTrans InventTrans; InventJournalTrans InventJournalTrans; ; select sum(Qty), count(RecId) from InventTrans group by TransRefId join sum(Qty), sum(CostAmount) from InventJournalTrans where InventJournalTrans.InventTransId == InventTrans.InventTransId && InventJournalTrans.JournalId == "СЖ00546541"; info(strfmt("%1 %2 %3 %4",InventTrans.Qty, InventTrans.RecId, InventJournalTrans.Qty, InventJournalTrans.CostAmount)); } -9 720,00 2 -9 720,00 -57 639,60 |
|
![]() |
#2 |
MCITP
|
![]()
2 raz: Извини, но пример "ни о чём" в контексте имеющегося вопроса.
![]() В приведённом примере связь похоже 1 к 1-му. А нужно 1 ко многим. И группировка должна быть на "таблице-шапке". Вот пример raz, не работающий на правильных данных и мой вариант решения исходной задачи: X++: static void ZVVJobTest(Args _args) { InventTrans InventTrans; InventJournalTrans InventJournalTrans, InventJournalTransIn; ; // Журнал "УЗЖ001779" // В нём одна строка с кол-вом 10 (цена 20, сумма 200) // По ней 2 проводки с кол-вом 5 в каждой select sum(Qty), count(RecId) from InventTrans group by TransRefId join sum(Qty), sum(CostAmount), count(RecId) from InventJournalTrans where InventJournalTrans.InventTransId == InventTrans.InventTransId && InventJournalTrans.JournalId == "УЗЖ001779"; info(strfmt("Неверно! Проводка: %1 %2 Строка: %3 %4 %5",InventTrans.Qty, InventTrans.RecId, InventJournalTrans.Qty, InventJournalTrans.RecId, InventJournalTrans.CostAmount)); while Select sum(Qty), sum(CostAmount), count(RecId) from InventJournalTrans group by ItemId where InventJournalTrans.JournalId == "УЗЖ001779" { // Второй Джоин строк журнала для демонстрации общего случая, когда нет группируемого поля во второй таблице // (возможно в некотрых случаях по смыслу он и не нужен!) select sum(Qty), count(RecId) from InventTrans join count(recid) from InventJournalTransIn where InventJournalTransIn.InventTransId == InventTrans.InventTransId && InventJournalTransIn.JournalId == "УЗЖ001779" && InventJournalTransIn.ItemId == InventJournalTrans.ItemId; info(strfmt("Верно! Проводка: %1 %2 Строка: %3 %4 %5",InventTrans.Qty, InventTrans.RecId, InventJournalTrans.Qty, InventJournalTrans.RecId, InventJournalTrans.CostAmount)); } } Неверно! Проводка: 10,00 2 Строка: 20,00 2 400,00 Верно! Проводка: 10,00 2 Строка: 10,00 1 200,00
__________________
Zhirenkov Vitaly Последний раз редактировалось ZVV; 03.04.2008 в 12:13. Причина: Сорри, ошибка закралась в коде :) |
|