К статье
Практический материал

Разработка и Конфигурация · 11 мин

Как включить множественный выбор в 1С

Как включить множественный выбор в 1С: настройка форм списков, параметра МножественныйВыбор, кода на встроенном языке и типичные ошибки при выборе нескольких элементов.

Множественный выбор в 1С — это возможность отметить в форме списка сразу несколько элементов (номенклатуры, контрагентов, документов) и передать их в обработку, отчёт или другой объект. По умолчанию во многих формах выбора активен одиночный режим: клик по строке сразу закрывает форму и возвращает одно значение. Чтобы пользователь мог выбрать несколько строк, режим нужно включить явно — в конфигураторе, в коде или через параметры формы.

Способ включения зависит от того, где вы работаете: в типовой конфигурации без доработок, в расширении или в собственной форме. Ниже разобраны все основные сценарии — от простого параметра формы до программной обработки массива выбранных значений, а также ограничения и типичные ошибки, из-за которых множественный выбор «не срабатывает».

Где в 1С применяется множественный выбор

Чаще всего множественный выбор требуется в формах выбора справочников и документов: при подборе номенклатуры в заказ, при выборе нескольких контрагентов для рассылки, при групповой обработке документов. Также режим используется в динамических списках, обработках группового изменения реквизитов и при подборе значений в поля со списком значений.

Важно понимать: множественный выбор — это свойство конкретной формы, а не глобальная настройка системы. Включить его «везде сразу» нельзя — режим настраивается для каждой формы выбора или для каждого программного вызова отдельно.

Включение множественного выбора в конфигураторе

Если вы разрабатываете или дорабатываете собственную форму выбора, режим включается через свойства формы. Откройте конфигуратор, найдите нужный объект (справочник, документ), перейдите на закладку «Формы» и откройте форму выбора или форму списка.

В палитре свойств формы найдите свойство «РежимВыбора» и установите его в «Истина», а свойство «МножественныйВыбор» — также в «Истина». Для динамического списка на форме проверьте, что у элемента таблицы разрешён множественный выбор: у свойства «РежимВыделения» таблицы должно стоять значение «Множественный».

После сохранения обновите конфигурацию базы данных (F7) и проверьте результат в режиме предприятия: форма должна позволять отмечать несколько строк с зажатым Ctrl или Shift, а двойной клик не должен мгновенно закрывать форму до подтверждения выбора кнопкой.

Порядок действий в конфигураторе
  1. 1
    Откройте форму выбора объекта в конфигураторе
  2. 2
    Установите свойство формы «РежимВыбора» = Истина
  3. 3
    Установите свойство «МножественныйВыбор» = Истина
  4. 4
    У таблицы списка проверьте «РежимВыделения» = Множественный
  5. 5
    Обновите конфигурацию БД и проверьте в режиме предприятия

Включение множественного выбора программно

Когда форма открывается из кода — например, по кнопке «Подобрать» — режим задаётся через параметры при открытии. Стандартные формы выбора типовых объектов понимают параметр «МножественныйВыбор», переданный в структуре параметров.

Типовой фрагмент кода выглядит так: формируется структура параметров, в неё добавляется ключ «МножественныйВыбор» со значением Истина, затем вызывается ОткрытьФорму с указанием формы выбора и обработчика оповещения о закрытии.

ПараметрыФормы = Новый Структура;

ПараметрыФормы.Вставить("МножественныйВыбор", Истина);

ПараметрыФормы.Вставить("РежимВыбора", Истина);

Оповещение = Новый ОписаниеОповещения("ПослеВыбораНоменклатуры", ЭтотОбъект);

ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора",

ПараметрыФормы, ЭтотОбъект, , , , Оповещение);

Обработчик оповещения получает результат: при множественном выборе это массив ссылок, а не одиночное значение. Код обработки должен учитывать оба случая — если форму могут открыть и в одиночном режиме, проверяйте тип результата через ТипЗнч().

&НаКлиенте

Процедура ПослеВыбораНоменклатуры(Результат, ДопПараметры) Экспорт

Если Результат = Неопределено Тогда

Возврат; // пользователь отменил выбор

КонецЕсли;

Если ТипЗнч(Результат) = Тип("Массив") Тогда

Для Каждого Ссылка Из Результат Цикл

// добавление строки в табличную часть

КонецЦикла;

Иначе

// одиночный выбор — одна ссылка

КонецЕсли;

КонецПроцедуры

Множественный выбор в типовых конфигурациях без доработки

В типовых решениях (УТ, ERP, Бухгалтерия) многие формы подбора уже поддерживают множественный выбор «из коробки»: например, подбор номенклатуры в документы открывает специальную форму подбора, где количество и позиции добавляются списком. Там ничего включать не нужно — используйте штатную кнопку «Подбор» в табличной части документа.

Для групповых операций над элементами списка без изменения конфигурации подходит стандартная обработка «Групповое изменение реквизитов» (в разделе администрирования): в ней список объектов отбирается отбором, а не ручным выделением, что часто удобнее и безопаснее ручного отмечивания сотен строк.

Если же требуется именно ручной выбор нескольких строк в произвольной форме списка типовой конфигурации, а кнопки подбора нет — без доработки (расширения или изменения конфигурации) обойтись обычно нельзя. В этом случае корректный путь — расширение конфигурации, чтобы не терять поддержку обновлений.

Способы получить множественный выбор

Стандартный параметр формы

Подходит для типовых форм выбора: передать МножественныйВыбор=Истина при ОткрытьФорму. Ограничение — работает только если форма поддерживает параметр.

Доработка собственной формы

Полный контроль: свои параметры, возврат массива, флажки в строках. Требует изменения конфигурации или расширения.

