Программное выделение всех строк в табличном поле (эмуляция Ctrl+A) |
Написал Валецкий Станислав
|
28.05.2010 |
Недавно столкнулся с проблемой программного выделения всех строк в списке справочника. Справочник был настроен для множественного выбора строк, и нажатие на форме комбинации клавиш Ctrl+A замечательно выделяло все строки. Но как можно было выделить все строки программно, было изначально некоторой загадкой. Но решение все же нашлось, и оказалось довольно простым.
У табличного поля есть коллекция выделенных строк, поэтому основная задача свелась к заполнению этой коллекции строками списка. Просто перебрать все строки списка справочника нельзя. На помощь пришел построитель, благодаря которому задача решилась быстро. Вот что получилось в итоге:
//Создаем построитель
Построитель = Новый ПостроительОтчета;
//через источник данных построителя обращаемся к данным списка справочника
//в таблицу данных попадают только отобранные данные, как мы их видим на экране
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(СправочникСписок);
Выборка = Построитель.Результат.Выбрать();
Пока Выборка.Следующий() Цикл
//перебираем результат построителя и заполняем выделенные строки
Элементыформы.СправочникСписок.ВыделенныеСтроки.Добавить(Выборка.Ссылка);
Конеццикла;
Аналогично можно выделить все строки и в табличном поле "ДокументСписок". |