08.10.2009, 18:09 | #1 |
Участник
|
Фильтр на Datasource в LookUp-форме.
Добрый день.
такой вопрос: есть Lookup-форма состоящая из двух закладок. Одна закладка с фильтром, другая без оного. На Datasource, который предназначен для фильтроного запроса переписал две методы init() i executeQuery(). Выглядят они так: X++: public void init() { Query query = new Query(); QueryBuildRange qrForInventTable, qrForCatalogGroup; QueryBuildDataSource dsForInventTable, dsForCatalogGroup; str catalogGroup; ; super(); catalogGroup = "4"; dsForInventTable = query.addDataSource(tablenum(InventTable)); dsForCatalogGroup = dsForInventTable.addDataSource(tablenum(GroupRef)); dsForCatalogGroup.relations(true); dsForCatalogGroup.joinMode(JoinMode::InnerJoin); qrForCatalogGroup = dsForCatalogGroup.addRange(fieldnum(GroupRef, Catalog)); qrForCatalogGroup.value(SysQuery::value(catalogGroup)); this.query(query); X++: public void executeQuery() { FormStringControl callerControlloc; InventTable inventTable; ; callerControlloc = SysTableLookup::getCallerStringControl(element.args()); inventTable = inventTable::find(callerControlloc.text()); super(); itemCatalogGroup_DS.findRecord(inventTable); } видимо executeQuery() некоректно работает. Если у кого есть идея прошу поделиться. Спасибо. Последний раз редактировалось dynamax; 08.10.2009 в 18:59. |
|
08.10.2009, 19:24 | #2 |
Участник
|
Объясните на пальцах что вы хотите получить...
спозиционироваться на 2ом гриде?
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy Последний раз редактировалось ivas; 08.10.2009 в 19:27. |
|
08.10.2009, 21:15 | #3 |
Участник
|
|
|
09.10.2009, 08:33 | #4 |
Участник
|
|
|
09.10.2009, 11:00 | #5 |
Участник
|
Спасибо за ответ.
Но в этом посту решение: прописать что-то наподобее: element.selectMode(lookup1_ItemId); У меня две закладки, одна без фильтра работает нормально т.к. там есть такая строчка : element.selectMode(lookup1_ItemId); Другая закладка с фильтром, поэтому не могу выбрать ничего кроме первой строчки. Т.е когда Lookup закрывается вместо выбранной строчки, стоит первая. Код для DataSource второй закладки выше. Посмотрел документацию и сделал как рекомендуют, но результата нет хотя после super() прописал: itemCatalog_DS.findRecord(inventTable); вместо itemCatalogGroup_DS.findValue(fieldnum(InventTable, ItemId), callerControl.text()); |
|
09.10.2009, 11:12 | #6 |
Ищущий знания...
|
вот что мне не понравилось:
X++: itemCatalogGroup_DS.findRecord(inventTable); Как я понимаю это разные таблицы, может поэтому не происходит позиционирование на нужной таблице?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
09.10.2009, 11:24 | #7 |
Участник
|
У DataSource ItemCatalogGroup в свойстве Table прописана InventTable. Это не корректно?
|
|
09.10.2009, 11:34 | #8 |
Ищущий знания...
|
если в Вашей форме таблица ItemCatalogGroup - это таблица InventTable, то по идее это нормально...
Можно ради теста переименовать вашу таблицу на форме в InventTable, хотя не уверен что это поможет... Вообще странно, надо ещё подумать...
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
За это сообщение автора поблагодарили: dynamax (1). |
09.10.2009, 11:40 | #9 |
Участник
|
|
|
09.10.2009, 11:41 | #10 |
Ищущий знания...
|
Цитата:
а может вы выложите свою? что бы уже конкретно посмотреть?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
09.10.2009, 11:46 | #11 |
Ищущий знания...
|
начал создавать свою форму и возникло сразу куча вопросов
какая(какие) таблица у Вас отображается в форме в гриде? на двух вкладках отображаются одни и те же таблицы(таблица)?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
09.10.2009, 11:51 | #12 |
Участник
|
|
|
09.10.2009, 12:32 | #13 |
Ищущий знания...
|
у Вас видимо аксапта с версией выше 3.0, ваш экспортный файл ко мне не импортится
ладна, будем так пробовать... суть я понял
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
09.10.2009, 12:37 | #14 |
Участник
|
|
|
09.10.2009, 12:46 | #15 |
Ищущий знания...
|
что заметил, на первой вкладке Вашей формы под названием GridItemCatalogGroup свойство DataSource стоит ItemCatalogGroup, так же у грида на этой вкладке свойство DataSource равно ItemCatalogGroup, однако поля этого грида у вас относяться к другому DataSource, а именно ItemAll.
Это некорректно
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
09.10.2009, 12:47 | #16 |
Ищущий знания...
|
исправьте там у всех полей свойство DataSource на ItemCatalogGroup
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
09.10.2009, 12:59 | #17 |
Участник
|
Цитата:
Сообщение от lev
что заметил, на первой вкладке Вашей формы под названием GridItemCatalogGroup свойство DataSource стоит ItemCatalogGroup, так же у грида на этой вкладке свойство DataSource равно ItemCatalogGroup, однако поля этого грида у вас относяться к другому DataSource, а именно ItemAll.
Это некорректно Курсор однако все равно сползает на первую строчку. |
|
09.10.2009, 13:02 | #18 |
Ищущий знания...
|
а по отладчику не смотрели?
в частности интересен метод executeQuery строчка X++: itemCatalogGroup_DS.findRecord(inventTable); p.s. я имею ввиду вот тут X++: inventTable = inventTable::find(callerControlloc.text());
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем Последний раз редактировалось lev; 09.10.2009 в 13:04. |
|
09.10.2009, 13:26 | #19 |
Участник
|
Цитата:
но после этой строчки: itemCatalogGroup_DS.findRecord(inventTable); находит ItemCatalogGroup но, все время с первым RecId. видимо эта строка не работает правильно: X++: inventTable = inventTable::find(callerControlloc.text()); Последний раз редактировалось dynamax; 09.10.2009 в 13:31. |
|
09.10.2009, 13:33 | #20 |
Ищущий знания...
|
в том то и дело что не находится, поэтому встает на первую строку в списке.
у Вас проблема в том, что не известно какую запись искать. так же не понятно определение поля (ItemId) по которому ведется поиск номенклатуры... X++: callerControlloc = SysTableLookup::getCallerStringControl(element.args());
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|