Добавить в корзинуПозвонить
Найти в Дзене

Как сделать множественный выбор в 1с

В "1С:Предприятие 8" множественный выбор можно реализовать несколькими способами, в зависимости от того, где именно требуется множественный выбор и какие данные нужно выбирать. Этот способ позволяет пользователю выбирать несколько значений из списка непосредственно в поле ввода. Этот способ является наиболее простым и часто используемым. bsl // Код формы &НаКлиенте Процедура ПриОткрытии(Отказ) // Заполняем список выбора фиксированными значениями Элементы.ПолеВыбора1.СписокВыбора.Очистить(); Элементы.ПолеВыбора1.СписокВыбора.Добавить("Яблоко"); Элементы.ПолеВыбора1.СписокВыбора.Добавить("Банан"); Элементы.ПолеВыбора1.СписокВыбора.Добавить("Апельсин"); КонецПроцедуры // Код формы &НаКлиенте Процедура ПриОткрытии(Отказ) // Заполняем список выбора данными из запроса Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Наименование КАК Наименование |ИЗ | Справочник.Номенклатура КАК Номенклатура"; РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Элементы.
Оглавление

В "1С:Предприятие 8" множественный выбор можно реализовать несколькими способами, в зависимости от того, где именно требуется множественный выбор и какие данные нужно выбирать.

Реализация множественного выбора в 1С

1. Множественный выбор в поле ввода

Этот способ позволяет пользователю выбирать несколько значений из списка непосредственно в поле ввода.

1.1. Использование элемента управления "Поле выбора" с установленным свойством "Множественный выбор"

Этот способ является наиболее простым и часто используемым.

Шаги:

  1. Добавьте на форму элемент управления "Поле выбора".Откройте форму в режиме редактирования.
    Перетащите элемент "Поле выбора" из палитры элементов на форму.
  2. В свойствах элемента "Поле выбора" установите свойство "Множественный выбор" в значение "Истина".Найдите свойство "Множественный выбор" в окне свойств элемента.
    Установите значение свойства в "Истина".
  3. Укажите источник данных для поля выбора.В свойстве "Список выбора" (или аналогичном) укажите список значений, которые будут отображаться в поле выбора.

    Список значений можно указать в виде:
    Фиксированного списка: Перечислите значения непосредственно в свойстве "Список выбора".
    Запроса: Используйте запрос к базе данных для получения списка значений.
    Функции: Используйте функцию для получения списка значений.
  4. Укажите тип значения поля выбора.В свойстве "Тип значения" укажите тип данных, которые будут храниться в поле выбора.
    Тип значения должен соответствовать типу данных в источнике данных.

Пример использования фиксированного списка:

bsl

// Код формы

&НаКлиенте

Процедура ПриОткрытии(Отказ)

// Заполняем список выбора фиксированными значениями

Элементы.ПолеВыбора1.СписокВыбора.Очистить();

Элементы.ПолеВыбора1.СписокВыбора.Добавить("Яблоко");

Элементы.ПолеВыбора1.СписокВыбора.Добавить("Банан");

Элементы.ПолеВыбора1.СписокВыбора.Добавить("Апельсин");

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

Пример использования запроса:

// Код формы

&НаКлиенте

Процедура ПриОткрытии(Отказ)

// Заполняем список выбора данными из запроса

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| Номенклатура.Наименование КАК Наименование

|ИЗ

| Справочник.Номенклатура КАК Номенклатура";

РезультатЗапроса = Запрос.Выполнить();

Выборка = РезультатЗапроса.Выбрать();

Элементы.ПолеВыбора1.СписокВыбора.Очистить();

Пока Выборка.Следующий() Цикл

Элементы.ПолеВыбора1.СписокВыбора.Добавить(Выборка.Наименование);

КонецЦикла;

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

Получение выбранных значений:

После того как пользователь выберет несколько значений в поле выбора, их можно получить следующим образом:

// Получаем выбранные значения

ВыбранныеЗначения = Элементы.ПолеВыбора1.Значение;

// ВыбранныеЗначения - это массив выбранных значений

// Можно перебрать элементы массива и выполнить с ними необходимые действия

Для Каждого ВыбранноеЗначение Из ВыбранныеЗначения Цикл

Сообщить("Выбрано: " + ВыбранноеЗначение);

КонецЦикла;

Преимущества использования элемента управления "Поле выбора" с установленным свойством "Множественный выбор":

  • Простота реализации: Легко настраивается и используется.
  • Удобство для пользователя: Пользователь может легко выбирать несколько значений из списка.

Недостатки использования элемента управления "Поле выбора" с установленным свойством "Множественный выбор":

  • Ограниченное количество отображаемых значений: Если список значений очень большой, то отображение всех значений в поле выбора может быть неудобным.
  • Невозможность поиска по списку: Пользователь не может искать значения в списке.

2. Множественный выбор в отдельной форме

Этот способ позволяет отображать список значений в отдельной форме, где пользователь может выбрать несколько значений.

2.1. Использование формы выбора с установленным свойством "Множественный выбор"

Этот способ позволяет открывать стандартную форму выбора с установленным свойством "Множественный выбор".

Шаги:

  1. Создайте форму выбора для нужного справочника или документа.Если форма выбора уже существует, пропустите этот шаг.
  2. В форме выбора установите свойство "Множественный выбор" в значение "Истина".Откройте форму выбора в режиме редактирования.
    Найдите свойство "Множественный выбор" в окне свойств формы.
    Установите значение свойства в "Истина".
  3. Откройте форму выбора из основной формы.Используйте метод ОткрытьФормуВыбора() для открытия формы выбора.
    Передайте в метод ОткрытьФормуВыбора() параметр РежимВыбора = РежимВыбораЗначения.МножественныйВыбор.

Пример:

// Код формы

&НаКлиенте

Процедура ВыбратьНоменклатуру(Команда)

// Открываем форму выбора номенклатуры в режиме множественного выбора

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

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

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

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

&НаСервере

Процедура ОбработкаВыбора(ВыбранныеЗначения, ДополнительныеПараметры)

// Обрабатываем выбранные значения

Если ТипЗнч(ВыбранныеЗначения) = Тип("Массив") Тогда

Для Каждого ВыбранноеЗначение Из ВыбранныеЗначения Цикл

Сообщить("Выбрано: " + ВыбранноеЗначение.Наименование);

КонецЦикла;

КонецЕсли;

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

2.2. Создание специализированной формы для множественного выбора

Этот способ позволяет создать форму с более сложным интерфейсом для множественного выбора.

Шаги:

  1. Создайте новую форму.Укажите тип формы "Обычная форма" или "Управляемая форма" в зависимости от вашей конфигурации.
  2. Добавьте на форму элемент управления "Табличное поле".Табличное поле будет использоваться для отображения списка значений.
  3. Укажите источник данных для табличного поля.В свойстве "Путь к данным" укажите массив значений, которые будут отображаться в табличном поле.
    Массив значений можно заполнить данными из запроса, фиксированного списка или функции.
  4. Добавьте колонку "Выбрать" в табличное поле.Тип колонки должен быть "Булево".
    Эта колонка будет использоваться для отметки выбранных значений.
  5. Добавьте на форму кнопку "Выбрать".Эта кнопка будет использоваться для получения выбранных значений.
  6. В коде кнопки "Выбрать" получите список выбранных значений.Переберите все строки табличного поля и добавьте в список выбранные значения, если в колонке "Выбрать" стоит отметка.
  7. Откройте форму из основной формы.Используйте метод ОткрытьФорму() для открытия формы.

Пример:

// Код формы множественного выбора

&НаКлиенте

Процедура ПриОткрытии(Отказ)

// Заполняем табличное поле данными из запроса

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| Номенклатура.Наименование КАК Наименование,

| ЛОЖЬ КАК Выбрать

|ИЗ

| Справочник.Номенклатура КАК Номенклатура";

РезультатЗапроса = Запрос.Выполнить();

Выборка = РезультатЗапроса.Выбрать();

Пока Выборка.Следующий() Цикл

НоваяСтрока = Объект.СписокНоменклатуры.Добавить();

НоваяСтрока.Наименование = Выборка.Наименование;

НоваяСтрока.Выбрать = Ложь;

КонецЦикла;

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

&НаКлиенте

Процедура Выбрать(Команда)

// Получаем список выбранных значений

ВыбранныеЗначения = Новый Массив;

Для Каждого СтрокаТабличногоПоля Из Объект.СписокНоменклатуры Цикл

Если СтрокаТабличногоПоля.Выбрать Тогда

ВыбранныеЗначения.Добавить(СтрокаТабличногоПоля.Наименование);

КонецЕсли;

КонецЦикла;

// Возвращаем выбранные значения в основную форму

ЭтаФорма.Закрыть(ВыбранныеЗначения);

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

// Код основной формы

&НаКлиенте

Процедура ВыбратьНоменклатуру(Команда)

// Открываем форму выбора номенклатуры

Результат = ОткрытьФорму("Форма.ФормаВыбораНоменклатуры").Результат;

// Обрабатываем выбранные значения

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

Для Каждого ВыбранноеЗначение Из Результат Цикл

Сообщить("Выбрано: " + ВыбранноеЗначение);

КонецЦикла;

КонецЕсли;

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

Преимущества использования отдельной формы для множественного выбора:

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

Недостатки использования отдельной формы для множественного выбора:

  • Более сложная реализация: Требуется больше кода и настроек.

3. Множественный выбор в табличной части документа

Этот способ позволяет пользователю выбирать несколько значений непосредственно в табличной части документа.

Шаги:

  1. Добавьте колонку "Выбрать" в табличную часть документа.Тип колонки должен быть "Булево".
    Эта колонка будет использоваться для отметки выбранных значений.
  2. Добавьте на форму кнопку "Выбрать".Эта кнопка будет использоваться для получения выбранных значений.
  3. В коде кнопки "Выбрать" получите список выбранных значений.Переберите все строки табличной части и добавьте в список выбранные значения, если в колонке "Выбрать" стоит отметка.

Пример:

// Код формы документа

&НаКлиенте

Процедура ВыбратьНоменклатуру(Команда)

// Получаем список выбранных значений

ВыбранныеЗначения = Новый Массив;

Для Каждого СтрокаТабличнойЧасти Из Объект.Товары Цикл

Если СтрокаТабличнойЧасти.Выбрать Тогда

ВыбранныеЗначения.Добавить(СтрокаТабличнойЧасти.Номенклатура);

КонецЕсли;

КонецЦикла;

// Обрабатываем выбранные значения

Для Каждого ВыбранноеЗначение Из ВыбранныеЗначения Цикл

Сообщить("Выбрано: " + ВыбранноеЗначение.Наименование);

КонецЦикла;

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

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

  • Удобство для пользователя: Пользователь может выбирать несколько значений непосредственно в табличной части документа.

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

  • Ограниченная функциональность: Невозможно реализовать сложный интерфейс для выбора значений.

🔑 Важные моменты

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

🎯 Рекомендации

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

Следуя этим инструкциям и рекомендациям, вы сможете правильно реализовать множественный выбор в "1С:Предприятие 8".