|
УФ. Вывод картинки номенклатуры в отчете на СКД | ☑ | ||
---|---|---|---|---|
0
Max Street
18.02.16
✎
11:31
|
Привет.
Есть готовый отчет "ПрайсЛист", в котором для каждой строки рядом с номенклатурой выводится соответствующая картинка. Алгоритм вывода картинки находится в процедуре ПриКомпоновкеРезультата: Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) ИмяКолонкиИзображения = "Изображение"; ШиринаКолонкиИзображения = ВернутьЗначениеПараметраНастройкиСКД(КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы, "ШиринаКолонкиИзображения", 20); ПроцессорВывода.НачатьВывод(); Пока Истина Цикл ЭлементРезультата = ПроцессорКомпоновки.Следующий(); Если ЭлементРезультата = Неопределено Тогда Прервать; КонецЕсли; ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата); Если ЭлементРезультата.ЗначенияПараметров.Количество() = 0 Тогда Продолжить; КонецЕсли; Для Каждого ЭлементПараметра Из ЭлементРезультата.ЗначенияПараметров Цикл Если ТипЗнч(ЭлементПараметра.Значение) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда Поля = ДанныеРасшифровки.Элементы[ЭлементПараметра.Значение].ПолучитьПоля(); Для Каждого Поле Из Поля Цикл Если ТипЗнч(Поле.Значение) = Тип("СправочникСсылка.НоменклатураПрисоединенныеФайлы") Тогда Если Поле.Значение.Пустая() Тогда Продолжить; КонецЕсли; Для НомерКолонки = 1 По ДокументРезультат.ШиринаТаблицы Цикл Расшифровка = ДокументРезультат.Область(ДокументРезультат.ВысотаТаблицы, НомерКолонки, ДокументРезультат.ВысотаТаблицы, НомерКолонки).Расшифровка; Если Расшифровка = Неопределено Тогда Продолжить; КонецЕсли; Поля = ДанныеРасшифровки.Элементы.Получить(Расшифровка).ПолучитьПоля(); Если Поля.Найти(ИмяКолонкиИзображения) = Неопределено Тогда Продолжить; КонецЕсли; ОбластьИзображения = ДокументРезультат.Область(ДокументРезультат.ВысотаТаблицы, НомерКолонки); ВывестиИзображениеЭлементаНоменклатуры(ДокументРезультат, Поле.Значение, ОбластьИзображения, ШиринаКолонкиИзображения); КонецЦикла; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; КонецЦикла; ПроцессорВывода.ЗакончитьВывод(); КонецПроцедуры Процедура ВывестиИзображениеЭлементаНоменклатуры(ТД, ЭлементСправочника, Область, ШиринаКолонкиИзображения) Если ЭлементСправочника.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда СтуктураРег = РегистрыСведений.ПрисоединенныеФайлы.Получить(Новый Структура("ПрисоединенныйФайл", ЭлементСправочника)); ДанныеКартинки = СтуктураРег.ХранимыйФайл.Получить(); Иначе ДанныеКартинки = ?(ЗначениеЗаполнено(ЭлементСправочника.Том.ПолныйПутьWindows), ЭлементСправочника.Том.ПолныйПутьWindows, ЭлементСправочника.Том.ПолныйПутьLinux) + ЭлементСправочника.ПутьКФайлу; КонецЕсли; Рисунок = ВывестиИзображениеВОбластиТД(ДанныеКартинки, ТД, Область); Область.АвтоВысотаСтроки = Ложь; Область.ВысотаСтроки = ШиринаКолонкиИзображения * 1.31 / 0.3759; Область.Расшифровка = ЭлементСправочника; Рисунок.ЦветЛинии = Область.ЦветРамки; КонецПроцедуры Функция ВывестиИзображениеВОбластиТД(ДанныеКартинки, ТД, Область) Изображение = ТД.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка); Изображение.РазмерКартинки = РазмерКартинки.АвтоРазмер; Индекс = ТД.Рисунки.Индекс(Изображение); ТД.Рисунки[Индекс].Картинка = Новый Картинка(ДанныеКартинки, Истина); ТД.Рисунки[Индекс].Расположить(Область); Возврат ТД.Рисунки[Индекс]; КонецФункции Функция ВернутьЗначениеПараметраНастройкиСКД(КоллекцияЭлементовНастройки, ИмяНастройки, ЗначениеПоУмолчанию = Неопределено) Настройка = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(ИмяНастройки); Если Настройка = Неопределено Тогда Возврат ЗначениеПоУмолчанию; КонецЕсли; НастрокаПоИД = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(Настройка.ИдентификаторПользовательскойНастройки); Если НастрокаПоИД = Неопределено Тогда Возврат ЗначениеПоУмолчанию; Конецесли; Если Не ЗначениеЗаполнено(НастрокаПоИД.Значение) Тогда Если Не ЗначениеПоУмолчанию = Неопределено Тогда НастрокаПоИД.Значение = ЗначениеПоУмолчанию; КонецЕсли; КонецЕсли; Возврат ?(НастрокаПоИД.Использование, НастрокаПоИД.Значение, ЗначениеПоУмолчанию); КонецФункции Проблема в том, что строки, содержащие картинки, опускаются в самый низ отчета, т.е. выводятся последними строками отчета. Помогите, пожалуйста, это исправить |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |