16.03.2005, 14:21 | #1 |
Участник
|
А вот кто может сказать что-нибудь по поводу следующей ситуации?
В одном из полей формы имеем код на триггер OnDrillDown. В триггере формируется временная таблица, после чего вызывается FORM.RUN и результаты выводятся на другой форме. Так вот, в некоторых случаях, когда формирование таблицы занимает продолжительное время, при открытии новой формы фокус сначала передаётся ей, а затем возвращается на родительскую форму. Такая же картина иногда наблюдается при установке нескольких фильтров на таблицу. При очередном нажатии F7 начинается сканирование таблицы, затем появляется форма фильтра, а потом активной снова становится форма, из которой вызывался фильтр. Как с такой ситуацией бороться? |
|
16.03.2005, 15:48 | #2 |
Moderator
|
В модальном режиме, например, запустить.
А вообще пример кода в студию |
|
17.03.2005, 11:00 | #3 |
Участник
|
Можно, конечно, попробовать модальный режим, но для пользователей это будет неудобно. Собственно код - это раскрытие суммы из оборотно-сальдовой ведомости. Иногда они открывают несколько выписок из одной оборотки.
Пример кода уже в студии. Переменная GLCorrEntry2 в коде - та самая временная таблица, в которую помещаются результаты. <div class='CALtop'>C/AL</div><div class='CAL'>AnalysisViewEntry.SETFILTER("Analysis View Code",GETFILTER("Analysis View Filter")); AnalysisViewEntry.SETFILTER("G/L Account No.",GETFILTER("G/L Account Filter")); AnalysisViewEntry.SETFILTER("Business Unit Code",GETFILTER("Business Unit Filter")); AnalysisViewEntry.SETFILTER("Posting Date",GETFILTER("Date Filter")); IF GETFILTER("Dimension 1 Filter") <> '' THEN AnalysisViewEntry.SETFILTER("Dimension 1 Value Code",GETFILTER("Dimension 1 Filter")); IF GETFILTER("Dimension 2 Filter") <> '' THEN AnalysisViewEntry.SETFILTER("Dimension 2 Value Code",GETFILTER("Dimension 2 Filter")); IF GETFILTER("Dimension 3 Filter") <> '' THEN AnalysisViewEntry.SETFILTER("Dimension 3 Value Code",GETFILTER("Dimension 3 Filter")); IF GETFILTER("Dimension 4 Filter") <> '' THEN AnalysisViewEntry.SETFILTER("Dimension 4 Value Code",GETFILTER("Dimension 4 Filter")); AnalysisViewEntry.SETFILTER("Credit Amount", '<>%1', 0); CLEAR(Dim1Filter); CLEAR(Dim2Filter); CLEAR(Dim1); CLEAR(Dim2); IF IdentFilter <> '' THEN BEGIN Dim1:=TRUE; IdentFilterCopy:=IdentFilter; Dim1Filter:=COPYSTR(IdentFilterCopy, 1, STRPOS(IdentFilterCopy, '@') - 1); IdentFilterCopy:=DELCHR(IdentFilterCopy, '<', ' '); IdentFilterCopy:=DELSTR(IdentFilterCopy, 1, STRLEN(Dim1Filter) + 1); IF IdentFilterCopy <> '' THEN BEGIN Dim2:=TRUE; Dim2Filter:=COPYSTR(IdentFilterCopy, 1, STRPOS(IdentFilterCopy, '@') - 1); IdentFilterCopy:=DELCHR(IdentFilterCopy, '<', ' '); IdentFilterCopy:=DELSTR(IdentFilterCopy, 1, STRLEN(Dim2Filter) + 1); END; END; IF Dim1 THEN AnalysisViewEntry.SETRANGE("Dimension 1 Value Code", Dim1Filter); IF Dim2 THEN AnalysisViewEntry.SETRANGE("Dimension 2 Value Code", Dim2Filter); IF AnalysisViewEntry.FIND('-') THEN REPEAT AnalysisViewEntryToGLEntries.GetGLEntries(AnalysisViewEntry, TempGLEntry); UNTIL AnalysisViewEntry.NEXT = 0; IF TempGLEntry.FIND('-') THEN REPEAT GLCorrEntry.RESET; GLCorrEntry.SETCURRENTKEY("Debit Entry No."); GLCorrEntry.SETFILTER("Debit Entry No.", FORMAT(TempGLEntry."Entry No.")); IF GLCorrEntry.FIND('-') THEN BEGIN GLCorrEntry2.TRANSFERFIELDS(GLCorrEntry); IF NOT GLCorrEntry2.INSERT THEN; END ELSE BEGIN GLCorrEntry.RESET; GLCorrEntry.SETCURRENTKEY("Credit Entry No."); GLCorrEntry.SETFILTER("Credit Entry No.", FORMAT(TempGLEntry."Entry No.")); IF GLCorrEntry.FIND('-') THEN BEGIN GLCorrEntry2.TRANSFERFIELDS(GLCorrEntry); IF NOT GLCorrEntry2.INSERT THEN; END; END; UNTIL TempGLEntry.NEXT = 0; FORM.RUN(FORM::"G/L Correspondence Entries", GLCorrEntry2);</div> |
|