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