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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.04.2008, 12:40   #1  
by_HT is offline
by_HT
Участник
 
195 / 10 (1) +
Регистрация: 12.10.2007
Пытаюсь запустить одну форму, два раза через кодеюнит... пишу:

Код:
SCB.SETFILTER(Type,'=%1',SCB.Type::Rek);
IF SCB.FIND('-') THEN "Open Form SCB.Rek";
COMMIT;
FormSCB.RUNMODAL;

CLEAR(FormSCB);
SCB.SETFILTER(Type,'=%1',SCB.Type::Inn);
IF SCB.FIND('-') THEN "Open Form SCB.Inn";
COMMIT;
FormSCB.RUNMODAL;
но вываливается ошибка:
"форма с которой запускается коденит", не может быть закрыто, так как блокировано "Форма которая открывается: FormSCB".
Старый 08.04.2008, 14:33   #2  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
А что такое вот это - "Open Form SCB.Rek"? Это процедура? Что делает?
Старый 08.04.2008, 14:44   #3  
by_HT is offline
by_HT
Участник
 
195 / 10 (1) +
Регистрация: 12.10.2007
Это процедура.... я там передаю параметры на форму
Код:
tParam:=tParam::Rek;
IF Setup."Account Type"= Setup."Account Type"::Клиент THEN bParam :=1 ELSE
IF Setup."Account Type"= Setup."Account Type"::Поставщик THEN bParam :=2 ELSE
bParam:=0;
SCB.SETFILTER(Type,'=%1',SCB.Type::Rek);
FormSCB.SetParam(bParam,tParam); 
FormSCB.SETTABLEVIEW(SCB); 
FormSCB.SETRECORD(SCB); 
FormSCB.CAPTION('заголовок");
EXIT;
Старый 08.04.2008, 15:11   #4  
randrews is offline
randrews
Участник
Аватар для randrews
 
312 / 10 (1) +
Регистрация: 06.12.2004
Цитата:
Сообщение от by_HT Посмотреть сообщение
но вываливается ошибка:
"форма с которой запускается коденит", не может быть закрыто, так как блокировано "Форма которая открывается: FormSCB".
1. Проследите по дебагеру на какой строке вываливается.
2. Есть подозрение, что тут важно - откуда вы запускаете этот код (контекст). Просто попробовал написать для теста такой код - все прокатило:
Код:
RCountry.FIND('-');
Countries.SETTABLEVIEW(RCountry);
Countries.SETRECORD(RCountry);
Countries.CAPTION('заголовок');
commit;
Countries.RUNMODAL;

CLEAR(Countries);

RCountry.FIND('-');
Countries.SETTABLEVIEW(RCountry);
Countries.SETRECORD(RCountry);
Countries.CAPTION('заголовок');
commit;
Countries.RUNMODAL;
P.S. Вас случайно не Тимур зовут? Просто НТ в логине и стиль программирования похож на одного моего знакомого коллегу.
Старый 08.04.2008, 16:06   #5  
DA_NEAL is offline
DA_NEAL
Участник
Аватар для DA_NEAL
Лучший по профессии 2017
Лучший по профессии 2009
 
788 / 54 (3) ++++
Регистрация: 05.08.2002
Адрес: Королев
На то и RUNMODAL чтобы один раз было открыто. Используйте RUN
__________________
Want to believe...
Старый 09.04.2008, 14:06   #6  
by_HT is offline
by_HT
Участник
 
195 / 10 (1) +
Регистрация: 12.10.2007
вернее это не ошибка, а Сообщение...
randrews , Ну явно это так, и при COMMIT, он хочет закрыть первоначальную форму... а закрыть ее он не может так как с нее запускается кодеюнит и он работает..и закрыться форма видемо может только после выполнения кода в кодеюните!.....
Если COMMIT не писать, то естествено не вываливается сообщение это... а вываливается уже другая о том, что нужно использовать COMMIT.
P.S К счастью, для Вас, не Тимур

DA NEAL, Если даже один раз писать RUNMODAL, все тоже сообщение выходит...
Старый 09.04.2008, 14:13   #7  
apanko is offline
apanko
MCTS
MCBMSS
Лучший по профессии 2009
 
1,164 / 139 (7) +++++
Регистрация: 24.02.2005
А что делает форма FormSCB когда запускается?
Старый 09.04.2008, 14:23   #8  
by_HT is offline
by_HT
Участник
 
195 / 10 (1) +
Регистрация: 12.10.2007
В Форма Client, запускается кодеюнит:
Код:
import."Import Client Bank"(DateFrom, DateTo, "Bank Account No.");
В кодеюните, выполняем запуск формы FormSCB, но перед этим переходим в функцию: Open Form SCB.Rek";

Код:
SCB.SETFILTER(Type,'=%1',SCB.Type::Rek);
IF SCB.FIND('-') THEN BEGIN "Open Form SCB.Rek";
COMMIT;
FormSCB.RUNMODAL;
END;
в функции Open Form SCB.Rek":

Код:
tParam:=tParam::Rek;
IF Setup."Account Type"= Setup."Account Type"::Êëèåíò THEN bParam :=1 ELSE
IF Setup."Account Type"= Setup."Account Type"::Ïîñòàâùèê THEN bParam :=2 ELSE
bParam:=0;
SCB.SETFILTER(Type,'=%1',SCB.Type::Rek);
FormSCB.SetParam(bParam,tParam); 
FormSCB.SETTABLEVIEW(SCB); 
FormSCB.SETRECORD(SCB); 
FormSCB.CAPTION('заголовок');
EXIT;
Старый 09.04.2008, 14:26   #9  
by_HT is offline
by_HT
Участник
 
195 / 10 (1) +
Регистрация: 12.10.2007
При Открытии формы, я там обробатываю параметры которые передовал из кодеюнита.
Старый 09.04.2008, 14:31   #10  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от by_HT Посмотреть сообщение
При Открытии формы, я там обробатываю параметры которые передовал из кодеюнита.
А зачем КОММИТ?
А почему сама эта функция Open Form... не выполняет РАНМОДАЛ?
Старый 09.04.2008, 14:44   #11  
by_HT is offline
by_HT
Участник
 
195 / 10 (1) +
Регистрация: 12.10.2007
почему выполняет, но опять же с этим сообщением:
форма с которой запускается коденит", не может быть закрыто, так как блокировано "Форма которая открывается: FormSCB".
Старый 09.04.2008, 15:01   #12  
randrews is offline
randrews
Участник
Аватар для randrews
 
312 / 10 (1) +
Регистрация: 06.12.2004
Так зачем COMMIT ?
Если есть код, который не видим, то попробуйте COMMIT поставить до работы с SCB.
Судя по коду (кроме непонятной строки FormSCB.SetParam(bParam,tParam); ) там нет изменений данных.
Старый 09.04.2008, 15:02   #13  
apanko is offline
apanko
MCTS
MCBMSS
Лучший по профессии 2009
 
1,164 / 139 (7) +++++
Регистрация: 24.02.2005
Уберите commit-ы, а runmodal-ы замените на run-ы.
Старый 09.04.2008, 15:17   #14  
by_HT is offline
by_HT
Участник
 
195 / 10 (1) +
Регистрация: 12.10.2007
В этой функции import."Import Client Bank"(DateFrom, DateTo, "Bank Account No.");
идет работа с SCB таблице.... =))

