Разработка и Конфигурация · 11 мин
Как включить множественный выбор в 1С
Как включить множественный выбор в 1С: настройка форм списков, параметра МножественныйВыбор, кода на встроенном языке и типичные ошибки при выборе нескольких элементов.
Множественный выбор в 1С — это возможность отметить в форме списка сразу несколько элементов (номенклатуры, контрагентов, документов) и передать их в обработку, отчёт или другой объект. По умолчанию во многих формах выбора активен одиночный режим: клик по строке сразу закрывает форму и возвращает одно значение. Чтобы пользователь мог выбрать несколько строк, режим нужно включить явно — в конфигураторе, в коде или через параметры формы.
Способ включения зависит от того, где вы работаете: в типовой конфигурации без доработок, в расширении или в собственной форме. Ниже разобраны все основные сценарии — от простого параметра формы до программной обработки массива выбранных значений, а также ограничения и типичные ошибки, из-за которых множественный выбор «не срабатывает».
Где в 1С применяется множественный выбор
Чаще всего множественный выбор требуется в формах выбора справочников и документов: при подборе номенклатуры в заказ, при выборе нескольких контрагентов для рассылки, при групповой обработке документов. Также режим используется в динамических списках, обработках группового изменения реквизитов и при подборе значений в поля со списком значений.
Важно понимать: множественный выбор — это свойство конкретной формы, а не глобальная настройка системы. Включить его «везде сразу» нельзя — режим настраивается для каждой формы выбора или для каждого программного вызова отдельно.
Включение множественного выбора в конфигураторе
Если вы разрабатываете или дорабатываете собственную форму выбора, режим включается через свойства формы. Откройте конфигуратор, найдите нужный объект (справочник, документ), перейдите на закладку «Формы» и откройте форму выбора или форму списка.
В палитре свойств формы найдите свойство «РежимВыбора» и установите его в «Истина», а свойство «МножественныйВыбор» — также в «Истина». Для динамического списка на форме проверьте, что у элемента таблицы разрешён множественный выбор: у свойства «РежимВыделения» таблицы должно стоять значение «Множественный».
После сохранения обновите конфигурацию базы данных (F7) и проверьте результат в режиме предприятия: форма должна позволять отмечать несколько строк с зажатым Ctrl или Shift, а двойной клик не должен мгновенно закрывать форму до подтверждения выбора кнопкой.
- 1Откройте форму выбора объекта в конфигураторе
- 2Установите свойство формы «РежимВыбора» = Истина
- 3Установите свойство «МножественныйВыбор» = Истина
- 4У таблицы списка проверьте «РежимВыделения» = Множественный
- 5Обновите конфигурацию БД и проверьте в режиме предприятия
Включение множественного выбора программно
Когда форма открывается из кода — например, по кнопке «Подобрать» — режим задаётся через параметры при открытии. Стандартные формы выбора типовых объектов понимают параметр «МножественныйВыбор», переданный в структуре параметров.
Типовой фрагмент кода выглядит так: формируется структура параметров, в неё добавляется ключ «МножественныйВыбор» со значением Истина, затем вызывается ОткрытьФорму с указанием формы выбора и обработчика оповещения о закрытии.
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("МножественныйВыбор", Истина);
ПараметрыФормы.Вставить("РежимВыбора", Истина);
Оповещение = Новый ОписаниеОповещения("ПослеВыбораНоменклатуры", ЭтотОбъект);
ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора",
ПараметрыФормы, ЭтотОбъект, , , , Оповещение);
Обработчик оповещения получает результат: при множественном выборе это массив ссылок, а не одиночное значение. Код обработки должен учитывать оба случая — если форму могут открыть и в одиночном режиме, проверяйте тип результата через ТипЗнч().
&НаКлиенте
Процедура ПослеВыбораНоменклатуры(Результат, ДопПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат; // пользователь отменил выбор
КонецЕсли;
Если ТипЗнч(Результат) = Тип("Массив") Тогда
Для Каждого Ссылка Из Результат Цикл
// добавление строки в табличную часть
КонецЦикла;
Иначе
// одиночный выбор — одна ссылка
КонецЕсли;
КонецПроцедуры
Множественный выбор в типовых конфигурациях без доработки
В типовых решениях (УТ, ERP, Бухгалтерия) многие формы подбора уже поддерживают множественный выбор «из коробки»: например, подбор номенклатуры в документы открывает специальную форму подбора, где количество и позиции добавляются списком. Там ничего включать не нужно — используйте штатную кнопку «Подбор» в табличной части документа.
Для групповых операций над элементами списка без изменения конфигурации подходит стандартная обработка «Групповое изменение реквизитов» (в разделе администрирования): в ней список объектов отбирается отбором, а не ручным выделением, что часто удобнее и безопаснее ручного отмечивания сотен строк.
Если же требуется именно ручной выбор нескольких строк в произвольной форме списка типовой конфигурации, а кнопки подбора нет — без доработки (расширения или изменения конфигурации) обойтись обычно нельзя. В этом случае корректный путь — расширение конфигурации, чтобы не терять поддержку обновлений.
Способы получить множественный выбор
Подходит для типовых форм выбора: передать МножественныйВыбор=Истина при ОткрытьФорму. Ограничение — работает только если форма поддерживает параметр.
Полный контроль: свои параметры, возврат массива, флажки в строках. Требует изменения конфигурации или расширения.
Без доработок, отбор вместо ручного выделения. Не подходит, когда строки нужно выбрать визуально в произвольном порядке.
Штатные формы подбора в типовых конфигурациях. Работает только там, где предусмотрен конфигурацией.
Обработка результата множественного выбора
Главное отличие множественного режима — тип возвращаемого значения. При одиночном выборе форма возвращает ссылку, при множественном — массив ссылок (или список значений, если форма так реализована). Если обработчик рассчитан на одиночное значение, при включении множественного режима вы получите ошибку или «молчаливую» потерю данных: обработается только часть выбранного или ничего.
Рекомендуемая структура обработки: проверить результат на Неопределено (отмена выбора), определить тип, при массиве — пройти циклом с добавлением каждой ссылки в табличную часть или список. При больших объёмах выбора (сотни позиций) добавление строк лучше выполнять с минимумом серверных вызовов — например, передать массив на сервер одним вызовом и заполнить табличную часть целиком.
Также продумайте защиту от дублей: перед добавлением проверяйте, нет ли уже такой ссылки в табличной части, иначе повторный подбор создаст задвоенные строки.
Ограничения и риски
Множественный выбор в динамических списках с произвольным запросом или сложными отборами может работать с ограничениями: например, если основная таблица списка не задана или используется группировка, платформа может запретить выбор строк. Проверяйте поведение на реальных данных, а не только на тестовом справочнике из пяти элементов.
При работе с управляемыми формами в веб-клиенте выделение через Ctrl/Shift поддерживается, но визуально отличается от тонкого клиента — убедитесь, что пользователи понимают, как отметить строки. Альтернатива — добавить в таблицу колонку с флажком и кнопку «Выбрать отмеченные», это нагляднее для неопытных пользователей.
Отдельный риск — изменение типовых форм напрямую в конфигурации. Такая доработка усложняет обновление и может быть утрачена. Для типовых конфигураций на поддержке используйте расширения: в расширении можно заимствовать форму и добавить нужный режим выбора, не затрагивая основной код.
Проверка результата
После включения режима проверьте полный цикл: открытие формы, выделение нескольких строк, подтверждение выбора, отмену выбора, повторный подбор тех же позиций. Каждый сценарий должен отрабатывать без ошибок и без потери данных.
Полезно протестировать граничные случаи: выбор одной строки в множественном режиме (должен вернуться массив из одного элемента или одиночное значение — в зависимости от реализации формы), выбор всех строк списка, закрытие формы крестиком без выбора.
Как проверить результат
Ctrl и Shift выделяют несколько строк, форма не закрывается при клике
Клик по строке сразу закрывает форму — множественный режим не включился
Обработчик получает массив и корректно обходит его циклом
Ошибка приведения типа или обрабатывается только одна позиция
Закрытие формы без выбора ничего не меняет и не вызывает ошибок
При отмене возникает исключение или добавляется пустая строка
Дубли отсекаются или осознанно допускаются логикой
Каждый подбор задваивает строки табличной части
Часто задаваемые вопросы
Почему параметр МножественныйВыбор не срабатывает?
Чаще всего форма выбора просто не поддерживает этот параметр — он стандартный, но обрабатывается только в формах, где это предусмотрено кодом. Проверьте также свойство «РежимВыделения» у таблицы списка: если там «Одиночный», выделить несколько строк не получится независимо от параметров.
Что возвращает форма при множественном выборе?
Обычно массив ссылок на выбранные объекты. В некоторых самописных формах возвращается список значений. Всегда проверяйте тип результата через ТипЗнч() и не забывайте обработку Неопределено — признак отмены выбора пользователем.
Можно ли включить множественный выбор в обычных формах (8.2)?
Да. В обычных формах у элемента «ТабличноеПоле» есть свойство «РежимВыделения» — установите «Множественный», а результат получайте через ВыделенныеСтроки табличного поля после закрытия формы или по команде выбора.
Как выбрать несколько элементов без доработки конфигурации?
Используйте штатные механизмы: кнопку «Подбор» в табличных частях документов, обработку «Групповое изменение реквизитов» для массовых операций по отбору, либо выделение строк в списке с последующим действием «Изменить выделенные» (где доступно).
Чем опасна доработка типовой формы выбора напрямую?
Изменённая типовая форма усложняет обновление конфигурации: при обновлении доработка может быть затёрта или вызовет конфликт объединения. Рекомендуемый способ — расширение конфигурации с заимствованием формы и минимальными изменениями.
Что важно запомнить
Множественный выбор включается на уровне конкретной формы: свойствами «РежимВыбора» и «МножественныйВыбор» в конфигураторе или параметром при ОткрытьФорму. Результат приходит массивом — обработчик обязан это учитывать. Для типовых конфигураций предпочтительны штатные подборы или расширения вместо прямой доработки форм.