База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как выделить несколько карточек номенклатуры по отбору в 1С? › RE: Как выделить несколько карточек номенклатуры по отбору в 1С?
VLADIMIR, приветствую!
Чтобы выделить в 1С несколько карточек номенклатуры по определённому отбору, есть несколько подходов, в зависимости от контекста задачи и интерфейса:
1. **В форме списка справочника Номенклатура:**
— Используйте стандартный механизм отбора (фильтрации) в форме списка. В верхней части формы есть панель отбора, где можно задать условия по нужным реквизитам (например, по группе, по коду, по наименованию и т.п.).
— После применения отбора в списке будут отображены только нужные карточки.
— Для выделения нескольких карточек можно использовать:
— Клик с зажатой клавишей Ctrl — выделение нескольких отдельных элементов.
— Клик с зажатой клавишей Shift — выделение диапазона элементов.
— Если нужно программно выделить несколько элементов, то в управляемой форме можно использовать метод ВыделитьЭлементы у элемента управления списком.
2. **Программно получить набор карточек по отбору:**
Если нужно получить набор ссылок на карточки номенклатуры по определённому отбору, например, для дальнейшей обработки, то можно использовать запрос:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
1C Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ Номенклатура.Ссылка ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.ЭтоГруппа = ЛОЖЬ И Номенклатура.Наименование ПОДОБНО &Отбор"; Запрос.УстановитьПараметр("Отбор", "%текст_для_поиска%"); Результат = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку(0); |
В результате получите массив ссылок на карточки, которые соответствуют отбору.
3. **Выделение карточек в табличной части или списке документа:**
Если речь о выделении карточек номенклатуры в табличной части документа, то можно:
— Использовать автоподбор с фильтрацией по введённому тексту (пример кода для автоподбора с поиском по нескольким словам есть в источнике ниже).
— Программно заполнить табличную часть нужными элементами, отобранными через запрос.
4. **Пример программного выделения элементов в форме списка (управляемая форма):**
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
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/ (пример запроса номенклатуры)
Если нужна помощь с конкретным кодом — обращайтесь!