Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 10:18

вывод картинки в отчет СКД

Автор margo, 09 апр 2021, 03:20

0 Пользователей и 1 гость просматривают эту тему.

margo

Доброй ночи!
Скачала код с инфостарта. Подскажите, как настроить программно отчет таким образом, что если нет изображения, тогда высота строки стандартного размера как на рисунке ниже
вот код


   
   СтандартнаяОбработка = Ложь;
   
   ИмяКолонкиИзображения = "Картинка"; //
      
   НастройкиСКД = КомпоновщикНастроек.ПолучитьНастройки();

   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   
   ПолеИзображения = СхемаКомпоновкиДанных.НаборыДанных.ПрайсЛист.Поля.Найти(ИмяКолонкиИзображения); //
   
   //ШиринаКолонкиИзображения = ВернутьЗначениеПараметраНастройкиСКД(КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы, "ШиринаКолонкиИзображения", 20);
   ШиринаКолонкиИзображения = 20;
   
   Если Не ПолеИзображения = Неопределено Тогда  //
      ОформлениеМинимальнойШириныКолонки = СхемаКомпоновкиДанных.НаборыДанных.ПрайсЛист.Поля.Найти(ИмяКолонкиИзображения).Оформление.Элементы.Найти("МинимальнаяШирина"); //
      ОформлениеМинимальнойШириныКолонки.Использование = Истина;    //
      //ОформлениеМинимальнойШириныКолонки.Значение = ШиринаКолонкиИзображения;  //
      ОформлениеМинимальнойШириныКолонки.Значение = ШиринаКолонкиИзображения;
   КонецЕсли;
      

   Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиСКД, ДанныеРасшифровки);

   ПроцессорКомпоновкиСКД = Новый ПроцессорКомпоновкиДанных;

   ПроцессорКомпоновкиСКД.Инициализировать(Макет,, ДанныеРасшифровки);

   ДокументРезультат.Очистить();

   ПроцессорВыводаСКД = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;

   ПроцессорВыводаСКД.УстановитьДокумент(ДокументРезультат);

   ПроцессорВыводаСКД.Вывести(ПроцессорКомпоновкиСКД);
   
   КолвоСтрок = ДокументРезультат.ВысотаТаблицы;
   КолвоКолонок = ДокументРезультат.ШиринаТаблицы;
   Для Строка = 1 По КолвоСтрок Цикл
      Для Колонка = 1 По КолвоКолонок Цикл
         Область =  ДокументРезультат.Область(Строка,Колонка);
         Расшифровка = Область.Расшифровка;
         Если ТипЗнч(Расшифровка) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда
            ПоляРасшифровки = ДанныеРасшифровки.Элементы.Получить(Расшифровка).ПолучитьПоля();
             //Область.АвтоВысотаСтроки = Ложь;
             //   
             //Область.ВысотаСтроки = 80;
            ФайлКартинки = ПоляРасшифровки.Найти("Картинка");
            Если ФайлКартинки <> Неопределено Тогда
               КартинкаДД = РаботаСФайламиСлужебный.ПолучитьДвоичныеДанныеФайла(ФайлКартинки.Значение);
               //КартинкаДД = ПрисоединенныеФайлы.ПолучитьДвоичныеДанныеФайла(ФайлКартинки.Значение);

               //КартинкаДД = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаИДвоичныеДанные(ФайлКартинки.Значение);
               Картинка = Новый Картинка(КартинкаДД);
               КартинкаДок = ДокументРезультат.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
               КартинкаДок.Картинка = Картинка;
               КартинкаДок.РазмерКартинки = РазмерКартинки.Пропорционально;
               КартинкаДок.ЦветЛинии = Область.ЦветРамки;
               КартинкаДок.Расположить(Область);   
               Область.АвтоВысотаСтроки = Ложь;
                //Область.ВысотаСтроки = 80;
                 Область.ВысотаСтроки = ШиринаКолонкиИзображения*1.31/0.3759;         
            КонецЕсли;   
         КонецЕсли;   
      КонецЦикла;      
   КонецЦикла;   

