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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.02.2013, 15:02   #1  
DmitryK is offline
DmitryK
Участник
 
179 / 76 (3) ++++
Регистрация: 22.12.2011
Странное поведение при обновлении форм ах2009
Уважаемые господа, сталкивался ли кто с подобной проблемой? При нажатии F5 на формах заказы на покупку и заказы на продажу, курсор уходит на другую запись формы (произвольно). Кажется, что такое поведение началось после накатывания обновления до версии 5.0.1500.64.91 (заметили не сразу). Используется бразильский слой.

С уважением, Дмитрий.
Старый 06.02.2013, 18:04   #2  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Обновлялось что? Приложение, клиент, АОС? При сильном (уровня SP) несоответствии АОСа и клиента в 2009 было много разных глюков.
__________________
Ivanhoe as is..
Старый 07.02.2013, 08:03   #3  
DmitryK is offline
DmitryK
Участник
 
179 / 76 (3) ++++
Регистрация: 22.12.2011
Обновили все, полное соответсвие по версии клиента и сервера. Ни каких других глюков замечено не было.

В принципе, кто нибудь сталкивался с подобным поведение АХ?

С уважением, Дмитрий.

Последний раз редактировалось DmitryK; 07.02.2013 в 08:37.
Старый 07.02.2013, 15:49   #4  
DmitryK is offline
DmitryK
Участник
 
179 / 76 (3) ++++
Регистрация: 22.12.2011
Я так понимаю, что ни кто с подобным поведением системы не сталкивался и не может предложить как с этим бороться?

C уважением, Дмитрий.
Старый 07.02.2013, 17:21   #5  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Я так понимаю, по F5 выполняется DS.research(true), где true - параметр _retainPosition. Сохранение позиции осуществляется за счет запоминания индекса записи в выборке и последующего перехода к записи с тем же индексом, так что теоретически курсор может уходить на другую запись, если выборка изменилась между последним обновлением формы и нажатием F5. В любом случае, стоит, наверно, посмотреть, как ведут себя другие формы в аналогичных ситуациях, например, формы справочников, где набор записей достаточно стабилен в масштабах времени работы с формой.
За это сообщение автора поблагодарили: DmitryK (1).
Старый 08.02.2013, 08:45   #6  
DmitryK is offline
DmitryK
Участник
 
179 / 76 (3) ++++
Регистрация: 22.12.2011
Подобные проблемы есть только с формами Заказов на покупку/продажу. В обоих гридах (шапка, строки). Убрали все свои модификации этих форм, эффект остался. Возможно проблема в бразильской модификации. В российской аксапте ни кто подобного не наблюдал?

С уважением, Дмитрий.

Последний раз редактировалось DmitryK; 08.02.2013 в 08:57.
Старый 08.02.2013, 09:00   #7  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Значит, вероятнее всего, обновленное ядро ни при чем и дело в кастомизациях этих форм либо в изменениях, появившихся после обновления приложения. Может, с сортировкой записей в запросе там какие-то манипуляции производятся. Как минимум, при переходе к форме основной таблицы сортировка может приводить к проблемам с позиционирование курсора, может, и тут она вмешивается.
Старый 08.02.2013, 11:15   #8  
DmitryK is offline
DmitryK
Участник
 
179 / 76 (3) ++++
Регистрация: 22.12.2011
Первоначально эффект заметили при использовании кнопки на строках покупки <Настройка> - налог. Курсор переходит на другую запись.

С уважением, Дмитрий.
Старый 08.02.2013, 12:22   #9  
DmitryK is offline
DmitryK
Участник
 
179 / 76 (3) ++++
Регистрация: 22.12.2011
X++:
public void automaticTotalDiscount()
{
    PurchTable localPurchTable;
    ;

    if(VendParameters::find().AutomaticTotalDiscount)
    {
        for (localPurchTable = purchTable_ds.getFirst(true) ? purchTable_ds.getFirst(true) : purchTable_ds.cursor(); localPurchTable; localPurchTable = purchTable_ds.getNext())
        {
            localPurchTable.updateFinalDisc();
        }
        purchTable_ds.reread();
        purchTable_ds.refresh();
        purchLine_ds.executeQuery();
    }
}
Под отладчиком удалось выяснить, что при выполнении данного метода курсор меняется. Кто-нибудь может что-нибудь посоветывать?

C уважением, Дмитрий.
Старый 08.02.2013, 12:36   #10  
sparco is offline
sparco
Участник
Самостоятельные клиенты AX
 
44 / 21 (1) +++
Регистрация: 10.10.2011
Адрес: Москва
Так вызывается
X++:
purchLine_ds.executeQuery()
что и приводит к таким действиям. Возможно можно дописать:
запомнить позицию с помощью
X++:
pos =  purchLine_ds.getPosition();
после executeQuery написать
X++:
purchLine_ds.setPosition( pos );
Или же аналогичные действия с SetRecord как вариант
За это сообщение автора поблагодарили: alex55 (1), DmitryK (1).
Старый 08.02.2013, 12:44   #11  
DmitryK is offline
DmitryK
Участник
 
