В "1С:Предприятие 8" множественный выбор можно реализовать несколькими способами, в зависимости от того, где именно требуется множественный выбор и какие данные нужно выбирать.
Реализация множественного выбора в 1С
1. Множественный выбор в поле ввода
Этот способ позволяет пользователю выбирать несколько значений из списка непосредственно в поле ввода.
1.1. Использование элемента управления "Поле выбора" с установленным свойством "Множественный выбор"
Этот способ является наиболее простым и часто используемым.
Шаги:
- Добавьте на форму элемент управления "Поле выбора".Откройте форму в режиме редактирования.
Перетащите элемент "Поле выбора" из палитры элементов на форму. - В свойствах элемента "Поле выбора" установите свойство "Множественный выбор" в значение "Истина".Найдите свойство "Множественный выбор" в окне свойств элемента.
Установите значение свойства в "Истина". - Укажите источник данных для поля выбора.В свойстве "Список выбора" (или аналогичном) укажите список значений, которые будут отображаться в поле выбора.
Список значений можно указать в виде:Фиксированного списка: Перечислите значения непосредственно в свойстве "Список выбора".
Запроса: Используйте запрос к базе данных для получения списка значений.
Функции: Используйте функцию для получения списка значений. - Укажите тип значения поля выбора.В свойстве "Тип значения" укажите тип данных, которые будут храниться в поле выбора.
Тип значения должен соответствовать типу данных в источнике данных.
Пример использования фиксированного списка:
bsl
// Код формы
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// Заполняем список выбора фиксированными значениями
Элементы.ПолеВыбора1.СписокВыбора.Очистить();
Элементы.ПолеВыбора1.СписокВыбора.Добавить("Яблоко");
Элементы.ПолеВыбора1.СписокВыбора.Добавить("Банан");
Элементы.ПолеВыбора1.СписокВыбора.Добавить("Апельсин");
КонецПроцедуры
Пример использования запроса:
// Код формы
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// Заполняем список выбора данными из запроса
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Наименование КАК Наименование
|ИЗ
| Справочник.Номенклатура КАК Номенклатура";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Элементы.ПолеВыбора1.СписокВыбора.Очистить();
Пока Выборка.Следующий() Цикл
Элементы.ПолеВыбора1.СписокВыбора.Добавить(Выборка.Наименование);
КонецЦикла;
КонецПроцедуры
Получение выбранных значений:
После того как пользователь выберет несколько значений в поле выбора, их можно получить следующим образом:
// Получаем выбранные значения
ВыбранныеЗначения = Элементы.ПолеВыбора1.Значение;
// ВыбранныеЗначения - это массив выбранных значений
// Можно перебрать элементы массива и выполнить с ними необходимые действия
Для Каждого ВыбранноеЗначение Из ВыбранныеЗначения Цикл
Сообщить("Выбрано: " + ВыбранноеЗначение);
КонецЦикла;
Преимущества использования элемента управления "Поле выбора" с установленным свойством "Множественный выбор":
- Простота реализации: Легко настраивается и используется.
- Удобство для пользователя: Пользователь может легко выбирать несколько значений из списка.
Недостатки использования элемента управления "Поле выбора" с установленным свойством "Множественный выбор":
- Ограниченное количество отображаемых значений: Если список значений очень большой, то отображение всех значений в поле выбора может быть неудобным.
- Невозможность поиска по списку: Пользователь не может искать значения в списке.
2. Множественный выбор в отдельной форме
Этот способ позволяет отображать список значений в отдельной форме, где пользователь может выбрать несколько значений.
2.1. Использование формы выбора с установленным свойством "Множественный выбор"
Этот способ позволяет открывать стандартную форму выбора с установленным свойством "Множественный выбор".
Шаги:
- Создайте форму выбора для нужного справочника или документа.Если форма выбора уже существует, пропустите этот шаг.
- В форме выбора установите свойство "Множественный выбор" в значение "Истина".Откройте форму выбора в режиме редактирования.
Найдите свойство "Множественный выбор" в окне свойств формы.
Установите значение свойства в "Истина". - Откройте форму выбора из основной формы.Используйте метод ОткрытьФормуВыбора() для открытия формы выбора.
Передайте в метод ОткрытьФормуВыбора() параметр РежимВыбора = РежимВыбораЗначения.МножественныйВыбор.
Пример:
// Код формы
&НаКлиенте
Процедура ВыбратьНоменклатуру(Команда)
// Открываем форму выбора номенклатуры в режиме множественного выбора
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("РежимВыбора", РежимВыбораЗначения.МножественныйВыбор);
ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора", ПараметрыФормы, ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ОбработкаВыбора(ВыбранныеЗначения, ДополнительныеПараметры)
// Обрабатываем выбранные значения
Если ТипЗнч(ВыбранныеЗначения) = Тип("Массив") Тогда
Для Каждого ВыбранноеЗначение Из ВыбранныеЗначения Цикл
Сообщить("Выбрано: " + ВыбранноеЗначение.Наименование);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
2.2. Создание специализированной формы для множественного выбора
Этот способ позволяет создать форму с более сложным интерфейсом для множественного выбора.
Шаги:
- Создайте новую форму.Укажите тип формы "Обычная форма" или "Управляемая форма" в зависимости от вашей конфигурации.
- Добавьте на форму элемент управления "Табличное поле".Табличное поле будет использоваться для отображения списка значений.
- Укажите источник данных для табличного поля.В свойстве "Путь к данным" укажите массив значений, которые будут отображаться в табличном поле.
Массив значений можно заполнить данными из запроса, фиксированного списка или функции. - Добавьте колонку "Выбрать" в табличное поле.Тип колонки должен быть "Булево".
Эта колонка будет использоваться для отметки выбранных значений. - Добавьте на форму кнопку "Выбрать".Эта кнопка будет использоваться для получения выбранных значений.
- В коде кнопки "Выбрать" получите список выбранных значений.Переберите все строки табличного поля и добавьте в список выбранные значения, если в колонке "Выбрать" стоит отметка.
- Откройте форму из основной формы.Используйте метод ОткрытьФорму() для открытия формы.
Пример:
// Код формы множественного выбора
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// Заполняем табличное поле данными из запроса
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Наименование КАК Наименование,
| ЛОЖЬ КАК Выбрать
|ИЗ
| Справочник.Номенклатура КАК Номенклатура";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = Объект.СписокНоменклатуры.Добавить();
НоваяСтрока.Наименование = Выборка.Наименование;
НоваяСтрока.Выбрать = Ложь;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура Выбрать(Команда)
// Получаем список выбранных значений
ВыбранныеЗначения = Новый Массив;
Для Каждого СтрокаТабличногоПоля Из Объект.СписокНоменклатуры Цикл
Если СтрокаТабличногоПоля.Выбрать Тогда
ВыбранныеЗначения.Добавить(СтрокаТабличногоПоля.Наименование);
КонецЕсли;
КонецЦикла;
// Возвращаем выбранные значения в основную форму
ЭтаФорма.Закрыть(ВыбранныеЗначения);
КонецПроцедуры
// Код основной формы
&НаКлиенте
Процедура ВыбратьНоменклатуру(Команда)
// Открываем форму выбора номенклатуры
Результат = ОткрытьФорму("Форма.ФормаВыбораНоменклатуры").Результат;
// Обрабатываем выбранные значения
Если ТипЗнч(Результат) = Тип("Массив") Тогда
Для Каждого ВыбранноеЗначение Из Результат Цикл
Сообщить("Выбрано: " + ВыбранноеЗначение);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Преимущества использования отдельной формы для множественного выбора:
- Более гибкий интерфейс: Можно создать форму с более сложным интерфейсом, например, с возможностью поиска, фильтрации и сортировки значений.
- Удобство для пользователя: Пользователь может видеть все доступные значения и выбирать несколько значений из списка.
Недостатки использования отдельной формы для множественного выбора:
- Более сложная реализация: Требуется больше кода и настроек.
3. Множественный выбор в табличной части документа
Этот способ позволяет пользователю выбирать несколько значений непосредственно в табличной части документа.
Шаги:
- Добавьте колонку "Выбрать" в табличную часть документа.Тип колонки должен быть "Булево".
Эта колонка будет использоваться для отметки выбранных значений. - Добавьте на форму кнопку "Выбрать".Эта кнопка будет использоваться для получения выбранных значений.
- В коде кнопки "Выбрать" получите список выбранных значений.Переберите все строки табличной части и добавьте в список выбранные значения, если в колонке "Выбрать" стоит отметка.
Пример:
// Код формы документа
&НаКлиенте
Процедура ВыбратьНоменклатуру(Команда)
// Получаем список выбранных значений
ВыбранныеЗначения = Новый Массив;
Для Каждого СтрокаТабличнойЧасти Из Объект.Товары Цикл
Если СтрокаТабличнойЧасти.Выбрать Тогда
ВыбранныеЗначения.Добавить(СтрокаТабличнойЧасти.Номенклатура);
КонецЕсли;
КонецЦикла;
// Обрабатываем выбранные значения
Для Каждого ВыбранноеЗначение Из ВыбранныеЗначения Цикл
Сообщить("Выбрано: " + ВыбранноеЗначение.Наименование);
КонецЦикла;
КонецПроцедуры
Преимущества использования множественного выбора в табличной части документа:
- Удобство для пользователя: Пользователь может выбирать несколько значений непосредственно в табличной части документа.
Недостатки использования множественного выбора в табличной части документа:
- Ограниченная функциональность: Невозможно реализовать сложный интерфейс для выбора значений.
🔑 Важные моменты
- Тип данных: Убедитесь, что тип данных выбранных значений соответствует типу данных, которые вы хотите использовать.
- Интерфейс: Выберите способ реализации множественного выбора, который наиболее удобен для пользователя.
- Производительность: Учитывайте производительность при выборе способа реализации множественного выбора, особенно если список значений очень большой.
🎯 Рекомендации
- Используйте элемент управления "Поле выбора" с установленным свойством "Множественный выбор" для простых случаев, когда список значений небольшой.
- Используйте отдельную форму для множественного выбора, когда требуется более сложный интерфейс или список значений очень большой.
- Используйте множественный выбор в табличной части документа, когда пользователю нужно выбирать несколько значений непосредственно в табличной части документа.
Следуя этим инструкциям и рекомендациям, вы сможете правильно реализовать множественный выбор в "1С:Предприятие 8".