margo

Цитата: margo от 09 апр 2021, 03:20
Доброй ночи!
Скачала код с инфостарта. Подскажите, как настроить программно отчет таким образом, что если нет изображения, тогда высота строки стандартного размера как на рисунке ниже
вот код


   
   СтандартнаяОбработка = Ложь;
   
   ИмяКолонкиИзображения = "Картинка"; //
      
   НастройкиСКД = КомпоновщикНастроек.ПолучитьНастройки();

   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   
   ПолеИзображения = СхемаКомпоновкиДанных.НаборыДанных.ПрайсЛист.Поля.Найти(ИмяКолонкиИзображения); //
   
   //ШиринаКолонкиИзображения = ВернутьЗначениеПараметраНастройкиСКД(КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы, "ШиринаКолонкиИзображения", 20);
   ШиринаКолонкиИзображения = 20;
   
   Если Не ПолеИзображения = Неопределено Тогда  //
      ОформлениеМинимальнойШириныКолонки = СхемаКомпоновкиДанных.НаборыДанных.ПрайсЛист.Поля.Найти(ИмяКолонкиИзображения).Оформление.Элементы.Найти("МинимальнаяШирина"); //
      ОформлениеМинимальнойШириныКолонки.Использование = Истина;    //
      //ОформлениеМинимальнойШириныКолонки.Значение = ШиринаКолонкиИзображения;  //
      ОформлениеМинимальнойШириныКолонки.Значение = ШиринаКолонкиИзображения;
   КонецЕсли;
      

   Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиСКД, ДанныеРасшифровки);

   ПроцессорКомпоновкиСКД = Новый ПроцессорКомпоновкиДанных;

   ПроцессорКомпоновкиСКД.Инициализировать(Макет,, ДанныеРасшифровки);

   ДокументРезультат.Очистить();

   ПроцессорВыводаСКД = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;

   ПроцессорВыводаСКД.УстановитьДокумент(ДокументРезультат);

   ПроцессорВыводаСКД.Вывести(ПроцессорКомпоновкиСКД);
   
   КолвоСтрок = ДокументРезультат.ВысотаТаблицы;
   КолвоКолонок = ДокументРезультат.ШиринаТаблицы;
   Для Строка = 1 По КолвоСтрок Цикл
      Для Колонка = 1 По КолвоКолонок Цикл
         Область =  ДокументРезультат.Область(Строка,Колонка);
         Расшифровка = Область.Расшифровка;
         Если ТипЗнч(Расшифровка) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда
            ПоляРасшифровки = ДанныеРасшифровки.Элементы.Получить(Расшифровка).ПолучитьПоля();
             //Область.АвтоВысотаСтроки = Ложь;
             //   
             //Область.ВысотаСтроки = 80;
            ФайлКартинки = ПоляРасшифровки.Найти("Картинка");
            Если ФайлКартинки <> Неопределено Тогда
               КартинкаДД = РаботаСФайламиСлужебный.ПолучитьДвоичныеДанныеФайла(ФайлКартинки.Значение);
               //КартинкаДД = ПрисоединенныеФайлы.ПолучитьДвоичныеДанныеФайла(ФайлКартинки.Значение);

               //КартинкаДД = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаИДвоичныеДанные(ФайлКартинки.Значение);
               Картинка = Новый Картинка(КартинкаДД);
               КартинкаДок = ДокументРезультат.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
               КартинкаДок.Картинка = Картинка;
               КартинкаДок.РазмерКартинки = РазмерКартинки.Пропорционально;
               КартинкаДок.ЦветЛинии = Область.ЦветРамки;
               КартинкаДок.Расположить(Область);   
               Область.АвтоВысотаСтроки = Ложь;
                //Область.ВысотаСтроки = 80;
                 Область.ВысотаСтроки = ШиринаКолонкиИзображения*1.31/0.3759;         
            КонецЕсли;   
         КонецЕсли;   
      КонецЦикла;      
   КонецЦикла;

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск