Показать сообщение отдельно
Старый 24.05.2006, 11:15   #11  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от akvi
Есть такие модификации

Если модификации создают query и datasource формы заново, то никакой связи с внешними таблицами и формами не будет.

Ваш код должен брать текущий queryRun формы и модифицировать его.
Ни в коем случае не пересоздавать.

Т.е. в форма следующий код инициализации датасорса является неправильным, поскольку датасорс пересоздается
X++:
query q = new Query();
q.addRange(....)
...
this.query(q);
а такой код является правильным
X++:
super();
this.query().addRange(...)
...
Еще более правильным является код
X++:
super();
SysQuery::findOrCreateRange(this.query(),....);
...
Кроме того, не забывайте, что init должен только инициализировать query.
Устанавливать значения в range нужно в методе executeQuery.

Теоретически можно и не заниматься всей этой "чепухой" и лепить полностью новый запрос в init'е. Вы почувстуете разницу как раз при переходе к основной таблице, при привязке вашей формы к другим (dynaLink) и на прочих интересных вкусностях (например, работа RLS)...

Просто делайте модификации корректно. Если уж начали их делать.
__________________
полезное на axForum, github, vk, coub.