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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.07.2020, 21:23   #1  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Альтернативный индикатор прогресса, или просто - фигня какая-то
DAX2009.

Захотел порадовать пользователя - сделать на форме, с которой запускается класс-обработчик, "показометр" прогресса. Поскольку стандартный Аксин "прогресс" глюкав и любит виснуть, сделал следующее: на форме - строковое поле ProgressIndicator и метод типа

X++:
Description updateStrProgress(str _mode, int64 _current)
{
    Description     ret;
    ;

    ret = strfmt('%1 : строка %2', _mode, _current);

    ProgressIndicator.text(ret);
    ProgressIndicator.modified();

    return ret;
}
В вызываемом классе, соответственно:

X++:
   if (caller && formHasMethod(caller, identifierstr(updateStrProgress)))
            {
                line++;

                if (line mod 200 == 0)
                {
                    caller.updateStrProgress('Обновление данных', line);
                }
            }
Класс работает (на сервере, заливает себе данные в PriceDiscTable), метод формы вызывается, но... в поле-"индикаторе" пусто... до тех пор, пока работает класс.

По окончании его работы - отображается последнее сообщение.

Вопросы: что это за чудо, можно ли его побороть и если можно, то как?
__________________
Best Regards,
Roman
Старый 29.07.2020, 23:32   #2  
ta_and is offline
ta_and
Участник
 
226 / 122 (5) +++++
Регистрация: 26.02.2002
Адрес: СПб
Я не знаю точного ответа, но могу предположить, что класс вызванный с формы и сама форма работают в одном потоке. Поэтому обновление формы происходит только после того, как отработал класс.
Могу предположить, что нужную новую реализацию прогресс-бара можно реализовать только создав новую форму.. Где-то вроде бы видел, что каждая форма Ах работает в своем потоке... но утверждать не берусь.
Старый 30.07.2020, 07:31   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от RVS Посмотреть сообщение
Вопросы: что это за чудо, можно ли его побороть и если можно, то как?
можно. лучше использовать стандартный, добавив туда infolog.yield()

или добавьте infolog.yield() в свой метод
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: RVS (5).
Старый 30.07.2020, 10:26   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Посмотрите ещё стандартную форму \Forms\tutorial_Progress
Там есть пример встроенной в форму полоски
Старый 30.07.2020, 17:05   #5  
mikki_messer is offline
mikki_messer
Участник
 
91 / 20 (1) +++
Регистрация: 20.04.2010
Адрес: Ростов-на-Дону
Посмотрите, случайно, не оно?
(Не)перерисовка окна клиента AX 2009 при длительных операциях - вариант решения
За это сообщение автора поблагодарили: RVS (5).
Старый 31.07.2020, 20:47   #6  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Посмотрите ещё стандартную форму \Forms\tutorial_Progress
Там есть пример встроенной в форму полоски
Коллега, речь не о "встроенной в форму полоске", речь о мерзкой привычке этой "полоски" виснусь всякий раз, как пользователь хоть мышкой шевельнет, и желании хоть чем-то работающим эту "полоску" заменить... а форму эту я знаю ))
__________________
Best Regards,
Roman
Старый 31.07.2020, 20:59   #7  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Цитата:
Спасибо. Там целая ветка обсуждения с массой вариантов решения. Оказывается, не только мне не нравится виснущий прогрессбар )))

Лучший же совет - от mazzy, за что ему отдельное большое спасибо )
__________________
Best Regards,
Roman

Последний раз редактировалось RVS; 31.07.2020 в 21:10.
Старый 02.08.2020, 10:34   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от RVS Посмотреть сообщение
Лучший же совет - от mazzy, за что ему отдельное большое спасибо )
welcome!
добавил информацию о побочном эффекте - пользователь может сменить компанию.
__________________
полезное на axForum, github, vk, coub.

Последний раз редактировалось mazzy; 02.08.2020 в 10:36.
Старый 03.08.2020, 08:34   #9  
TravellerInTime is offline
TravellerInTime
Участник
Аватар для TravellerInTime
 
130 / 36 (2) +++
Регистрация: 14.07.2003
Адрес: Россия, Тула
Я отказался от infolog.yield() именно из-за того, что пользователь получает доступ к интерфейсу аксапты пока работает код. Стали возникать глюки не только со сменой компании, сейчас уже не вспомню что еще - давно это было.
За это сообщение автора поблагодарили: Logger (3).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Можно ли программно определить, какая форма активная? Dima_Dima DAX: Программирование 17 19.09.2014 08:55
И какая логика ведения РСБУ и НУ в Аксапте?! Nick DAX: Функционал 47 11.12.2008 00:19
Альтернативный адрес поставщика Swan_imported DAX: Функционал 1 11.12.2006 10:47
Филиалы и альтернативный адрес... NetBus DAX: Функционал 5 21.06.2006 09:40
Есть ли какая=то возможность руссифицировать Аксапту ненашенскую? Сергей Аксенов DAX: Администрирование 7 03.03.2004 10:51

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

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

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