|
![]() |
#1 |
Administrator
|
В форме2, в методе init датасорса, на который накладывается ненужный dynalink - можно вставить код:
X++: Query query = new Query(); Query dsquery = _ds.query(); QueryBuildDataSource qbds; ; super(); dsquery = _ds.query(); qbds = dsquery.dataSourceName(_ds.name()); SysQuery::queryAddDynaCursorAsRangeAndValue(query, dsquery, qbds.id()); _ds.query(query);
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 28.10.2009 в 02:13. Причина: Исправил ошибку в коде |
|
|
За это сообщение автора поблагодарили: deo (1). |
![]() |
#2 |
Участник
|
У механизма dynalink есть еще одна неприятная особенность: даже если вы вытрете dynalink из запроса, даже если вы вытрете element.args().record() - все равно у вас будет дергаться linkActive() при каждом телодвижении на вызывающей форме, пусть и вхолостую. Единственный известный мне способ бороться с этим: запомнить переданную при вызове формы запись и вытереть ссылку на нее из element.args().record() ДО вызова init() формы.
|
|
|
За это сообщение автора поблагодарили: tricky (1). |
![]() |
#3 |
Administrator
|
Исправил ошибку в коде в своем сообщении.
Есть такой момент... Но если речь идет о том, чтобы не менялся набор записей в вызываемой форме при условии отсутствия перекрытого метода linkActive - то приведенного мною примера достаточно. Хотя "зарубку" в отношении этой особенности оставить себе надо
__________________
Возможно сделать все. Вопрос времени |
|
|
За это сообщение автора поблагодарили: DSPIC (2). |
![]() |
#4 |
Боец
|
Цитата:
Сообщение от sukhanchik
![]() В форме2, в методе init датасорса, на который накладывается ненужный dynalink - можно вставить код:
X++: Query query = new Query(); Query dsquery = _ds.query(); QueryBuildDataSource qbds; ; super(); dsquery = _ds.query(); qbds = dsquery.dataSourceName(_ds.name()); SysQuery::queryAddDynaCursorAsRangeAndValue(query, dsquery, qbds.id()); _ds.query(query); Если я правильно понял коммент: Цитата:
// This method will traverse dynalinks on QueryBuildDataSource represented by _queryDynaBdsNo
// and convert current dyna-record into ranges and values on that QueryBuildDataSource Спасибо, интересно. Я пользовался такой конструкцией: X++: this.query().dataSourceTable(tablenum(Address)).clearDynalinks(); |
|
![]() |
#5 |
Administrator
|
Цитата:
Сообщение от DSPIC
![]() Ой! А что за метод queryAddDynaCursorAsRangeAndValue?
Если я правильно понял коммент: , то он конвертит Dynalinks в статические Ranges+Values. Т.е. в данном случае, при открытии дочерней формы "Dynalink" один раз таки сработает, после чего дочерний курсор "отвяжется"? Спасибо, интересно. Я пользовался такой конструкцией: X++: this.query().dataSourceTable(tablenum(Address)).clearDynalinks(); Да, конечно, после убирания диналинка - курсор "отвяжется". Это заметно на ряде форм, которые открываются без диналинков - например, форма Работа с документами (DocuView). Там эффект диналинка делается "вручную" на init и executeQuery датасорса. Плюс также переход к исходному документу из бух проводок к примеру также для каждой строки нужно делать (т.е. формы отвязаны) Вообще - класс SysQuery достаточно интересный в плане наличия в нем методов. (DAX 4.0 SP2)
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 28.10.2009 в 11:46. |
|
![]() |
#6 |
DAX 3.0;4.0;5.0
|
Вроде как работает
![]() Всем огромное спасибо за помощь! |
|
Теги |
dynalink, полезное |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|