Имя: Пароль:
1C
1С v8
вывод изображения в СКД
0 LivingStar
 
10.04.13
11:46
Кто нибудь занимался задачей вывода изображений введенных элементам справочника номенклатура в СКД ?
1 vicof
 
10.04.13
11:47
определенно
2 toypaul
 
гуру
10.04.13
11:47
тоже интересно
3 SherifSP
 
10.04.13
11:51
Ну конечно занимались)
4 SherifSP
 
10.04.13
11:51
Нужно процедуру ОбновитьОтчет(), вручную переписать
5 vicof
 
10.04.13
11:54
ведь гуглить лень, лучше на мисте спросить
http://help1c.com/faq/view/1234.html
6 SherifSP
 
10.04.13
11:57
Для Каждого ЗначенияПараметра Из ЭлементРезультата.ЗначенияПараметров Цикл
               Если ТипЗнч(ЗначенияПараметра.Значение) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда
                   ПоляРасшифровки = Расшифровка.Элементы[ЗначенияПараметра.Значение].ПолучитьПоля();
                   Для Каждого ПолеРасшифровки Из ПоляРасшифровки Цикл
                       Если ПолеРасшифровки.Поле = ПолеПоКоторомуНеобходимоПолучитьЗначение Тогда
                           
                           ЗначениеВыводимыхДанных = ПолеРасшифровки.Значение;
                           
                           Рис = Результат.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
                           Рис.РазмерКартинки = РазмерКартинки.РеальныйРазмер;
                           Индекс = Результат.Рисунки.Индекс(Рис);
                           Если ЗначениеВыводимыхДанных.ПометкаУдаления = Истина Тогда
                               Результат.Рисунки[Индекс].Картинка  = БиблиотекаКартинок.ПомеченНаУдаление;
                               Результат.Рисунки[Индекс].ЦветФона = Новый Цвет(255,229,229);
                           Иначе
                               Если ЗначениеВыводимыхДанных.Проведен Тогда
                                   Результат.Рисунки[Индекс].Картинка  = БиблиотекаКартинок.Проведенный;
                               Иначе
                                   Результат.Рисунки[Индекс].Картинка  = БиблиотекаКартинок.НеПроведенный;
                               КонецЕсли;
                           КонецЕсли;
                           ВысотаТабДок = Результат.ВысотаТаблицы;
                           ОбластьДляКартинки = Результат.НайтиТекст("%Картинка%");
                           Если ОбластьДляКартинки <> Неопределено Тогда
                               Результат.Рисунки[Индекс].Расположить(ОбластьДляКартинки);
                               ОбластьДляКартинки.Текст = "%КартинкаДобавлена%";
                           КонецЕсли;
                           
                           Прервать;
                       КонецЕсли;
                   КонецЦикла;
7 LivingStar
 
10.04.13
12:08
(5) да смотрел я поиском и это видел http://infostart.ru/public/67169/
8 GANR
 
10.04.13
12:08
&НаСервре
Процедура СформироватьНаСервре()
   
   СкомпоноватьРезультат();
   
   Для НомерСтроки = 1 По Результат.ВысотаТаблицы Цикл
       Для НомерКолонки = 1 По Результат.ШиринаТаблицы Цикл
           Если [надо вывести картинку] Тогда
               ОбластьКартинки = Результат.Область("R"+Формат(НомерСтроки,"ЧГ=0")+"C"+Формат(НомерКолонки,"ЧГ=0"));
               Картинка = Новый Картинка(ТвояКартинка);
               
               РисунокТабличногоДокумента = Результат.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
               РисунокТабличногоДокумента.Картинка = Картинка;
               РисунокТабличногоДокумента.РазмерКартинки = РазмерКартинки.АвтоРазмер;
               
               ОбластьКартинки.ВысотаСтроки = ТвояШирина;
               ОбластьКартинки.ШиринаКолонки = ТвояВысота;
               РисунокТабличногоДокумента.Расположить(ОбластьКартинки);            
           КонецЕсли;
       КонецЦикла;
   КонецЦикла;
   
КонецПроцедуры
9 vicof
 
10.04.13
12:16
(7) и...
10 toypaul
 
гуру
10.04.13
12:47
принцип понятен. спасибо.
11 LivingStar
 
10.04.13
14:24
(9) ну буду разбираться дело дойдет.
12 LivingStar
 
