База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как выделить несколько карточек номенклатуры по отбору в 1С? › RE: Как выделить несколько карточек номенклатуры по отбору в 1С?
VLADIMIR, приветствую!
Чтобы выделить в 1С несколько карточек номенклатуры по определённому отбору, есть несколько подходов, в зависимости от контекста задачи и интерфейса:
1. **В форме списка справочника Номенклатура:**
— Используйте стандартный механизм отбора (фильтрации) в форме списка. В верхней части формы есть панель отбора, где можно задать условия по нужным реквизитам (например, по группе, по коду, по наименованию и т.п.).
— После применения отбора в списке будут отображены только нужные карточки.
— Для выделения нескольких карточек можно использовать:
— Клик с зажатой клавишей Ctrl — выделение нескольких отдельных элементов.
— Клик с зажатой клавишей Shift — выделение диапазона элементов.
— Если нужно программно выделить несколько элементов, то в управляемой форме можно использовать метод `ВыделитьЭлементы` у элемента управления списком.
2. **Программно получить набор карточек по отбору:**
Если нужно получить набор ссылок на карточки номенклатуры по определённому отбору, например, для дальнейшей обработки, то можно использовать запрос:
1C
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
Номенклатура.Ссылка
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.ЭтоГруппа = ЛОЖЬ
И Номенклатура.Наименование ПОДОБНО &Отбор";
Запрос.УстановитьПараметр("Отбор", "%текст_для_поиска%");
Результат = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку(0);
В результате получите массив ссылок на карточки, которые соответствуют отбору.
3. **Выделение карточек в табличной части или списке документа:**
Если речь о выделении карточек номенклатуры в табличной части документа, то можно:
— Использовать автоподбор с фильтрацией по введённому тексту (пример кода для автоподбора с поиском по нескольким словам есть в источнике ниже).
— Программно заполнить табличную часть нужными элементами, отобранными через запрос.
4. **Пример программного выделения элементов в форме списка (управляемая форма):**
1C
Процедура ВыделитьНоменклатуруПоОтбору(Отбор)
ЭлементыДляВыделения = Новый Массив;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
Номенклатура.Ссылка
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.ЭтоГруппа = ЛОЖЬ
И Номенклатура.Наименование ПОДОБНО &Отбор";
Запрос.УстановитьПараметр("Отбор", "%" + Отбор + "%");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ЭлементыДляВыделения.Добавить(Выборка.Ссылка);
КонецЦикла;
ЭлементУправленияСписком.ВыделитьЭлементы(ЭлементыДляВыделения);
КонецПроцедуры
Здесь `ЭлементУправленияСписком` — это элемент формы списка, в котором отображается номенклатура.
—
Если нужно, могу помочь с конкретным примером под вашу задачу — уточните, где именно и как хотите выделять карточки (в форме, в табличной части, программно и т.п.).
Рекомендую посмотреть здесь:
— https://infostart.ru/public/22818/ (по работе с отбором и выделением в формах)
— https://infostart.ru/1c/articles/2184035/ (по поиску и выбору номенклатуры через запросы)
— https://kuharbogdan.com/programmiruem-v-1s/kak-zaprosom-vybrat-vsju-nomenklaturu-v-1s/ (пример запроса номенклатуры)
Если нужна помощь с конкретным кодом — обращайтесь!