|  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. | 
|  |