Показать сообщение отдельно
Старый 24.10.2005, 14:51   #1  
VioHap is offline
VioHap
Участник
 
29 / 10 (1) +
Регистрация: 06.07.2005
Адрес: Е-бург
Проблема с CALCSUMS
Возникла следующая проблема, помогите плз её решить.
Суть такова:

В отчёте на табличке Item, триггер OnAfterGetRecord прописано:

....
GetQuantityAndAmount(0D, CALCDATE('<-1D>', StartingDate));
StartingQty := ROUND(DebitQuantity - CreditQuantity / QuanUnitToBaseUnit, ValencyValue, '=');
StartingCost := DebitCost - CreditCost;

GetQuantityAndAmount(0D, EndingDate);
EndingQty := ROUND(DebitQuantity - CreditQuantity / QuanUnitToBaseUnit,ValencyValue,'=');
EndingCost := DebitCost - CreditCost;

GetQuantityAndAmount(StartingDate, EndingDate);
IncreaseQty := ROUND(DebitQuantity / QuanUnitToBaseUnit,ValencyValue,'=');
IncreaseCost := DebitCost;
....
Таким образом считаются суммы на: начало и конец периода, а также приход и расход за заданный период.


Код самой функции:
//код
ValueEntry.SETRANGE("Posting Date", StartDate, EndDate);

ValueEntry.SETFILTER(ValueEntry."Valued Quantity",'>0');
ValueEntry.CALCSUMS("Invoiced Quantity","Cost Amount (Actual)");
DebitQuantity := ValueEntry."Invoiced Quantity";
DebitCost := ValueEntry."Cost Amount (Actual)";

ValueEntry.SETFILTER(ValueEntry."Valued Quantity",'<0');

ValueEntry.CALCSUMS("Invoiced Quantity","Cost Amount (Actual)");
CreditQuantity := -ValueEntry."Invoiced Quantity";
CreditCost := -ValueEntry."Cost Amount (Actual)";
//код

Эту функцию надо переделать таким образом, чтобы в неё попадали сторнирующие акты списания со знаком '+'. Есть вариант, но нужно отказаться от использования CALCSUMS. Переписывать отчёт полностью слишком долго.
Может кто-нибудь подскажет вариант?

Должно быть нечто подобное, как я понимаю:

....
IF ValueEntry."Item Ledger Entry Type"=ValueEntry."Item Ledger Entry Type"::"Negative Adjmt." THEN
....