14.04.2010, 15:19 | #1 |
Участник
|
Перекрытие linkActive в подчиненном датасорсе
День добрый, товарищи.
Решаю вопрос с позиционированием в подчиненном гриде при переходе к контексту оповещения. По ходу реализации возник вопрос. При перекрытии метода linkActive подчиненого датасорса использую следующий код: X++: public void linkActive() { if (!element.parmTaskFinded()) { super(); } else { element.parmTaskFinded(false); element.gotoTasks(); } } Куда копать? уже всю голову сломал. |
|
14.04.2010, 15:23 | #2 |
Участник
|
Цитата:
а именно там ядро и отрабатывает действия по связи. |
|
14.04.2010, 15:28 | #3 |
Участник
|
а когда/где вы вызываете element.parmTaskFinded(true)?
|
|
14.04.2010, 15:28 | #4 |
Участник
|
Мне как раз и нежелательно его вызывать, т.к. подчиненный датасорс перечитается и курсор перепрыгнет на первую строку подчиненного грида. А у меня позиция уже выставлена в методе findRecord в подчиненного дс.
element.parmTaskFinded(true) выставляется в методе findRecord. |
|
14.04.2010, 15:32 | #5 |
Участник
|
|
|
14.04.2010, 15:34 | #6 |
Участник
|
|
|
14.04.2010, 15:36 | #7 |
Участник
|
Цитата:
у вас одна и та же подчиненная запись может быть подчинена двум разным основным записям? 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? О чем вы говорите? |
|
14.04.2010, 15:40 | #8 |
Участник
|
Я так понимаю, это продолжение темы Контекст оповещения Workflow
__________________
Ivanhoe as is.. |
|
14.04.2010, 15:44 | #9 |
Участник
|
Немного не так...
Я получаю оповещение от некого объекта, в данном случае это Task. Из формы оповещений я хочу перейти к источнику оповещения. Для этого я должен сначала выставить позицию в главном дс, затем в подчиненном. Это все на одной форме в двух гридах. |
|
14.04.2010, 15:49 | #10 |
Участник
|
|
|
14.04.2010, 16:06 | #11 |
Участник
|
Я как раз выставляю его в одном месте, в методе findRecord подчиненного дс, но после вызывается его же метод linkActive и сбрасывает выставленую позицию. Я и подумал, что можно запретить вызов, чтобы этого не происходило.
|
|
14.04.2010, 16:12 | #12 |
Участник
|
|
|
14.04.2010, 16:19 | #13 |
Участник
|
Потому что туда в качестве параметра приходит как раз ссылка на контекст оповещения
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); |
|
14.04.2010, 17:04 | #14 |
Участник
|
Цитата:
Цитата:
Сообщение от Ivanhoe
Я так понимаю, это продолжение темы Контекст оповещения Workflow
P.S.: Гипотеза чисто теоретическая, т.к. сам с оповещениями никогда не работал |
|
14.04.2010, 17:50 | #15 |
Участник
|
Интересно, но я не представляю как такое можно реализовать. Ведь само оповещение генерится инфраструктурой workflow. Я всего лишь запускаю некий документ в документооборот.
Есть еще вариант. Каким-то образом реализовать руками связывание двух источников после обхода метода super в linkActive. |
|