Показать сообщение отдельно
Старый 21.06.2006, 00:17   #9  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
По-моему, вы просто неправильно подходите к программированию в Аксапте, забывая, что это уже не прикладное, а ERP-программирование.

Но, раз надо, разбирайтесь.
По поводу вызова контекстного меню - его можно динамически формировать, и открывать только на выбранных строках грида, но опять же, привязка будет идти не по номеру строки грида, потому что такого понятия нет в принципе, а по ключу или по RecId текущей строки. Вывод своего контекстного меню реализован в системе на различных формах, посмотрите,к примеру, ГК\Запросы\Оборот по счету\Шахматная ведомость оборотов по счетам (правда там используется не грид, но я такое же делал в гриде когда-то, если память не изменяет)

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