Odin | База знаний 1С

Как выделить нескол...
 

Как выделить несколько карточек номенклатуры по отбору в 1С?


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

Подскажи как можно выделить по отбору несколько карточек номенклатур



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

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/ (пример запроса номенклатуры)

Если нужна помощь с конкретным кодом — обращайтесь!



   
ОтветитьЦитата