apanko, но тогда в этом случае, будут открываться сразу две формы!.. а надо по очереди...
Старый 09.04.2008, 15:20   #15  
apanko is offline
apanko
MCTS
MCBMSS
Лучший по профессии 2009
 
1,164 / 139 (7) +++++
Регистрация: 24.02.2005
Зато узнаете в них ли проблема.

Тогда вызов других форм перенесите из кодеюнита в первую форму (Клиент?).



И еще раз про последовательность:
Форма Клиент из нее запускается Кодеюнит ХХХ, функция Импорт
--Функция Импорт модифицирует (?) таблицу и вызывает форму СКБ, два раза
----Форма СКБ1. Делает непонятно что.
----Форма СКБ2. Делает непонятно что еще раз.
Старый 09.04.2008, 15:54   #16  
by_HT is offline
by_HT
Участник
 
195 / 10 (1) +
Регистрация: 12.10.2007
Ни чего не понимаю... Уже делаю тупо, запускаю из одной формы, другую...Без всякого лишнего кода!...
И все равно такая фигня
Старый 09.04.2008, 16:15   #17  
apanko is offline
apanko
MCTS
MCBMSS
Лучший по профессии 2009
 
1,164 / 139 (7) +++++
Регистрация: 24.02.2005
Вызов кодеюнита (и других форм) как инициируется на главной форме? По кнопке?
Старый 09.04.2008, 18:32   #18  
Milk is offline
Milk
Участник
 
242 / 12 (1) ++
Регистрация: 08.06.2006
by_HT, а функцию CLOSE не пробовали использовать?
Старый 10.04.2008, 08:05   #19  
by_HT is offline
by_HT
Участник
 
195 / 10 (1) +
Регистрация: 12.10.2007
apanko, да по Кнопке!!!!!
Milk, нет не пробывал...а смысл ее использовать?
Старый 10.04.2008, 09:02   #20  
apanko is offline
apanko
MCTS
MCBMSS
Лучший по профессии 2009
 
1,164 / 139 (7) +++++
Регистрация: 24.02.2005
В свойстве кнопки PushAction, что указано?
 


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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:44.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.