24.10.2005, 14:13 | #1 |
Участник
|
Возникла следующая проблема, помогите плз её решить.
Суть такова: В отчёте на табличке 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. Переписывать отчёт полностью слишком долго. Может кто-нибудь подскажет вариант? |
|
24.10.2005, 14:18 | #2 |
Участник
|
Т.е должно быть нечто подобное:
.... IF ValueEntry."Item Ledger Entry Type"=ValueEntry."Item Ledger Entry Type"::"Negative Adjmt." THEN .... |
|
28.10.2005, 14:24 | #3 |
Участник
|
Либо Entry Type в ключ, либо перебором в цикле.
|
|