|
СКД фильтр по наличию картинки | ☑ | ||
---|---|---|---|---|
0
Pchelinka
20.02.18
✎
15:31
|
Всем привет. Помогите други пж с созданием фильтра в отчете СКД.
Вывожу номенклатуру и картинку ее вытаскиваю из папки на диске по артикулу с порядковым номером. Если картинки к номенклатуре нет, вывожу пустую картинку.Все получилось, теперь меня попросили сделать фильтр отбор где нет фото номенклатуры. Я добавляю в Вычисляемы поля "НаличиеКартинки" и хочу заполнить ее булевным значением и не получается(( подскажите как передать значение в НаличиеКартинки Вот код, когда выводится картинка, тут же пытаюсь заполнить значение Наличие картинки: Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ДокументРезультат.Очистить(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПолеПоКоторомуНеобходимоПолучитьЗначение = "Ссылка"; ПроцессорВывода.НачатьВывод(); Пока истина Цикл ЭлементРезультата = ПроцессорКомпоновки.Следующий(); Если ЭлементРезультата = Неопределено Тогда прервать; КонецЕсли; ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата); Если ЭлементРезультата.ЗначенияПараметров.Количество() > 0 Тогда ЗначениеВыводимыхДанных = Неопределено; Для каждого ЗначениеПараметра из ЭлементРезультата.ЗначенияПараметров Цикл Если ТипЗнч(ЗначениеПараметра.Значение) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда ПоляРасшифровки = ДанныеРасшифровки.Элементы[ЗначениеПараметра.Значение].ПолучитьПоля(); Для Каждого ПолеРасшифровки из ПоляРасшифровки Цикл Если ПолеРасшифровки.Поле = ПолеПоКоторомуНеобходимоПолучитьЗначение Тогда ЗначениеВыводимыхДанных = ПолеРасшифровки.Значение; Прервать; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; Если ЗначениеЗаполнено(ЗначениеВыводимыхДанных) Тогда Рис = ДокументРезультат.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка); Рис.РазмерКартинки = РазмерКартинки.АвтоРазмерБезУчетаМасштаба; Индекс = ДокументРезультат.Рисунки.Индекс(Рис); Если ЗначениеВыводимыхДанных.ЭтоГруппа Тогда ДокументРезультат.Рисунки[Индекс].Картинка = БиблиотекаКартинок.СоздатьГруппу; Иначе НомерТекущегоИзображения = ?(ЗначениеВыводимыхДанных.СА_НомерИзображенияПоУмолчанию = 0, 1, ЗначениеВыводимыхДанных.СА_НомерИзображенияПоУмолчанию); ФильтрДляКартинки = ДокументРезультат.НайтиТекст("НаличиеКартинки"); ///// КаталогХранилища = Константы.СА_ПутьКВнешнемуХранилищуИзображений.Получить(); Номенклатура = ЗначениеВыводимыхДанных.Ссылка; НомерФайла = НомерТекущегоИзображения; //Определяем имя файла Артикул = Номенклатура.Артикул; ИмяФайла = РаботаСФайлами.УдалитьЗапрещенныеСимволыИмени(Артикул); //Получаем массив файлов для элемента номенклатуры КоличествоИзображений = ПолучитьКоличествоИзображенийНоменклатуры(Номенклатура); Если КоличествоИзображений = 0 Тогда //Если файлов с номерами не нашли, ищем без номера (старый вариант) НайденныеФайлы = НайтиФайлы(КаталогХранилища, ИмяФайла + ".*"); Если НайденныеФайлы.Количество() Тогда Картинка = Новый Картинка(НайденныеФайлы[0].ПолноеИмя); НаличиеКартинки =Истина; Иначе Картинка = Новый Картинка; НаличиеКартинки =Ложь; КонецЕсли; ИначеЕсли КоличествоИзображений = 1 Тогда //Если есть только один файл, выводим его НайденныеФайлы = НайтиФайлы(КаталогХранилища, ИмяФайла + ".*"); Картинка = Новый Картинка(НайденныеФайлы[0].ПолноеИмя); НаличиеКартинки =Истина; Иначе Если КоличествоИзображений < НомерФайла Тогда НомерФайла = КоличествоИзображений; КонецЕсли; //Если номерованых файлов несколько, выводим по номеру НайденныеФайлы = НайтиФайлы(КаталогХранилища, ИмяФайла + "_" + Строка(НомерФайла) + ".*"); Если НайденныеФайлы.Количество() Тогда Картинка = Новый Картинка(НайденныеФайлы[0].ПолноеИмя); НаличиеКартинки =Истина; Иначе Картинка = Новый Картинка; НаличиеКартинки =Ложь; //Такого быть не должно, но на всякий случай КонецЕсли; КонецЕсли; Сообщить("НаличиеКартинки для вывода в фильтр "+НаличиеКартинки); // Тут должно быть заполнение значением добавленного Вычисляемого поля-НаличиеКартинки: ФильтрДляКартинки=НаличиеКартинки; ОбластьФильтрДляКартинки=ДокументРезультат.НайтиТекст("%НаличиеКартинки%"); //ДокументРезультат.НаличиеКартинки.Расположить(ОбластьФильтрДляКартинки); ОбластьФильтрДляКартинки =ФильтрДляКартинки; ///// Если Картинка <> Неопределено Тогда ДокументРезультат.Рисунки[Индекс].Картинка = Картинка; КонецЕсли; КонецЕсли; ВысотаТабДок = ДокументРезультат.ВысотаТаблицы; ОбластьДляКартинки = ДокументРезультат.НайтиТекст("%Картинка%"); Если ОбластьДляКартинки <> Неопределено Тогда ДокументРезультат.Рисунки[Индекс].Расположить(ОбластьДляКартинки); ОбластьДляКартинки.Текст = "%КартинкаДобавлена%"; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; ПроцессорВывода.ЗакончитьВывод(); КонецПроцедуры |
|||
1
FIXXXL
20.02.18
✎
15:37
|
(0) ПроцессорВывода - это уже печать результата запроса СКД
тебе в запросе Схемы надо добавить поле наличия картинки и вывести его в отбор СКД дальше "оно само" по идее |
|||
2
Pchelinka
20.02.18
✎
15:44
|
а ну да...но в процессе вывода у меня определяется есть картинка или ее нет.. поэтому хотела сделать доп поле и туда передать данные а потом и фильтровать... а как лучше?
|
|||
3
FIXXXL
20.02.18
✎
15:53
|
(2) ну сделай в справочнике флаг "НаличиеКартинки" и заполняй при записи элемента
а потом его выводи в запросе |
|||
4
Pchelinka
20.02.18
✎
18:23
|
а вывести всеж таки пока значение в поле НаиличиеКартинки как можно?
НаличиеКартинки уже в этом месте имеет свое значение Да или Нет, мне нужно в отчету вывести это значение... вот тут у меня не то: ФильтрДляКартинки=НаличиеКартинки; ОбластьФильтрДляКартинки=ДокументРезультат.НайтиТекст("%НаличиеКартинки%"); //ДокументРезультат.НаличиеКартинки.Расположить(ОбластьФильтрДляКартинки); ОбластьФильтрДляКартинки =ФильтрДляКартинки; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |