По-моему, вы просто неправильно подходите к программированию в Аксапте, забывая, что это уже не прикладное, а ERP-программирование.
Но, раз надо, разбирайтесь.
По поводу вызова контекстного меню - его можно динамически формировать, и открывать только на выбранных строках грида, но опять же, привязка будет идти не по номеру строки грида, потому что такого понятия нет в принципе, а по ключу или по RecId текущей строки. Вывод своего контекстного меню реализован в системе на различных формах, посмотрите,к примеру, ГК\Запросы\Оборот по счету\Шахматная ведомость оборотов по счетам (правда там используется не грид, но я такое же делал в гриде когда-то, если память не изменяет)
По поводу подсчета количества отображаемых строк - можно пойти двумя путями:
1. Перебрать все записи в гриде, используя датасорс.
2. Использовать запрос текущий формы (лучше для этого использовать именно queryRun.query(), а не просто query() датасорса, так как последний не учитывает фильтров, которые наложил пользователь на отображение данных). Так вот, по query можно построить объект класса QueryRun и загнать его в статический метод класса SysQuery - SysQuery::countTotal() - он вернет количество строк, которые вернет переданный в него запроса
- правда, при количестве датасорсов в запросе это все равно будет полный проход по всем строкам с увеличением счетчика, то есть особо в производительности вы не выиграете по сравнению с первым пунктом. (В случае одного датасорса получаем запрос с использованием агрегатной функции count())
|