AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 14.04.2010, 15:19   #1  
AlexeyVS is offline
AlexeyVS
Участник
 
103 / 31 (2) +++
Join Date: 02.04.2010
Перекрытие linkActive в подчиненном датасорсе
День добрый, товарищи.
Решаю вопрос с позиционированием в подчиненном гриде при переходе к контексту оповещения.
По ходу реализации возник вопрос. При перекрытии метода linkActive подчиненого датасорса использую следующий код:
X++:
public void linkActive()
{
     if (!element.parmTaskFinded())
    {
        super();
    }
    else
    {
        element.parmTaskFinded(false);
        element.gotoTasks();
     }
}
Так вот если я попадаю в ветку else, то ломается связь между датасорсами в главном и подчиненном гриде. То есть при переходе по строкам главного грида, данные в подчиненном не меняются, метод linkActive не вызывается.
Куда копать? уже всю голову сломал.
Old 14.04.2010, 15:23   #2  
mazzy is offline
mazzy
Участник
mazzy's Avatar
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Join Date: 29.11.2001
Location: Москва
Blog Entries: 10
Quote:
Originally Posted by AlexeyVS View Post
Так вот если я попадаю в ветку else, то ломается связь между датасорсами в главном и подчиненном гриде.
еще бы, вы же в ветке else не вызываете метод super().
а именно там ядро и отрабатывает действия по связи.
__________________
полезное на axForum, github, vk, coub.
Old 14.04.2010, 15:28   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1792 (66) ++++++++
Join Date: 28.04.2007
Location: Калуга
а когда/где вы вызываете element.parmTaskFinded(true)?
Old 14.04.2010, 15:28   #4  
AlexeyVS is offline
AlexeyVS
Участник
 
103 / 31 (2) +++
Join Date: 02.04.2010
Мне как раз и нежелательно его вызывать, т.к. подчиненный датасорс перечитается и курсор перепрыгнет на первую строку подчиненного грида. А у меня позиция уже выставлена в методе findRecord в подчиненного дс.

element.parmTaskFinded(true) выставляется в методе findRecord.
Old 14.04.2010, 15:32   #5  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1792 (66) ++++++++
Join Date: 28.04.2007
Location: Калуга
Quote:
Originally Posted by AlexeyVS View Post
element.parmTaskFinded(true) выставляется в методе findRecord.
а element.gotoTasks() случайно не использует этот самый findRecord?
Old 14.04.2010, 15:34   #6  
AlexeyVS is offline
AlexeyVS
Участник
 
103 / 31 (2) +++
Join Date: 02.04.2010
Quote:
Originally Posted by S.Kuskov View Post
а element.gotoTasks() случайно не использует этот самый findRecord?
Нет этот метод просто ставит фокус на подчиненный грид.
Old 14.04.2010, 15:36   #7  
mazzy is offline
mazzy
Участник
mazzy's Avatar
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Join Date: 29.11.2001
Location: Москва
Blog Entries: 10
Quote:
Originally Posted by AlexeyVS View Post
Мне как раз и нежелательно его вызывать, т.к. подчиненный датасорс перечитается и курсор перепрыгнет на первую строку подчиненного грида. А у меня позиция уже выставлена в методе findRecord в подчиненного дс.
позиция чего?
у вас одна и та же подчиненная запись может быть подчинена двум разным основным записям?

form1
====
main1
main2
...

form2
====
sub1,main1
sub2,main1
sub3,main2
sub4,main2
sub5,main2
...

итак, вы:
1. открыли форму1, ядро установило курсор на main1
2. открыли форму2 из формы1, ядро связало из dynalink'ом. В форме2 показаны две записи sub1, sub2
3. вы передвигаете курсор в форме1 на main2. ядро вызывает метод activeLink в форме2, чтобы покзать 3 (три) совсем другие (!!!) записи sub3, sub4, sub5.

Какая позиция? Какой findRecord? О чем вы говорите?
__________________
полезное на axForum, github, vk, coub.
Old 14.04.2010, 15:40   #8  
Ivanhoe is offline
Ivanhoe
Участник
Ivanhoe's Avatar
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Join Date: 29.09.2005
Location: Санкт-Петербург
Я так понимаю, это продолжение темы Контекст оповещения Workflow
__________________
Ivanhoe as is..
Old 14.04.2010, 15:44   #9  
AlexeyVS is offline
AlexeyVS
Участник
 
