|
Подбор элементов в фильтра отчета не по одной, а сразу несколько | ☑ | ||
---|---|---|---|---|
0
pnamik
01.10.14
✎
10:02
|
Конфигурация самописная на платформе 1С8.0.18.2. В отчете по продажам есть фильтр: по товарам из списка, по товарам из группы. Из списка или из группы товары выбирается по одному. А нужно сразу несколько выбирать. Из фильтра когда переходишь на номенклатуру, чтобы выбирать товары, в номенклатуре с помощью Shift можно выбирать несколько товаров, но нажатие Enter переводит в фильтр только тот товар, на котором был курсор. Как осуществить возможность подбора товара в фильтре? Функция внизу:
Функция ПолучитьСписокТоваров() Если Фильтр = Перечисления.ВидыФильтровОтчетов.ПоТоварамИзСписка Тогда Список = Товары.ВыгрузитьКолонку("Номенклатура"); ИначеЕсли Фильтр = Перечисления.ВидыФильтровОтчетов.ПоТоварамИзГрупп Тогда Список = Новый СписокЗначений; Для Каждого Стр Из ГруппыТоваров Цикл Если Стр.Номенклатура = Справочники.Номенклатура.ПустаяСсылка() Тогда Продолжить; КонецЕсли; спТоваров = Справочники.Номенклатура.ВыбратьИерархически(Стр.Номенклатура); Пока спТоваров.Следующий() Цикл; Если спТоваров.ЭтоГруппа = Истина Тогда Продолжить; КонецЕсли; Список.Добавить(спТоваров.Ссылка); КонецЦикла; КонецЦикла; ИначеЕсли Фильтр = Перечисления.ВидыФильтровОтчетов.ПоТоварамПоставщиков Тогда Массив = Поставщики.ВыгрузитьКолонку("Контрагент"); ТекстЗапроса = "ВЫБРАТЬ | ДвиженияПоПартиям.Номенклатура |ИЗ | РегистрНакопления.ДвиженияПоПартиям КАК ДвиженияПоПартиям |ГДЕ | ДвиженияПоПартиям.Партия.Поставщик В(&СписокПост)"; Запрос = Новый Запрос(ТекстЗапроса); Запрос.УстановитьПараметр("СписокПост",Массив); Список = Запрос.Выполнить().Выгрузить(); ИначеЕсли Фильтр = Перечисления.ВидыФильтровОтчетов.ПоСодержаниюВНаименовании Тогда Список = Новый СписокЗначений; Для Каждого Стр Из ТаблицаПодобий Цикл Если СокрЛП(Стр.СтрокаПодобия) = "" Тогда Продолжить; КонецЕсли; ТекстЗапроса = "ВЫБРАТЬ | Номенклатура.Наименование, | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Наименование ПОДОБНО &Подобие"; Запрос = Новый Запрос(ТекстЗапроса); Запрос.УстановитьПараметр("Подобие","%"+СокрЛП(Стр.СтрокаПодобия)+"%"); Рез = Запрос.Выполнить().Выбрать(); Пока Рез.Следующий() Цикл Список.Добавить(Рез.Ссылка); КонецЦикла; КонецЦикла; ИначеЕсли Фильтр = Перечисления.ВидыФильтровОтчетов.ПоТоварамИзНакладных Тогда Список = Новый СписокЗначений; Для Каждого Стр Из Накладные Цикл Если Стр.Документ = Документы.ПриходнаяНакладная.ПустаяСсылка() Тогда Продолжить; КонецЕсли; Для Каждого Н Из Стр.Документ.Накладная Цикл Список.Добавить(Н.Номенклатура); КонецЦикла; КонецЦикла; ИначеЕсли Фильтр = Перечисления.ВидыФильтровОтчетов.ПоСвойствамНоменклатуры Тогда Список = Новый СписокЗначений; Для Каждого Стр Из ТаблицаСвойств Цикл Если СокрЛП(Стр.Свойство) = Справочники.СвойстваНоменклатуры.ПустаяСсылка() Тогда Продолжить; КонецЕсли; ТекстЗапроса = "ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Свойство = &Свойство"; Запрос = Новый Запрос(ТекстЗапроса); Запрос.УстановитьПараметр("Свойство",Стр.Свойство); Рез = Запрос.Выполнить().Выбрать(); Пока Рез.Следующий() Цикл Список.Добавить(Рез.Ссылка); КонецЦикла; КонецЦикла; КонецЕсли; Возврат Список КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |