![]() |
|
Прайс-лист с картинками(зависает) | ☑ | ||
---|---|---|---|---|
0
onetone
11.10.17
✎
16:39
|
Прошу помощи.
Есть прайс-лист с картинками на СКД. код вывода картинок: ПриКомпоновкеРезультата // Заполняем рисунки для полей, в данных расшифровки которых находятся элементы справочника // "НоменклатураПрисоединенныеФайлы" КоличествоКолонокТаблицы = ДокументРезультат.ШиринаТаблицы; // Количество колонок в отчете КоличествоСтрокТаблицы = ДокументРезультат.ВысотаТаблицы; // Количество строк в отчете // Обходим все ячейки отчета Если СхемаКомпоновкиДанных.ВариантыНастроек.ПрайсЛист.Настройки <> Настройки Тогда Для Ст = 7 По КоличествоСтрокТаблицы Цикл ТекОбласть = ДокументРезультат.Область(Ст, 9); Если ТекОбласть.Расшифровка <> Неопределено Тогда ПоляРасшифровки = ДанныеРасшифровки.Элементы[ТекОбласть.Расшифровка].ПолучитьПоля(); Если ПоляРасшифровки.Количество() > 0 И ПоляРасшифровки[0].Поле = "ФайлСсылка" Тогда // Если тип значения поля расшифровки соответствует справочнику прикрепленных файлов, то // выводим связанную картинку Рисунок = ПолучитьИзображение(ПоляРасшифровки.Получить(0).Значение); Если Рисунок <> Неопределено Тогда Рис = ДокументРезультат.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка); Рис.РазмерКартинки = РазмерКартинки.Пропорционально; Рис.Картинка = Рисунок; //Рис.Линия = Новый Линия(ТипЛинииРисункаТабличногоДокумента.НетЛинии); Рис.Расположить(ТекОбласть); КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; Функция ПолучитьИзображение(Номенклатура) КартинкаПоумолчанию = Неопределено; Если ТипЗнч(Номенклатура) = Тип("СправочникСсылка.НоменклатураПрисоединенныеФайлы") Тогда Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПрисоединенныеФайлы.ХранимыйФайл |ИЗ | РегистрСведений.ПрисоединенныеФайлы КАК ПрисоединенныеФайлы |ГДЕ | ПрисоединенныеФайлы.ПрисоединенныйФайл = &ПрисоединенныйФайл"; Запрос.УстановитьПараметр("ПрисоединенныйФайл", Номенклатура); Результат = Запрос.Выполнить(); Если НЕ Результат.Пустой() Тогда Выборка = Результат.Выбрать(); Выборка.Следующий(); // Получаем двоичные данные катинки Возврат Новый Картинка(Выборка.ХранимыйФайл.Получить(), Истина); Иначе // Если данные отсутствуют, получаем стандартное изображение из // дополнительного макета внешнего отчета Возврат Неопределено КонецЕсли; КонецЕсли; Возврат КартинкаПоумолчанию; КонецФункции Проблема в следующем, с недавних пор прайс стал просто зависать(возможно это связанно с увеличением картинок) пробовал подождать 3-4 часа, все равно что то формировал. Замер производительности показывает, что все отрабатывает быстро. Весь код отрабатывается в районе 10с. то есть дальше код не выполняется, идет обработка на уровне платформы, насколько я понял. |
|||
1
Fragster
гуру
11.10.17
✎
16:49
|
ну а закомментировать-то вывод картинки пробовал?
|
|||
2
onetone
11.10.17
✎
16:50
|
(1) Если честно, то нет. Что то не приходило в голову. Сейчас буду пробовать.
|
|||
3
lodger
11.10.17
✎
16:51
|
зачем вам 20мпих картинки в прайслисте? суйте миниатюры и ссылку на фулсайз.
|
|||
4
onetone
11.10.17
✎
17:03
|
(3) Привью то откуда брать? А ссылка там и так выводится на картинки в я.диск.
|
|||
5
onetone
11.10.17
✎
17:07
|
(3 Отдельно создать для товаров привью и его пихать в прайс?
|
|||
6
onetone
11.10.17
✎
20:28
|
(1) Без картинок все работает как надо.
|
|||
7
kittystark
11.10.17
✎
20:56
|
у тебя получается запрос на каждую картинку отдельно, по сути в цикле для каждой строки
лучше выбрать одним запросом сразу - связав левым соединением по номенклатуре и в наборе данных чтоб сидело ХранимыйФайл, а в цикле от него уже делать ХранимыйФайл.Получить() |
|||
8
onetone
11.10.17
✎
21:22
|
(7) Спасибо за подсказку, согласен, так быстрее будет.
Но по оптимизации там тоже беда, самая трудозатратная строчка кода: Рис.Картинка = Рисунок; 85% времени уходить на нее из всего модуля. 3% уходить на как раз выполнение запроса. |
|||
9
onetone
12.10.17
✎
23:41
|
В общем проблема была похоже в объема этих картинок, сделал привьюшки, по 200х100 и прайс стал формироваться очень быстро
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |