Не нашел примеров (возможно, плохо искал). В реальной конфигурации использовано для быстрого формирования Инвойса. Документы имеют реквизит, значение которого повторяется сериями, но сами документы разбросаны в списке, сортированном по дате, хаотично. В Инвойс надо включать все документы каждой отбираемой туда серии. Выбранная группа потом перетаскивается в журнал Инвойсов, где обработка перетаскивания создает новый документ и заполняет его данными из принятого списка документов. Это существенно экономит время пользователям по сравнению со стандартными приемами.
В предлагаемом примере элемент формы Список, конечно, имеет тип Таблица и связан с реквизитом формы Список типа ДС. Элементу формы Список назначен обработчик события Выбор. Обработчик события Выбор вызывается двойным щелчком (либо клавишей ВВОД) по ячейке и в нем отработка события либо идет стандартно (если выбор в строке делается вне поля Реквизит2), либо запускается процесс с такими шагами - запрос к базе для отбора документов с интересующим значением поля, обход результата с формированием массива ссылок, обход коллекции с добавлением ссылок в свойство ВыделенныеСтроки элемента формы.
&НаСервереБезКонтекста
Функция ПолучитьДокОдногоЗначенияРеквизит2(ЗначениеТекущееРеквизит2)
МассивДокОдногоЗначенияРеквизит2 = Новый Массив;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Документ1.Ссылка,
| Документ1.Реквизит2
|ИЗ
| Документ.Документ1 КАК Документ1
|ГДЕ
| Документ1.Реквизит2 = &ЗначениеТекущееРеквизит2
|
|СГРУППИРОВАТЬ ПО
| Документ1.Ссылка,
| Документ1.Реквизит2";
Запрос.УстановитьПараметр("ЗначениеТекущееРеквизит2", ЗначениеТекущееРеквизит2);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
МассивДокОдногоЗначенияРеквизит2.Добавить(ВыборкаДетальныеЗаписи.Ссылка);
КонецЦикла;
Возврат МассивДокОдногоЗначенияРеквизит2;
КонецФункции //
&НаКлиенте
Процедура ПометитьПоВыбранномуЗначениюРеквизит2 ()
ЗначениеТекущееРеквизит2 = ЭтаФорма.ТекущийЭлемент.ТекущиеДанные.Реквизит2;
МассивДокОдногоЗначенияРеквизит2 = ПолучитьДокОдногоЗначенияРеквизит2(ЗначениеТекущееРеквизит2);
Для каждого Эл Из МассивДокОдногоЗначенияРеквизит2 Цикл
Элементы.Список.ВыделенныеСтроки.Добавить(Эл);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Поле.Имя = "Реквизит2" Тогда
СтандартнаяОбработка = Ложь;
ПометитьПоВыбранномуЗначениюРеквизит2();
КонецЕсли;
КонецПроцедуры
Работает так. Находим в списке строку с нужным значением в поле. Двойной щелчок по ячейке. На экране имеем выделение всех интересующих док-ов. Переходим к ячйке с другим интересующим значением. Придерживая SHIFT, щелкаем дважды, появляются новые выделенные строки. И так далее
Очищается выделение стандартно - щелчком без SHIFT.
На платформе 1С 8.3.9.