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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.11.2008, 13:56   #1  
coolibin is offline
coolibin
Участник
 
264 / 68 (3) ++++
Регистрация: 07.04.2005
Легкое поведение поля BlockImage в журналах
Ax 3.0

Сценарий:
  • Открываем форму любого журнала
  • Запускаем из нее по кнопке любое диалоговое окно (например, какую-нибудь печать)
  • Не закрывая диалоговое окно возвращаемся в грид на журнале
  • Нажимаем Esc
С этого момента в поле "Используется" имеем все время картинку с буквами "AX", независимо от наличия или отсутствия блокировки.

Кто-нибудь с этим справился?
За это сообщение автора поблагодарили: kashperuk (3), DocSerzh (1), vc (1).
Старый 27.11.2008, 14:44   #2  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Бывало, но по моей вине (В написанном мной функционале). Это слетает фильтр я думаю на форме журналов.

Последний раз редактировалось Sada; 27.11.2008 в 14:48.
Старый 27.11.2008, 14:53   #3  
coolibin is offline
coolibin
Участник
 
264 / 68 (3) ++++
Регистрация: 07.04.2005
Цитата:
Сообщение от Sada Посмотреть сообщение
Бывало, но по моей вине (В написанном мной функционале). Это слетает фильтр я думаю на форме журналов.
Что за фильтр? И при чем здесь фильтр?
Старый 27.11.2008, 15:10   #4  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Не, наверна не в фильтрах дело. А вообще баг прикольный
Старый 27.11.2008, 17:21   #5  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Хм. Спасибо, интересный баг. В АХ 2009 иконка - не АХ, а какая-то другая, но все же появляется.
Старый 27.11.2008, 17:43   #6  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Хм. Спасибо, интересный баг. В АХ 2009 иконка - не АХ, а какая-то другая, но все же появляется.
Не с id ли "0" картинка?
__________________
Zhirenkov Vitaly
Старый 27.11.2008, 19:00   #7  
petergunn is offline
petergunn
Участник
 
118 / 274 (10) ++++++
Регистрация: 30.08.2005
Адрес: Tyumen
display методы & formRun.wait()
Тестировал сценарий на DAX 4.0.

Похоже прослеживается общая закономерность воспроизведения bug'а в целом для display-методов при закрытиий формы по 'Esc' и условии что с текущей формы открыта (и не закрыта) другая форма в режиме ожидания закрытия посредством formRun.wait().

При этом слетают значения всех display-методов выведенных в активную форму.
Если display метод выводил не картинку то совсем не прикольный bug.
За это сообщение автора поблагодарили: AndyD (5).
Старый 27.11.2008, 19:27   #8  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
petergunn, а можно примеры, чтобы я не искал сам? Спасибо
Старый 28.11.2008, 07:55   #9  
petergunn is offline
petergunn
Участник
 
118 / 274 (10) ++++++
Регистрация: 30.08.2005
Адрес: Tyumen
Пример. DAX 4.0
Цитата:
Сообщение от kashperuk Посмотреть сообщение
petergunn, а можно примеры, чтобы я не искал сам? Спасибо
Набросал простенькую форму для демонстрации. Характерное поведение проявляется на display и edit методах связанных с источником данных формы (не связанный с источником данных edit метод itemTypeUnbound нормально пережил эксперимент):
Миниатюры
Нажмите на изображение для увеличения
Название: before.jpg
Просмотров: 491
Размер:	107.6 Кб
ID:	3998   Нажмите на изображение для увеличения
Название: after.jpg
Просмотров: 413
Размер:	92.5 Кб
ID:	3999  

Вложения
Тип файла: xpo Form_DisplayMethodBugDemo.xpo (13.6 Кб, 544 просмотров)

Последний раз редактировалось petergunn; 28.11.2008 в 08:10.
За это сообщение автора поблагодарили: kashperuk (5), vc (1).
Старый 28.11.2008, 10:34   #10  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
Воспроизвести можно на любой форме с датасорсами и дисплейными методами.
Достаточно вызвать форму фильтров и сделать, как написал petergunn

Происходит это, на мой взгляд, из-за того, что форма не отслеживает в каком контексте выполняются вызовы.
Т.е., при открытом из формы диалоговом окне обработка событий происходит внутри метода wait(). При нажатии на ESC на форме отрабатывает стандартная последовательность закрытия формы. При этом, во внутренние флаги записывается информация, что форма готова к закрытию. Но, так как управление возвращается в метод wait(), то закрытие окна с формой и уничтожения класса формы не происходит.
Внешне это проявляется в запрете вызова дисплейных методов для датасорса (и сбросе их из кэша) - в результате чего, данные просто не отоборажаются или отображаются неверно. Есть еще одно проявление - если закрыть диалоговое окно и внести изменение в какое-либо поле не сохраняя эти изменения, то по ESC форма закроется без запроса на сохранение изменений - метод CanClose() вообще не будет вызван.

Помимо изменений в ядре - что бы оно отслеживало эту ситуация, единственное, что мне приходит в голову для исправления - это перекрыть метод CanClose() в классе SysSetupFormRun и в нем отслеживать наличие в стеке вызовов метода Wait().
X++:
public boolean canClose()
{
    boolean     ret;
    container   c;
    int         i;
    ;

    ret = super();
    c = xSession::xppCallStack();
    i = 1;
    while (i <= conLen(c))
    {
        if (typeof(conpeek(c, i)) == Types::String)
        {
            if (match(@"\\FormRun\\wait>", conpeek(c, i)))
            {
                ret = false;
                break;
            }
        }
        i++;
    }

    return ret;
}
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: ZVV (1), DocSerzh (1), Logger (2), vc (1).
Теги
blockimage, lockimage, баг, журнал

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Denis Fedotenko: Новые поля в складских проводках Blog bot DAX: База знаний и проекты 10 24.05.2007 11:57
Лукап, содержащий поля нескольких таблиц matew DAX: Программирование 4 30.11.2006 16:02
Получение из поля Map кода поля реальной таблицы, к ней привязанной (Mappings) vey DAX: Функционал 5 16.03.2005 11:16
Получить значение поля таблицы по номеру (Id) поля Anais DAX: Программирование 2 15.04.2004 13:00
Недопустимая комбинация поля/поля ссылки Berty Wooster DAX: Программирование 2 29.05.2003 16:31

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

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

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