179 / 76 (3) ++++
Регистрация: 22.12.2011
Спасибо, Дим.

Просто закомментарив executeQuery() получается сохранение курсора. Вылечим следствие ..., хотелось бы понять зачем это сделано? К сожалению не могу посмотреть выполнение (состав) данного метода в российской реализации, если он такой же, то эффект должен проявляться, а судя по количеству откликов его нет.

С уважением, Дмитрий.
Старый 08.02.2013, 12:51   #12  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от DmitryK Посмотреть сообщение
хотелось бы понять зачем это сделано?
Как это зачем. Метод updateFinalDisc изменяет строки закупки. Вот executeQuery их и "перерисовывает".

Другой вопрос, почему метод automaticTotalDiscount вызывается при простом обновлении записи по F5?
За это сообщение автора поблагодарили: DmitryK (1).
Старый 08.02.2013, 13:16   #13  
DmitryK is offline
DmitryK
Участник
 
179 / 76 (3) ++++
Регистрация: 22.12.2011
Сергей, не совсем так. Эффект есть при нажатии F5 и кнопки на строках покупки <Настройка> - налог. Пользователь хочет посмотреть налоги по строке, а смотрит не по той, что была выбрана (в этом случае всегда по первой). Подумалось, что проблема может быть вызвана одной причиной. Начали с налогов.
X++:
void  clicked()
{;
    element.automaticTotalDiscount();

    PurchTotals::showTaxLine(purchTable,purchLine);
}
Изменение курсора происходит в automaticTotalDiscount(), по выше описанной причине.

С уважением, Дмитрий.

Последний раз редактировалось DmitryK; 08.02.2013 в 13:19.
Старый 08.02.2013, 13:25   #14  
DmitryK is offline
DmitryK
Участник
 
179 / 76 (3) ++++
Регистрация: 22.12.2011
Перекрыли executeQuery() , поставили точку останова, по F5 он вызывается.

С уважением, Дмитрий.
Старый 08.02.2013, 13:31   #15  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от DmitryK Посмотреть сообщение
Перекрыли executeQuery() , поставили точку останова, по F5 он вызывается.
Откуда? Что выше по стеку вызова?
Старый 08.02.2013, 13:36   #16  
DmitryK is offline
DmitryK
Участник
 
179 / 76 (3) ++++
Регистрация: 22.12.2011
Выше linkActive(). При вызове super() этого метода вызывается executeQuery()

С уважением, Дмитрий.

Последний раз редактировалось DmitryK; 08.02.2013 в 13:41.
Старый 08.02.2013, 13:40   #17  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Вы на каком датасурсе перекрыли executeQuery() и на каком гриде жмёте F5?
Старый 08.02.2013, 13:43   #18  
DmitryK is offline
DmitryK
Участник
 
179 / 76 (3) ++++
Регистрация: 22.12.2011
PurchLine, нижний грид (строки)

С уважением, Дмитрий.
Старый 08.02.2013, 14:49   #19  
DmitryK is offline
DmitryK
Участник
 
179 / 76 (3) ++++
Регистрация: 22.12.2011
В форме PurchTable обнаружен интересный метод, где отлавливаются F5. В нем, вроде, нет ни чего наказуемого, но не очень понятно предназначение. Код метода не помечен разработчиком, напрмер /GBR.
X++:
public int task(int _taskId)
{
    int ret;
    int rowposition;
    #task
    ;

    if(_taskId == #taskFormRefreshMenu ||_taskId == #taskFormRefresh_F5 )
    {
        rowposition = this.objectSet().getPosition();
        ret = super(_taskId);
        this.objectSet().setPosition(rowposition);
    }
    else
        ret = super(_taskId);

    return ret;
}
Подняли пустую российскую axapta там этого метода нет. Судя по коду, вроде как, попытка исправить ситуацию возникающую по F5. Кто-нибудь может это прокомментировать?

C уважением, Дмитрий.
Старый 08.02.2013, 15:07   #20  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Фикс не срабатывает по-видимому, потому что загадочный вызов linkActive()->executeQuery() происходит не внутри super метода task(), а чуть позже.

Можно попробовать действия для запоминания и восстановления позиции перенести непосредственно в метод executeQuery, а в методе task() только устанавливать флаг о необходимости таких действий. После выполнения этих действий в методе executeQuery не забыть снять флаг.

Последний раз редактировалось S.Kuskov; 08.02.2013 в 15:30.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Сжатие диалоговых форм в АХ2009 Geo DAX: Администрирование 0 14.07.2010 17:51
Странное поведение функции "Отображение аналитик" Lelya DAX: Функционал 2 28.05.2009 19:36
Странное поведение ttsAbort Logger DAX: Программирование 6 28.05.2009 15:11
Странное поведение формы Создание строк vc DAX: Функционал 10 22.03.2006 10:32
Странное поведение резервирования после создания спланированной закупки. NEO DAX: Функционал 7 01.07.2004 14:03

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

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

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