При активной работе со списками документов в конфигурациях «1С:Предприятие» (например, в «Управление торговлей 10.3») пользователи часто включают множественный режим выделения строк. Возникает логичная задача: выделить сразу несколько строк и открыть каждую форму документа одним действием (например, по нажатию клавиши Enter или двойному клику мыши).
Разберем, почему стандартный интерфейс платформы не поддерживает такое поведение по умолчанию и как реализовать открытие группы документов программным путем.
Проанализируем поведение типовых форм списков при множественном выборе:
Рассмотрим, как реализовать открытие группы документов на обычных формах. Для этого переопределим обработчик события Выбор у табличного поля списка документов.
Разберем по шагам последовательность действий:
Выбор и создадим процедуру-обработчик.СтандартнаяОбработка = Ложь, чтобы отменить стандартное открытие только одного документа.ВыделенныеСтроки элемента формы и откроем форму для каждого объекта.Посмотрим на пример программного кода для обычной формы:
Процедура ДокументСписокВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
// Отменяем стандартное одиночное открытие
СтандартнаяОбработка = Ложь;
КоличествоВыделено = Элемент.ВыделенныеСтроки.Количество();
Если КоличествоВыделено = 0 Тогда
Возврат;
КонецЕсли;
// Проверяем ограничение на количество открываемых окон
Если КоличествоВыделено > 15 Тогда
Предупреждение("Выделено слишком много документов (" + Строка(КоличествоВыделено) + "). Выберите не более 15 объектов.");
Возврат;
КонецЕсли;
// Обходим коллекцию выделенных строк и открываем формы
Для Каждого СтрокаДокумента Из Элемент.ВыделенныеСтроки Цикл
ФормаДокумента = СтрокаДокумента.Ссылка.ПолучитьФорму();
ФормаДокумента.Открыть();
КонецЦикла;
КонецПроцедуры
Рассмотрим аналогичную задачу на управляемых формах. В управляемом интерфейсе свойство ВыделенныеСтроки таблицы формы содержит массив идентификаторов или ссылок выделенных элементов.
Посмотрим на пример обработчика выбора для управляемой формы:
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Выделенные = Элементы.Список.ВыделенныеСтроки;
Если Выделенные.Количество() > 15 Тогда
ПоказатьПредупреждение(, "Выбрано более 15 документов. Открытие отменено в целях оптимизации.");
Возврат;
КонецЕсли;
Для Каждого ТекущаяСсылка Из Выделенные Цикл
ПараметрыОткрытия = Новый Структура("Ключ", ТекущаяСсылка);
ОткрытьФорму("Документ.ЗаказПокупателя.ФормаОбъекта", ПараметрыОткрытия);
КонецЦикла;
КонецПроцедуры
Разберем альтернативные подходы, если редактирование кода события выбора нежелательно: