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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.04.2013, 14:14   #1  
Predatore is offline
Predatore
Участник
 
163 / 17 (1) ++
Регистрация: 29.09.2010
Всем доброго времени суток!
А подскажет кто-нибудь, как у диалогового окна, в котором идёт прогресс бар, запретить нажимать кнопку Отмена? Ну или самостоятельно среагировать на её нажатие?

Суть проблемы: обращаюсь я из Нава к внешним данным (в репорте) и обращение это довольно долгое, посему, дабы пользователь не сильно нервничал и не думал что у него всё зависло, сделал я диалог с прогресс баром. Да вот беда, если пользователь нажмёт Отмена, то репорт брякнется, а внешние данные останутся висеть сиротливо в памяти так и не обработанными и что самое печальное, не закрытыми как следует. Как быть?
Старый 03.04.2013, 15:16   #2  
Fly is offline
Fly
Участник
Аватар для Fly
 
102 / 10 (1) +
Регистрация: 05.10.2007
Надо логику, которая выполняет работу с внешними данными, вынести из репорта в кодеюнит. А в репорте написать так:

IF NOT ExternalDataMgt.RUN THEN BEGIN
// здесь пишем код для закрытия всех процессов с внешними данными т.д.
END;

Соответственно в самом кодеюните у вас кроме работы с внешними данными будет и прогресс бар

...
Window.OPEN('External data handling...\@1@@@@@@@')
...
Window.UPDATE(1,...)
// Код
Window.CLOSE;

Если пользователь нажмет Отмена, то кодеюнит свалится с ошибкой и в репорте у вас отработается код внутри условия IF NOT ExternalDataMgt.RUN.
Старый 03.04.2013, 15:55   #3  
Predatore is offline
Predatore
Участник
 
163 / 17 (1) ++
Регистрация: 29.09.2010
Цитата:
Сообщение от Fly Посмотреть сообщение
Надо логику, которая выполняет работу с внешними данными, вынести из репорта в кодеюнит. А в репорте написать так:

IF NOT ExternalDataMgt.RUN THEN BEGIN
// здесь пишем код для закрытия всех процессов с внешними данными т.д.
END;

Соответственно в самом кодеюните у вас кроме работы с внешними данными будет и прогресс бар

...
Window.OPEN('External data handling...\@1@@@@@@@')
...
Window.UPDATE(1,...)
// Код
Window.CLOSE;

Если пользователь нажмет Отмена, то кодеюнит свалится с ошибкой и в репорте у вас отработается код внутри условия IF NOT ExternalDataMgt.RUN.
Не совсем подойдёт такое решение. Т.к. логика внешних данных напрямую зависит от репорта. Т.е. работа с внешними данные происходит при каждом OnAfterGetRecord, а так же и на OnPreDataItem и на OnPostDataItem. Плюс ко всему в репорте имеется ещё и вложенность...
Старый 03.04.2013, 17:29   #4  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Какова роль пользователя в процессе обмена? Может в Nas засунуть запуск отчета, а результат на почту присылать.
А то пользователь тупо сидит и смотрит как прогрессбар бегает, другими делами не занимается, но и не брошен программой - лафа, че.
Старый 03.04.2013, 18:10   #5  
Predatore is offline
Predatore
Участник
 
163 / 17 (1) ++
Регистрация: 29.09.2010
Цитата:
Сообщение от InTacto Посмотреть сообщение
Какова роль пользователя в процессе обмена? Может в Nas засунуть запуск отчета, а результат на почту присылать.
А то пользователь тупо сидит и смотрит как прогрессбар бегает, другими делами не занимается, но и не брошен программой - лафа, че. />
Роль пользователя - запустить и в конце получить сформированный файлик.
Старый 03.04.2013, 19:08   #6  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Мне кажется концепция NAS вполне подходит под эту задачу. Не нужно ни куда смотреть, чувствовать себя обделенным вниманием, жать на всякие кнопки опасные.
 


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

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

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