|
13.04.2012, 12:48 | #1 |
Участник
|
Получить число выделенных записей из args.
Требуется для установки в Progressbar. Количество выделенных записей в форме, запущенной runbase классом.
Cмотрел _args.record().RowCount(), _args.usageCount(), _args.record().dataSource().usageCount();. Не то все. В msdn нашел свойство multiSelectionContext. Но это только для Ax2012. У меня Ax2009. Есть какой то способ получить это число, не пробегая циклом по всему _args.record().dataSource? Хотя бы для всех записей а не только выделенных. |
|
13.04.2012, 13:24 | #2 |
Участник
|
|
|
13.04.2012, 13:35 | #3 |
Участник
|
Цитата:
{ common = countQueryRun.get(countQuery.dataSourceNo(1).table()); counter += common.RecId; loops++; } Я думаю что с такой же скоростью получу число, сделав дополнительный цикл уже для выделенных. Не хочется удваивать время из-за прогрессбара. |
|
13.04.2012, 14:18 | #4 |
Участник
|
Там, если повнимательней посмотреть, то видно, что перед тем как запустить этот цикл сначала модифицируется запрос (правда не всегда).
X++: qbds.addSelectionField(fieldnum(Common,RecId),SelectionField::Count); |
|
|
За это сообщение автора поблагодарили: uskutus (1). |
15.04.2012, 00:37 | #5 |
Программатор
|
X++: static int countMarkedRecordsDS(FormDataSource _fDS) { Common common; int countRecords; ; for (common = _fDS.getFirst(true) ? _fDS.getFirst(true) : _fDS.cursor(); common; common = _fDS.getNext()) { countRecords++; } return countRecords; } упс, а вам это не нужно))) |
|
15.04.2012, 22:36 | #6 |
Участник
|
По-моему, изначально неправильная постановка задачи. Надо обязательно пробежать циклом по всему ds - причем сделать это один раз независимо от наличия градусника, запомнить все выделенные записи и затем обрабатывать их на сервере. Для этого есть готовый метод - FormLetter::getFormRecord(), он возвращает запакованный мап с выделенными на форме записями, который надо распаковать на сервере. Градусник можно инициализировать по числу элементов в этом мапе.
|
|
|
За это сообщение автора поблагодарили: Logger (1), gefr (1), uchenik (1), uskutus (1). |
16.04.2012, 11:08 | #7 |
Участник
|
Пасиб, поразбираюсь на досуге.
|
|
22.07.2014, 19:14 | #8 |
Участник
|
Цитата:
Сообщение от gl00mie
По-моему, изначально неправильная постановка задачи. Надо обязательно пробежать циклом по всему ds - причем сделать это один раз независимо от наличия градусника, запомнить все выделенные записи и затем обрабатывать их на сервере. Для этого есть готовый метод - FormLetter::getFormRecord(), он возвращает запакованный мап с выделенными на форме записями, который надо распаковать на сервере. Градусник можно инициализировать по числу элементов в этом мапе.
Иногда надо заглядывать внутрь и читать ветку (
__________________
Ax2009 |
|
23.07.2014, 05:32 | #9 |
Участник
|
Посмотри по ссылке
http://learnax.blogspot.ru/2010/01/x...-selected.html |
|