Групповое изменение реквизитов

Без доработок, отбор вместо ручного выделения. Не подходит, когда строки нужно выбрать визуально в произвольном порядке.

Подбор в документы

Штатные формы подбора в типовых конфигурациях. Работает только там, где предусмотрен конфигурацией.

Обработка результата множественного выбора

Главное отличие множественного режима — тип возвращаемого значения. При одиночном выборе форма возвращает ссылку, при множественном — массив ссылок (или список значений, если форма так реализована). Если обработчик рассчитан на одиночное значение, при включении множественного режима вы получите ошибку или «молчаливую» потерю данных: обработается только часть выбранного или ничего.

Рекомендуемая структура обработки: проверить результат на Неопределено (отмена выбора), определить тип, при массиве — пройти циклом с добавлением каждой ссылки в табличную часть или список. При больших объёмах выбора (сотни позиций) добавление строк лучше выполнять с минимумом серверных вызовов — например, передать массив на сервер одним вызовом и заполнить табличную часть целиком.

Также продумайте защиту от дублей: перед добавлением проверяйте, нет ли уже такой ссылки в табличной части, иначе повторный подбор создаст задвоенные строки.

Типичные ошибки
01
Обработчик ждёт одиночную ссылку, а форма возвращает массив — данные теряются или возникает ошибка приведения типов
02
Параметр МножественныйВыбор передан, но у таблицы списка РежимВыделения = Одиночный — выделить несколько строк невозможно
03
Нет проверки на Неопределено — при отмене выбора код падает с ошибкой
04
Нет контроля дублей — повторный подбор задваивает строки табличной части
05
Форма изменена в основной конфигурации вместо расширения — доработка слетает при обновлении

Ограничения и риски

Множественный выбор в динамических списках с произвольным запросом или сложными отборами может работать с ограничениями: например, если основная таблица списка не задана или используется группировка, платформа может запретить выбор строк. Проверяйте поведение на реальных данных, а не только на тестовом справочнике из пяти элементов.

При работе с управляемыми формами в веб-клиенте выделение через Ctrl/Shift поддерживается, но визуально отличается от тонкого клиента — убедитесь, что пользователи понимают, как отметить строки. Альтернатива — добавить в таблицу колонку с флажком и кнопку «Выбрать отмеченные», это нагляднее для неопытных пользователей.

Отдельный риск — изменение типовых форм напрямую в конфигурации. Такая доработка усложняет обновление и может быть утрачена. Для типовых конфигураций на поддержке используйте расширения: в расширении можно заимствовать форму и добавить нужный режим выбора, не затрагивая основной код.

Проверка результата

После включения режима проверьте полный цикл: открытие формы, выделение нескольких строк, подтверждение выбора, отмену выбора, повторный подбор тех же позиций. Каждый сценарий должен отрабатывать без ошибок и без потери данных.

Полезно протестировать граничные случаи: выбор одной строки в множественном режиме (должен вернуться массив из одного элемента или одиночное значение — в зависимости от реализации формы), выбор всех строк списка, закрытие формы крестиком без выбора.

Контрольные точки

Как проверить результат

Выделение строк в форме
Норма

Ctrl и Shift выделяют несколько строк, форма не закрывается при клике

Тревожный признак

Клик по строке сразу закрывает форму — множественный режим не включился

Тип возвращаемого значения
Норма

Обработчик получает массив и корректно обходит его циклом

Тревожный признак

Ошибка приведения типа или обрабатывается только одна позиция

Отмена выбора
Норма

Закрытие формы без выбора ничего не меняет и не вызывает ошибок

Тревожный признак

При отмене возникает исключение или добавляется пустая строка

Повторный подбор
Норма

Дубли отсекаются или осознанно допускаются логикой

Тревожный признак

Каждый подбор задваивает строки табличной части

Часто задаваемые вопросы

Почему параметр МножественныйВыбор не срабатывает?

Чаще всего форма выбора просто не поддерживает этот параметр — он стандартный, но обрабатывается только в формах, где это предусмотрено кодом. Проверьте также свойство «РежимВыделения» у таблицы списка: если там «Одиночный», выделить несколько строк не получится независимо от параметров.

Что возвращает форма при множественном выборе?

Обычно массив ссылок на выбранные объекты. В некоторых самописных формах возвращается список значений. Всегда проверяйте тип результата через ТипЗнч() и не забывайте обработку Неопределено — признак отмены выбора пользователем.

Можно ли включить множественный выбор в обычных формах (8.2)?

Да. В обычных формах у элемента «ТабличноеПоле» есть свойство «РежимВыделения» — установите «Множественный», а результат получайте через ВыделенныеСтроки табличного поля после закрытия формы или по команде выбора.

Как выбрать несколько элементов без доработки конфигурации?

Используйте штатные механизмы: кнопку «Подбор» в табличных частях документов, обработку «Групповое изменение реквизитов» для массовых операций по отбору, либо выделение строк в списке с последующим действием «Изменить выделенные» (где доступно).

Чем опасна доработка типовой формы выбора напрямую?

Изменённая типовая форма усложняет обновление конфигурации: при обновлении доработка может быть затёрта или вызовет конфликт объединения. Рекомендуемый способ — расширение конфигурации с заимствованием формы и минимальными изменениями.

Итог

Что важно запомнить

Множественный выбор включается на уровне конкретной формы: свойствами «РежимВыбора» и «МножественныйВыбор» в конфигураторе или параметром при ОткрытьФорму. Результат приходит массивом — обработчик обязан это учитывать. Для типовых конфигураций предпочтительны штатные подборы или расширения вместо прямой доработки форм.