18.04.13
12:28
(5) так и не понял от куда там берется картинка
13 LivingStar
 
18.04.13
12:32
понял в коде процедуры это делается
14 LivingStar
 
18.04.13
12:35
похоже картинку выводит этот код
|
               Если ЗначениеВыводимыхДанных.ЭтоГруппа Тогда
                   ДокументРезультат.Рисунки[Индекс].Картинка = БиблиотекаКартинок.ГруппаИЭлемент;
               Иначе
                   ДокументРезультат.Рисунки[Индекс].Картинка = БиблиотекаКартинок.Сформировать;
               КонецЕсли;    
|
а если нужно брать картинку с номенклатуры, как это будет?
15 LivingStar
 
18.04.13
12:45
хочу сделать по подобию, но у меня ошибку выдает, просто добавил поле и выражение картинка, как в статье
|
Ошибка исполнения отчета
по причине:
Ошибка при выполнении обработчика - 'ПриКомпоновкеРезультата'
по причине:
{ВнешнийОтчет.ВедомостьПоТоварамНаСкладах.МодульОбъекта(5)}: Ошибка при вызове метода контекста (Выполнить)
   Макет                                    = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки);
по причине:
Ошибка компоновки макета
по причине:
Ошибка в выражении "(%Картинка%)"
по причине:
|
16 LivingStar
 
18.04.13
13:40
в этой процедуре не заходит в
|
Если ЭлементРезультата.ЗначенияПараметров.Количество() > 0 Тогда
|
что нужно поправить?
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
   СтандартнаяОбработка = Ложь;

   ДокументРезультат.Очистить();
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки);
   ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
   ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки);
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
   //ПроцессорВывода.Вывести(ДокументРезультат);
   
   ПолеПоКоторомуНеобходимоПолучитьЗначение = "Ссылка";
   ПроцессорВывода.НачатьВывод();
   Пока истина Цикл
       ЭлементРезультата = ПроцессорКомпоновки.Следующий();
       
       Если ЭлементРезультата = Неопределено Тогда
           прервать;
       КонецЕсли;    
       ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
       Если ЭлементРезультата.ЗначенияПараметров.Количество() > 0 Тогда
           ЗначениеВыводимыхДанных = Неопределено;
           Для каждого ЗначениеПараметра из ЭлементРезультата.ЗначенияПараметров Цикл
               Если ТипЗнч(ЗначениеПараметра.Значение) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда
                   ПоляРасшифровки = ДанныеРасшифровки.Элементы[ЗначениеПараметра.Значение].ПолучитьПоля();
                   Для Каждого ПолеРасшифровки из ПоляРасшифровки Цикл
                       Если ПолеРасшифровки.Поле = ПолеПоКоторомуНеобходимоПолучитьЗначение Тогда
                           ЗначениеВыводимыхДанных = ПолеРасшифровки.Значение;
                           Прервать;
                       КонецЕсли;    
                   КонецЦикла;    
               КонецЕсли;    
           КонецЦикла;    
           Если ЗначениеЗаполнено(ЗначениеВыводимыхДанных) Тогда
               Рис = ДокументРезультат.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
               Рис.РазмерКартинки = РазмерКартинки.РеальныйРазмер;
               Индекс = ДокументРезультат.Рисунки.Индекс(Рис);
               Если ЗначениеВыводимыхДанных.ЭтоГруппа Тогда
                   ДокументРезультат.Рисунки[Индекс].Картинка = БиблиотекаКартинок.ЭлементПапка;
               Иначе
                   ДокументРезультат.Рисунки[Индекс].Картинка = БиблиотекаКартинок.ЭлементПапка;
               КонецЕсли;    
               ВысотаТабДок = ДокументРезультат.ВысотаТаблицы;
               ОбластьДляКартинки = ДокументРезультат.НайтиТекст("%Картинка%");
               Если ОбластьДляКартинки <> Неопределено Тогда
                   ДокументРезультат.Рисунки[Индекс].Расположить(ОбластьДляКартинки);    
                   ОбластьДляКартинки.Текст = "%КартинкаДобавлена%"
               КонецЕсли;
           КонецЕсли;    
       КонецЕсли;    
   КонецЦикла;
   ПроцессорВывода.ЗакончитьВывод();
   
КонецПроцедуры
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший