Показать сообщение отдельно
Старый 30.06.2011, 10:04   #16  
Гонков Владислав is offline
Гонков Владислав
Участник
Аватар для Гонков Владислав
 
35 / 10 (1) +
Регистрация: 17.09.2008
при открытии form 20 выполняется следующий код:

Form - OnOpenForm()
IF RunOnTempRec THEN
RESET;

Form - OnFindRecord(Which : Text[1024]) : Boolean
IF RunOnTempRec THEN BEGIN
TempGLEntry.COPY(Rec);
Found := TempGLEntry.FIND(Which);
IF Found THEN
Rec := TempGLEntry;
EXIT(Found);
END ELSE
EXIT(FIND(Which));

Form - OnNextRecord(Steps : Integer) : Integer
IF RunOnTempRec THEN BEGIN
TempGLEntry.COPY(Rec);
ResultSteps := TempGLEntry.NEXT(Steps);
IF ResultSteps <> 0 THEN
Rec := TempGLEntry;
EXIT(ResultSteps);
END ELSE
EXIT(NEXT(Steps));

Form - OnAfterGetRecord()
fn_LegCompNo; // $94 >>

Form - OnAfterGetCurrRecord()
// RA20 >>
fn_ViewTotals;
// RA20 <<


fn_ViewTotals()
// RA20
IF RunOnTempRec THEN
CurrForm.TotalAmount.VISIBLE := g_cduOtherFunctions.fn_ViewTotalGLEntryAmount(TempGLEntry)
ELSE
CurrForm.TotalAmount.VISIBLE := g_cduOtherFunctions.fn_ViewTotalGLEntryAmount(Rec);
CurrForm.TotalDebitAmount.VISIBLE := CurrForm.TotalAmount.VISIBLE;
CurrForm.TotalCreditAmount.VISIBLE := CurrForm.TotalAmount.VISIBLE;

fn_LegCompNo()
// $94 >>
IF "Document Type" = "Document Type"::Invoice THEN BEGIN
//fn_LegCompNo
l_SalesInvoiceHeader.SETRANGE("No.", "Document No.");
IF l_SalesInvoiceHeader.FIND('-') THEN BEGIN
"Leg. Comp. Posting No." := l_SalesInvoiceHeader."Leg. Comp. Posting No.";
l_SalesShptHeader.SETCURRENTKEY("Order No.");
l_SalesShptHeader.SETRANGE("Order No.", l_SalesInvoiceHeader."Order No.");
IF l_SalesShptHeader.FIND('-') THEN
"Leg. Comp. Shipping No." := l_SalesShptHeader."Leg. Comp. Shipping No."
ELSE
CLEAR("Leg. Comp. Shipping No.");
END ELSE BEGIN
CLEAR("Leg. Comp. Posting No.");
CLEAR("Leg. Comp. Shipping No.")
END
END ELSE BEGIN
CLEAR("Leg. Comp. Posting No.");
CLEAR("Leg. Comp. Shipping No.")
END
// $94 <<

, но до запуска form 20 выполняется следующая функция, которая и открывает эту форму; она запускается с определённым параметром на соответствующем дрилдауне субформы Оборотной ведомости (form 12406):

DrillDownGLEntry(Show : 'StartBalance,Debit,Credit,EndBalance,NetChange')
GLEntry.RESET;
// $45 >>
//GLEntry.SETCURRENTKEY("Source Type","Source No.","G/L Account No.","Global Dimension 1 Code","Global Dimension 2 Code");
GLEntry.SETCURRENTKEY("Source Type","Source No.","G/L Account No.","Global Dimension 1 Code","Global Dimension 2 Code",
"Business Unit Code","Posting Date");
// $45 <<
GLEntry.SETRANGE("Source Type",GLEntry."Source Type"::Customer);
GLEntry.SETRANGE("Source No.","No.");
GLEntry.SETFILTER("G/L Account No.",GETFILTER("G/L Account Filter"));
GLEntry.SETFILTER("Global Dimension 1 Code",GETFILTER("Global Dimension 1 Filter"));
GLEntry.SETFILTER("Global Dimension 2 Code",GETFILTER("Global Dimension 2 Filter"));
GLEntry.SETFILTER("Posting Date",GETFILTER("Date Filter"));

CASE Show OF
Show::StartBalance:
IF COPYSTR(GETFILTER("Date Filter"),1,2) <> '..' THEN BEGIN
IF GETRANGEMIN("Date Filter") <> 0D THEN
GLEntry.SETRANGE("Posting Date",0D,GETRANGEMIN("Date Filter") - 1);
END ELSE
EXIT;
Show:ebit: GLEntry.SETFILTER("Debit Amount",'<>%1',0);
Show::Credit: GLEntry.SETFILTER("Credit Amount",'<>%1',0);
Show::EndBalance:
IF GETRANGEMAX("Date Filter") <> 0D THEN

// RA26 MBS ERROR >>
// GLEntry.SETRANGE("Posting Date",0D,GETRANGEMAX("Date Filter") - 1)
GLEntry.SETRANGE("Posting Date",0D,GETRANGEMAX("Date Filter"))
// RA26 MBS ERROR <<

ELSE
EXIT;
Show::NetChange: GLEntry.SETFILTER(Amount,'<>%1',0);
ELSE
ERROR('');
END;
//GLEntry.SETCURRENTKEY("Posting Date"); // $45
FORM.RUN(0,GLEntry);