![]() |
#1 |
Участник
|
Позиционирование курсора на конкретной записи в Data Source на форме
ответ содержащийся в базе знаний жутко тормозит
![]() (в таблице ~100 000 записей) однако "перезод к основной таблице" работает практически мгновенно и устанавливает курсор на нужную позицию |
|
![]() |
#2 |
Moderator
|
Насколько я знаю, findRecord() позиционирует запись по RecId. Попробуйте включить индекс по RecId в свойствах таблицы.
__________________
Андрей. |
|
![]() |
#3 |
Участник
|
Насчет индекса поддерживаю. Переход к основной таблице правда использует другой механизм. Для его активизации в Args необходимо заполнить два параметра:
PHP код:
|
|
![]() |
#4 |
Участник
|
Цитата:
Изначально опубликовано Dron AKA andy
Насколько я знаю, findRecord() позиционирует запись по RecId. Попробуйте включить индекс по RecId в свойствах таблицы. PHP код:
где я облажался? |
|
![]() |
#5 |
Участник
|
Имелось ввиду физически создать индекс по RecId. В свойствах таблицы InventTable установить для св-ва CreateRecIdIndex значение Yes. Ничего сортировать не надо.
|
|
![]() |
#6 |
Участник
|
Цитата:
Изначально опубликовано dn
Имелось ввиду физически создать индекс по RecId. В свойствах таблицы InventTable установить для св-ва CreateRecIdIndex значение Yes. Ничего сортировать не надо. св-во CreateRecIdIndex итак Yes код: PHP код:
![]() а в таблице ~80 000 (InventTable) записей это занимает ~2 минуты (однако "пеход к основной таблице" происходит мгновенно (по полю ItemId)) вообще необходим такой функционал: "В справочнике номенклатуры Необходимо реализовать возможность такого снятия фильтра по номенклатуре (результат поиска, к примеру), при котором текущая номенклатура, на которой стоит указатель, оставалась текущей и активной после снятия фильтра" |
|
![]() |
#7 |
Участник
|
ну, типа, хелп
HELP!!! |
|
![]() |
#8 |
Участник
|
Попробуй так:
public void removeFilter() { InventTable cursor; ; record.RecId = inventTable.RecId; element.args().lookupField(fieldnum(InventTable,ItemId)); element.args().lookupValue(inventTable.itemId); super(); this.research(); this.findRecord(cursor); } |
|
![]() |
#9 |
Участник
|
не спасло
![]() |
|
![]() |
#10 |
Модератор
|
Если сделаете поиск по findrecord() в AOD, найдете кучу примеров его использования. Но присваиваний RecId Вы там не увидите
вот пример - короче некуда \Forms\BMRunSimple\runStatusChanged() PHP код:
|
|
![]() |
#11 |
Moderator
|
Вот работающий пример, наподобие "перехода к основной таблице" :
PHP код:
__________________
Андрей. |
|
![]() |
#12 |
Участник
|
Цитата:
Изначально опубликовано Vadik
Если сделаете поиск по findrecord() в AOD, найдете кучу примеров его использования. Но присваиваний RecId Вы там не увидите вот пример - короче некуда \Forms\BMRunSimple\runStatusChanged() PHP код:
проблема в findRecord (runTable_ds.findRecord(oldRunTable) ![]() который пробегает все позиции до искомой ![]() |
|
![]() |
#13 |
Administrator
|
Есть два варианта.
Первый: PHP код:
Плюс подхода в том, что видны записи, уже имеющиеся в displayCache, а к ним добавляется только нужная запись. Минус - если просмотреть dataSource до конца, в displayCache появится две одинаковых записи, и, соответственно, в Grid тоже будет две одинаковых записи, что вводит в заблуждение. Второй вариант: PHP код:
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
![]() |
#14 |
Administrator
|
Третий вариант (почти такой же, как предложил Dron AKA andy):
PHP код:
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
![]() |
#15 |
NavAx
|
Третий вариант не работает.
Можно вот так: PHP код:
__________________
С уважением, Игорь Ласийчук. |
|
![]() |
#16 |
Administrator
|
Цитата:
Изначально опубликовано Garic
Третий вариант не работает.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
![]() |
#17 |
Moderator
|
To Maxim:
А есть ли какие-то плюсы у твоего варианта с linkActive() по сравнению с моим?
__________________
Андрей. |
|
![]() |
#18 |
Administrator
|
Честно говоря, разницы не заметил
![]() Похоже, что из одного вызвается другое. Просто мне показалось, что для связанных форм linkActive обычно всегда вызвается ядром, а не executeQuery.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
![]() |
#19 |
NavAx
|
Цитата:
Изначально опубликовано Maxim Gorbunov
А Вы пробовали? Оказывается твой вариант не работает если у датасорса StartPosition = Last, что и было в моём случае. Оно находит запись и сразу же отматывает назад. Фича ![]()
__________________
С уважением, Игорь Ласийчук. |
|
![]() |
#20 |
Administrator
|
О! Dron AKA andy, вот ответ на твой вопрос. Твой вариант работает во обоих случаях.
То есть, используйте executeQuery()!
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
Теги |
ax3.0, курсор, позиционирование, программно |
|
|