![]() |
![]() |
![]() |
|
СКД. Программный вывод картинок в отчете. Не работают отборы | ☑ | ||
---|---|---|---|---|
0
SeiOkami
10.03.13
✎
21:56
|
Здравия!
Сделал отчет в СКД с выводом картинок, но теперь не работают отборы. Не работают в быстром доступе и в настроках, а когда пытаюсь "ИзменитьВариант", то все норм. Как исправить? |
|||
1
SeiOkami
10.03.13
✎
22:08
|
+
|
|||
2
GANR
10.03.13
✎
22:11
|
Как выводишь картинки?
|
|||
3
GANR
10.03.13
✎
22:14
|
ЭтаФорма.СкомпоноватьРезультат(), а потом по табличному документу пробегаться надо и подставлять картинки в те места, где выведен определенный ключ для этих картинок (скажем, GUID). А ты как делаешь?
|
|||
4
SeiOkami
10.03.13
✎
22:21
|
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь; СхемаКомпоновкиДанных = ПолучитьМакет("СКД"); Настройки = КомпоновщикНастроек.Настройки; Попытка ВидЦеныЗакупки = Константы._ВидЦеныЗакупки.Получить(); Параметр_ВидЦеныЗакупки = Новый ПараметрКомпоновкиДанных("ВидЦеныЗакупки"); ЗначениеПараметра_ВидЦеныЗакупки = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Параметр_ВидЦеныЗакупки); Если ЗначениеПараметра_ВидЦеныЗакупки <> Неопределено Тогда ЗначениеПараметра_ВидЦеныЗакупки.Значение = ВидЦеныЗакупки; ЗначениеПараметра_ВидЦеныЗакупки.Использование = Истина; КонецЕсли; ВидЦеныПродажи = Константы._ВидЦеныПродажи.Получить(); Параметр_ВидЦеныПродажи = Новый ПараметрКомпоновкиДанных("ВидЦеныПродажи"); ЗначениеПараметра_ВидЦеныПродажи = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Параметр_ВидЦеныПродажи); Если ЗначениеПараметра_ВидЦеныПродажи <> Неопределено Тогда ЗначениеПараметра_ВидЦеныПродажи.Значение = ВидЦеныПродажи; ЗначениеПараметра_ВидЦеныПродажи.Использование = Истина; КонецЕсли; Исключение КонецПопытки; ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки, ДанныеРасшифровки); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); // //Шаманим над картинками Если ВыводитьКартинки Тогда ТабДок = ДокументРезультат; ТабДок.ФиксацияСверху = Ложь; ТабДок.ФиксацияСлева = Ложь; В = ДокументРезультат.ВысотаТаблицы; Ш = ДокументРезультат.ШиринаТаблицы; Для с=1 По В Цикл Для к=1 По Ш Цикл Область = ТабДок.ПолучитьОбласть("R"+Формат(с,"ЧГ=0")+"C"+Формат(к,"ЧГ=0")); ТекОбласть = ТабДок.Область("R"+Формат(с,"ЧГ=0")+"C"+Формат(к,"ЧГ=0")); Расшифровка = ТекОбласть.Расшифровка; Если ТипЗнч(Расшифровка) = Тип("СправочникСсылка.НоменклатураПрисоединенныеФайлы") Тогда //Картинка = Расшифровка.ФайлХранилище.Получить(); //УстановитьПривилегированныйРежим(Истина); //Картинка = ПрисоединенныеФайлы.ПолучитьДанныеФайла(Расшифровка).СсылкаНаДвоичныеДанныеФайла; Если Расшифровка.Пустая() тогда Продолжить; КонецЕсли; Картинка = (ПолучитьИзВременногоХранилища(ПрисоединенныеФайлы.ПолучитьДанныеФайла(Расшифровка).СсылкаНаДвоичныеДанныеФайла)); //Картинка = ПрисоединенныеФайлы.ПолучитьДвоичныеДанныеФайла(Расшифровка); // Картинка = Новый Картинка(Картинка); Если Картинка = Неопределено Тогда Продолжить; КонецЕсли; ТекОбласть.ВысотаСтроки = ВысотаКартинки; ТекОбласть.ШиринаКолонки = ШиринаКартинки/4; Рисунок = Область.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка); Рисунок.Картинка = Картинка; Рисунок.Лево = 1; Рисунок.Верх = 1; Рисунок.Высота = ВысотаКартинки; Рисунок.Ширина = ШиринаКартинки/4; Рисунок.ГраницаСверху = Истина; Рисунок.ГраницаСлева = Истина; Рисунок.ГраницаСнизу = Истина; Рисунок.ГраницаСправа = Истина; Рисунок.РазмерКартинки = РазмерКартинки.АвтоРазмер; Рисунок.ВыводитьНаПечать = Истина; Рисунок.Расположить(Область.ТекущаяОбласть); ТабДок.ВставитьОбласть(Область.ТекущаяОбласть,ТабДок.Область("R"+Формат(с,"ЧГ=0")+"C"+Формат(к,"ЧГ=0"))); КонецЕсли; КонецЦикла; КонецЦикла; КонецЕсли; ПроцессорВывода.ЗакончитьВывод(); КонецПроцедуры |
|||
5
GANR
10.03.13
✎
22:35
|
(4) А если сделать так:
1. Процедуру ПриКомпоновкеРезультата - убрать! 2. СКД - основной СКД отчета назначить 3. В форме отчета &НаКлиенте Процедура Сформировать() // ВНИМАНИЕ!!! Формировать НЕ в фоне! ЭтаФорма.СкомпоноватьРезультат(); Если ВыводитьКартинки Тогда ... КонецЕсли; КонецПроцедуры |
|||
6
SeiOkami
10.03.13
✎
22:37
|
А почему так?
|
|||
7
SeiOkami
10.03.13
✎
22:37
|
Нельзя в ПриКомпоновкеРезультата ?
|
|||
8
SeiOkami
10.03.13
✎
22:37
|
СКД - и есть основная
|
|||
9
GANR
10.03.13
✎
22:39
|
(7) Потому что можно подпортить стандартный алгоритм платформы при формировании результата, да и кода убавится. (8) Ну и хорошо, п.2 для профилактики сказал.
|
|||
10
SeiOkami
10.03.13
✎
22:42
|
Блин, как я не хотел в форме кнопку свою делать(
|
|||
11
GANR
10.03.13
✎
22:42
|
А если то, что после ВыводитьКартиинки закомментировать работает?
|
|||
12
SeiOkami
10.03.13
✎
22:45
|
В смысле?
ПроцессорВывода.ЗакончитьВывод() |
|||
13
kiruha
10.03.13
✎
22:45
|
Почему бы просто схеме не подсунуть свой макет с картинками для группировки ?
|
|||
14
GANR
10.03.13
✎
22:46
|
(12) Нет. Всю ветку Если ВыводитьКартинки...
|
|||
15
SeiOkami
10.03.13
✎
22:46
|
Не помогает
|
|||
16
SeiOkami
10.03.13
✎
22:47
|
(15) - (14)
|
|||
17
SeiOkami
10.03.13
✎
22:47
|
А что значит:
// ВНИМАНИЕ!!! Формировать НЕ в фоне! |
|||
18
zladenuw
10.03.13
✎
22:49
|
||||
19
GANR
10.03.13
✎
22:50
|
(15) Так значит дело не в алгоритме вывода картинок, а в том, что происходит ДО него. Логично?
(17) СкомпоноватьРезультат можно выполнить фоново, но в нашем случае прежде чем выводить картинки надо дождаться пока отчет сформирует результат. почитай про расширение форм отчета СкомпоноватьРезультат в СП. |
|||
20
SeiOkami
10.03.13
✎
22:51
|
(19), я тоже так подумал, однако, ведь я отменил стандартную процедуру... Может то, что должно было сделать отбор находится позже...
|
|||
21
GANR
10.03.13
✎
22:53
|
(20) Вот-вот.
|
|||
22
SeiOkami
10.03.13
✎
22:57
|
(21), спасибо, буду делать в форме)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |