AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.03.2005, 14:21   #1  
Shoorik is offline
Shoorik
Участник
 
19 / 10 (1) +
Регистрация: 03.03.2005
Thumbs up
А вот кто может сказать что-нибудь по поводу следующей ситуации?
В одном из полей формы имеем код на триггер OnDrillDown. В триггере формируется временная таблица, после чего вызывается FORM.RUN и результаты выводятся на другой форме. Так вот, в некоторых случаях, когда формирование таблицы занимает продолжительное время, при открытии новой формы фокус сначала передаётся ей, а затем возвращается на родительскую форму.
Такая же картина иногда наблюдается при установке нескольких фильтров на таблицу. При очередном нажатии F7 начинается сканирование таблицы, затем появляется форма фильтра, а потом активной снова становится форма, из которой вызывался фильтр.
Как с такой ситуацией бороться?
Старый 16.03.2005, 15:48   #2  
Kirvisniemi is offline
Kirvisniemi
Moderator
 
342 / 13 (1) ++
Регистрация: 21.12.2004
В модальном режиме, например, запустить.
А вообще пример кода в студию
Старый 17.03.2005, 11:00   #3  
Shoorik is offline
Shoorik
Участник
 
19 / 10 (1) +
Регистрация: 03.03.2005
Можно, конечно, попробовать модальный режим, но для пользователей это будет неудобно. Собственно код - это раскрытие суммы из оборотно-сальдовой ведомости. Иногда они открывают несколько выписок из одной оборотки.
Пример кода уже в студии.
Переменная 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>
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 16:38.