Приветствую Вас, дорогие читатели.
В платформе «1с предприятие 8.2» появился такой замечательный объект как «динамический список«. Данный объект я часто использую в подборах, если не нужно делать сложные расчеты, а просто показать данные и выбрать.
Бывают такие ситуации, что список большой, более 10 позиций, и пользователю необходимо выбрать все строки. Стандартного способа как это сделать я не нашел.
Для решения это задачи я использовал объект «WSCript.Shell«.
В процессе реализации у меня получилось 2 варианта.
Вариант №1
Определим кнопку «Выделить все строки» и в модуль обработчика добавим код:
wsh = Новый COMОбъект(«WSCript.Shell»);
ЭтаФорма.ТекущийЭлемент = Элементы.ДинамическийСписок;
wsh.sendkeys(«^{A}»);
С помощью данного кода выполняется нажатие клавиш «Ctrl + A«, т.е. «выделить все».
Вариант №2
Вариант №1 не всегда срабатывал. Тогда данный код я переписал следующим образом:
- Добавим реквизит формы «ПоследняяСтрокаСписка»
- Для списка укажем свойство «Начальное отображение списка» = В конце списка
- В процедуру «ПриОткрытии» добавим заполнение реквизита, определенного в пункте 1.
ПоследняяСтрокаСписка = Элементы.ДинамическийСписок.ВыделенныеСтроки[0];
- Определим кнопку «Выделить все строки» и в модуль обработчика добавим код:
wsh = Новый COMОбъект(«WSCript.Shell»);
ЭтаФорма.ТекущийЭлемент = Элементы.ДинамическийСписок;
wsh.sendkeys(«{END}»);
ТекДанные = Элементы.ДинамическийСписок.ТекущиеДанные;
Если ТекДанные <> Неопределено Тогда
wsh.sendkeys(«+{UP » + ПоследняяСтрокаСписка + «}»);
КонецЕсли;
С помощью данного кода выполняется нажатие клавиш «Shift + кнопка вверх«.
Хочу обратить внимание. Данное решение не будет работать на клиентах, которые запускаются на Линукс.
Популярность: 12%