103 / 31 (2) +++
Join Date: 02.04.2010
Немного не так...
Я получаю оповещение от некого объекта, в данном случае это Task. Из формы оповещений я хочу перейти к источнику оповещения. Для этого я должен сначала выставить позицию в главном дс, затем в подчиненном. Это все на одной форме в двух гридах.
Old 14.04.2010, 15:49   #10  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1792 (66) ++++++++
Join Date: 28.04.2007
Location: Калуга
Quote:
Originally Posted by AlexeyVS View Post
я должен сначала выставить позицию в главном дс, затем в подчиненном.
Делайте это из одного и тогого же места, сразуже как только распознали, что форма открывается для просмотра конкретной задачи. Зачем вам перекрывать linkActive?
Old 14.04.2010, 16:06   #11  
AlexeyVS is offline
AlexeyVS
Участник
 
103 / 31 (2) +++
Join Date: 02.04.2010
Я как раз выставляю его в одном месте, в методе findRecord подчиненного дс, но после вызывается его же метод linkActive и сбрасывает выставленую позицию. Я и подумал, что можно запретить вызов, чтобы этого не происходило.
Old 14.04.2010, 16:12   #12  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1792 (66) ++++++++
Join Date: 28.04.2007
Location: Калуга
Quote:
Originally Posted by AlexeyVS View Post
Я как раз выставляю его в одном месте, в методе findRecord подчиненного дс
а почему вы решили использовать метод подчинённого дс?
Old 14.04.2010, 16:19   #13  
AlexeyVS is offline
AlexeyVS
Участник
 
103 / 31 (2) +++
Join Date: 02.04.2010
Потому что туда в качестве параметра приходит как раз ссылка на контекст оповещения
public boolean findRecord(Common _record)
вот как раз _record это и есть моя задача, на которую мне надо встать.
Потом делаю так:
X++:
 select firstonly taskTable where taskTable.RecId == _record.RecId;
    select firstonly docTable where docTable.DocumentId == taskTable.DocumentId;

    Document_ds.findRecord(docTable);
    Task_ds.research();

    ret = super(_record);
Old 14.04.2010, 17:04   #14  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1792 (66) ++++++++
Join Date: 28.04.2007
Location: Калуга
Quote:
Originally Posted by AlexeyVS View Post
Потому что туда в качестве параметра приходит как раз ссылка на контекст оповещения
Quote:
Originally Posted by Ivanhoe View Post
Я так понимаю, это продолжение темы Контекст оповещения Workflow
Ага. Значит вы зажаты контекстом класса EventContextInformation. У меня возник альтернативный вариант выхода из этого "порочного круга". Что если добавить на форму ещё один отдельный (не связанный ни с какимими другими) вспомогательный DataSource по подчинённой таблице. И натравить EventContextInformation именно на него. Тогда управление прийдёт именно в его findRecord, из которого можно будет свободно (не перекрывая linkActive) управлять связкой двух других "настоящих" дс.

P.S.: Гипотеза чисто теоретическая, т.к. сам с оповещениями никогда не работал
Old 14.04.2010, 17:50   #15  
AlexeyVS is offline
AlexeyVS
Участник
 
103 / 31 (2) +++
Join Date: 02.04.2010
Интересно, но я не представляю как такое можно реализовать. Ведь само оповещение генерится инфраструктурой workflow. Я всего лишь запускаю некий документ в документооборот.
Есть еще вариант. Каким-то образом реализовать руками связывание двух источников после обхода метода super в linkActive.
 

Similar Threads
Thread Thread Starter Forum Replies Last Post
Возможно ли изменить Fields в датасорсе на форме? andriy_s DAX: Функционал 2 26.03.2010 14:04
Запретить редактирование поля в датасорсе Eldar9x DAX: Программирование 3 10.07.2008 12:04
При повторном вызове linkActive проваливается в validateWrite(Строки общего журнала ГК) Lemming DAX: Программирование 6 25.10.2007 13:50
Слетают методы на полях в датасорсе... как бороться? soin DAX: Программирование 6 17.01.2005 15:53
Перекрытие метод new у формы Хилари DAX: Программирование 8 27.04.2004 13:48

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 15:40.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.