|
![]() |
#1 |
Участник
|
![]()
Итак, столкнулся с первой проблемой при первом опыте программирования на Х++:
Есть форма. На ней датасорс типа InventTable. Некоторые поля вытащены на грид bno_InventTableGrid. Вопрос1. Можно ли программно (по нажатию кнопочки, при отработке clicked()) перебрать этот грид и получить из него InventId (вытащен на грид)? Вопрос 2. Можно ли так же программно отловить то, что записи как-то отфильтрованы на форме?
__________________
----------------------------------------- Искренне Ваш, ДК. |
|
![]() |
#2 |
Administrator
|
Перебирать надо не грид, а FormDataSource, к которому грид привязан. Сделать это можно, например, с помощью методов getFirst, getNext и т. п. С выбранной в DataSource строкой автоматически ассоциируется курсор. В форме он доступен с именем, совпадающем с именем FormDataSource.
То, что записи отфильтрованы, понять можно, ИМХО, только анализируя свойство queryRun у FormDataSource (опять же, фильтруется не Grid, а FormDataSource).
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
![]() |
#3 |
Участник
|
Спасибо Нефедову и Горбунову за подсказку
InventTableDS.dataSource().first(); while (InventTableDS.dataSource().next()) { //что-то делаем }
__________________
----------------------------------------- Искренне Ваш, ДК. |
|
![]() |
#4 |
Участник
|
Осталось найти возможность отключить обновление формы при работе в цикле.
__________________
----------------------------------------- Искренне Ваш, ДК. |
|
![]() |
#5 |
Участник
|
Цитата:
Сообщение от Uncle Nick
...перебрать этот грид и получить из него InventId...
грид нужен сугубо для интерфейсных вещей. он контрол и ничего более. Говоря по 1Совски, грид - это не Таблица значений. ![]() Если тебе нужно перебрать значения - работай с таблицей, с запросом. Вытащи из датасорса запрос и выполни его на таблице. Или мы чего-то не поняли? |
|
![]() |
#6 |
Участник
|
Цитата:
Сообщение от Uncle Nick
InventTableDS.dataSource().first();
while (InventTableDS.dataSource().next()) см. best prectice. ключевое слово Traversing multi selected records in a data source http://technet.navision.com/usered/BPH/Dev...dDataSource.htm |
|
![]() |
#7 |
Administrator
|
Вай-вай-вай, все напутали
![]() 1. first/next используются для фактического перемещения курсора по DataSource. Разумеется, перемещения курсора отражаются на внешнем виде формы. 2. getFirst/getNext курсор не перемещают. Их же можно использовать для перебора выбранных записей (если их выбрано несколько). Для этого надо передавать в параметр mark для getFirst ненулевое значение.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
![]() |
#8 |
Участник
|
ой. точно. извините.
с getFirst/first действительно напутал. а перебирать все равно лучше запросом ![]() |
|
![]() |
#9 |
Участник
|
Да..... тяжело из себя 1С выдавливать....
__________________
----------------------------------------- Искренне Ваш, ДК. |
|
![]() |
#10 |
Участник
|
зачем выдавливать?
надо совмещать ![]() |
|