AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Функционал
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 06.02.2013, 15:02   #1  
DmitryK ist offline
DmitryK
Участник
 
179 / 76 (3) ++++
Registriert seit: 22.12.2011
Странное поведение при обновлении форм ах2009
Уважаемые господа, сталкивался ли кто с подобной проблемой? При нажатии F5 на формах заказы на покупку и заказы на продажу, курсор уходит на другую запись формы (произвольно). Кажется, что такое поведение началось после накатывания обновления до версии 5.0.1500.64.91 (заметили не сразу). Используется бразильский слой.

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

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

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

Geändert von DmitryK (07.02.2013 um 08:37 Uhr)
Alt 07.02.2013, 15:49   #4  
DmitryK ist offline
DmitryK
Участник
 
179 / 76 (3) ++++
Registriert seit: 22.12.2011
Я так понимаю, что ни кто с подобным поведением системы не сталкивался и не может предложить как с этим бороться?

C уважением, Дмитрий.
Alt 07.02.2013, 17:21   #5  
gl00mie ist offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3.684 / 5813 (201) ++++++++++
Registriert seit: 28.11.2005
Ort: Москва
Blog-Einträge: 3
Я так понимаю, по F5 выполняется DS.research(true), где true - параметр _retainPosition. Сохранение позиции осуществляется за счет запоминания индекса записи в выборке и последующего перехода к записи с тем же индексом, так что теоретически курсор может уходить на другую запись, если выборка изменилась между последним обновлением формы и нажатием F5. В любом случае, стоит, наверно, посмотреть, как ведут себя другие формы в аналогичных ситуациях, например, формы справочников, где набор записей достаточно стабилен в масштабах времени работы с формой.
This post has been rated by: DmitryK (1).
Alt 08.02.2013, 08:45   #6  
DmitryK ist offline
DmitryK
Участник
 
179 / 76 (3) ++++
Registriert seit: 22.12.2011
Подобные проблемы есть только с формами Заказов на покупку/продажу. В обоих гридах (шапка, строки). Убрали все свои модификации этих форм, эффект остался. Возможно проблема в бразильской модификации. В российской аксапте ни кто подобного не наблюдал?

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

Geändert von DmitryK (08.02.2013 um 08:57 Uhr)
Alt 08.02.2013, 09:00   #7  
gl00mie ist offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3.684 / 5813 (201) ++++++++++
Registriert seit: 28.11.2005
Ort: Москва
Blog-Einträge: 3
Значит, вероятнее всего, обновленное ядро ни при чем и дело в кастомизациях этих форм либо в изменениях, появившихся после обновления приложения. Может, с сортировкой записей в запросе там какие-то манипуляции производятся. Как минимум, при переходе к форме основной таблицы сортировка может приводить к проблемам с позиционирование курсора, может, и тут она вмешивается.
Alt 08.02.2013, 11:15   #8  
DmitryK ist offline
DmitryK
Участник
 
179 / 76 (3) ++++
Registriert seit: 22.12.2011
Первоначально эффект заметили при использовании кнопки на строках покупки <Настройка> - налог. Курсор переходит на другую запись.

С уважением, Дмитрий.
Alt 08.02.2013, 12:22   #9  
DmitryK ist offline
DmitryK
Участник
 
179 / 76 (3) ++++
Registriert seit: 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 уважением, Дмитрий.
Alt 08.02.2013, 12:36   #10  
sparco ist offline
sparco
Участник
Самостоятельные клиенты AX
 
44 / 21 (1) +++
Registriert seit: 10.10.2011
Ort: Москва
Так вызывается
X++:
purchLine_ds.executeQuery()
что и приводит к таким действиям. Возможно можно дописать:
запомнить позицию с помощью
X++:
pos =  purchLine_ds.getPosition();
после executeQuery написать
X++:
purchLine_ds.setPosition( pos );
Или же аналогичные действия с SetRecord как вариант
This post has been rated by: alex55 (1), DmitryK (1).
Alt 08.02.2013, 12:44   #11  
DmitryK ist offline
DmitryK
Участник
 
179 / 76 (3) ++++
Registriert seit: 22.12.2011
Спасибо, Дим.

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

С уважением, Дмитрий.
Alt 08.02.2013, 12:51   #12  
S.Kuskov ist offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3.449 / 1792 (66) ++++++++
Registriert seit: 28.04.2007
Ort: Калуга
Zitat:
Zitat von DmitryK Beitrag anzeigen
хотелось бы понять зачем это сделано?
Как это зачем. Метод updateFinalDisc изменяет строки закупки. Вот executeQuery их и "перерисовывает".

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

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

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

Geändert von DmitryK (08.02.2013 um 13:19 Uhr)
Alt 08.02.2013, 13:25   #14  
DmitryK ist offline
DmitryK
Участник
 
179 / 76 (3) ++++
Registriert seit: 22.12.2011
Перекрыли executeQuery() , поставили точку останова, по F5 он вызывается.

С уважением, Дмитрий.
Alt 08.02.2013, 13:31   #15  
S.Kuskov ist offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3.449 / 1792 (66) ++++++++
Registriert seit: 28.04.2007
Ort: Калуга
Zitat:
Zitat von DmitryK Beitrag anzeigen
Перекрыли executeQuery() , поставили точку останова, по F5 он вызывается.
Откуда? Что выше по стеку вызова?
Alt 08.02.2013, 13:36   #16  
DmitryK ist offline
DmitryK
Участник
 
179 / 76 (3) ++++
Registriert seit: 22.12.2011
Выше linkActive(). При вызове super() этого метода вызывается executeQuery()

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

Geändert von DmitryK (08.02.2013 um 13:41 Uhr)
Alt 08.02.2013, 13:40   #17  
S.Kuskov ist offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3.449 / 1792 (66) ++++++++
Registriert seit: 28.04.2007
Ort: Калуга
Вы на каком датасурсе перекрыли executeQuery() и на каком гриде жмёте F5?
Alt 08.02.2013, 13:43   #18  
DmitryK ist offline
DmitryK
Участник
 
179 / 76 (3) ++++
Registriert seit: 22.12.2011
PurchLine, нижний грид (строки)

С уважением, Дмитрий.
Alt 08.02.2013, 14:49   #19  
DmitryK ist offline
DmitryK
Участник
 
179 / 76 (3) ++++
Registriert seit: 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 уважением, Дмитрий.
Alt 08.02.2013, 15:07   #20  
S.Kuskov ist offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3.449 / 1792 (66) ++++++++
Registriert seit: 28.04.2007
Ort: Калуга
Фикс не срабатывает по-видимому, потому что загадочный вызов linkActive()->executeQuery() происходит не внутри super метода task(), а чуть позже.

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

Geändert von S.Kuskov (08.02.2013 um 15:30 Uhr)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Сжатие диалоговых форм в АХ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

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 19:38 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.