|
![]() |
#1 |
Участник
|
Рискну высказать еще одно предположение: не было ли на форме "Номенклатурные единицы" программных модификаций, накладывающий фильтры? Номенклатура, к который Вы переходите, может не отвечать условиям программного range - вследствие этого курсор переходит на совершенно другую запись.
|
|
![]() |
#2 |
Участник
|
А вы переходите к основной таблице по коду номенклатуры или по ее названию?
|
|
![]() |
#3 |
Участник
|
Цитата:
Сообщение от denny
...не было ли на форме "Номенклатурные единицы" программных модификаций, накладывающий фильтры? Номенклатура, к который Вы переходите, может не отвечать условиям программного range - вследствие этого курсор переходит на совершенно другую запись.
Цитата:
Сообщение от AraraT®
А вы переходите к основной таблице по коду номенклатуры или по ее названию?
|
|
![]() |
#4 |
Участник
|
Цитата:
Сообщение от 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(),....);
... Устанавливать значения в range нужно в методе executeQuery. Теоретически можно и не заниматься всей этой "чепухой" и лепить полностью новый запрос в init'е. Вы почувстуете разницу как раз при переходе к основной таблице, при привязке вашей формы к другим (dynaLink) и на прочих интересных вкусностях (например, работа RLS)... Просто делайте модификации корректно. Если уж начали их делать. |
|
![]() |
#5 |
Участник
|
Цитата:
Сообщение от mazzy
Просто делайте модификации корректно. Если уж начали их делать.
![]() |
|
![]() |
#6 |
Участник
|
Цитата:
Сообщение от akvi
Перехожу, конечно же, по коду
Если ваш код содержит специальные символы .,?*"\ или пробел, то такой код нужно экранировать при передаче в range. Используйте SysQuery::Value() чтобы гарантировано экранировать спец.символы. Посмотрите этот метод, чтобы разобраться что и как экранируется. |
|