Имя: Пароль:
1C
1С v8
Как расширить ширину ячейки в СКД
0 LivingStar
 
22.04.13
11:16
В скд в процедуре Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) формирую вывод картинки, высоту строки могу задать, но не могу задать ширину ячейки!!!

Как задать ширину ячейки что бы она действительно установилась такая какую я её задаю. Нуэно это что бы изображения выводились в более менее расширенном виде.
|
// --------------------------------------------------------------------------------------------------------------------------------------------------------------------
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
   Картинка = неопределено;
   СтандартнаяОбработка = Ложь;
   ДокументРезультат.Очистить();
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки);
   ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
   ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки);
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
   //ПроцессорВывода.Вывести(ДокументРезультат);
   // 2013_04_18 ->
   ПолеПоКоторомуНеобходимоПолучитьЗначение = "Номенклатура";
   // 2013_04_18 <-
   ПроцессорВывода.НачатьВывод();
   Пока истина Цикл
       ЭлементРезультата = ПроцессорКомпоновки.Следующий();
       Если ЭлементРезультата = Неопределено Тогда
           прервать;
       КонецЕсли;    
       ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
       Если ЭлементРезультата.ЗначенияПараметров.Количество() > 0 Тогда
           ЗначениеВыводимыхДанных = Неопределено;
           Для каждого ЗначениеПараметра из ЭлементРезультата.ЗначенияПараметров Цикл
               Если ТипЗнч(ЗначениеПараметра.Значение) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда
                   ПоляРасшифровки = ДанныеРасшифровки.Элементы[ЗначениеПараметра.Значение].ПолучитьПоля();
                   Для Каждого ПолеРасшифровки из ПоляРасшифровки Цикл
                       Если ПолеРасшифровки.Поле = ПолеПоКоторомуНеобходимоПолучитьЗначение Тогда
                           ЗначениеВыводимыхДанных = ПолеРасшифровки.Значение;
                           Прервать;
                       КонецЕсли;    
                   КонецЦикла;    
               КонецЕсли;    
           КонецЦикла;    
           Если ЗначениеЗаполнено(ЗначениеВыводимыхДанных) Тогда
               //ОбластьДляКартинки = ДокументРезультат.НайтиТекст("%Картинка%");
               Рис = ДокументРезультат.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
               Рис.РазмерКартинки = РазмерКартинки.РеальныйРазмер;
               Индекс = ДокументРезультат.Рисунки.Индекс(Рис);
               // 04.19 ->
               Путь                    = Путь();
               ОтносительныйПуть       = ПолучитьИдентификаторОбъекта(ЗначениеВыводимыхДанных.ФайлКартинки.ВладелецФайла) + "\";
               ИмяФайла                = ЗначениеВыводимыхДанных.ФайлКартинки.Наименование + "." + ЗначениеВыводимыхДанных.ФайлКартинки.Расширение;
               ПолноеИмяФайлаНаКлиенте = Путь + ОтносительныйПуть + ИмяФайла;
               ИзображениеНаДиске = Новый Файл(ПолноеИмяФайлаНаКлиенте);
               Если ИзображениеНаДиске.Существует() и ИмяФайла <> "." Тогда
                   Картинка = Новый Картинка (ПолноеИмяФайлаНаКлиенте);    
                   ДокументРезультат.Рисунки[Индекс].Картинка = Картинка;
               КонецЕсли;
               // 2013_04_18 <-
               ВысотаТабДок = ДокументРезультат.ВысотаТаблицы;
               ОбластьДляКартинки = ДокументРезультат.НайтиТекст("%Картинка%");
               Если ОбластьДляКартинки <> Неопределено Тогда
                   ДокументРезультат.Рисунки[Индекс].Расположить(ОбластьДляКартинки);    
                   ОбластьДляКартинки.Текст = "%КартинкаДобавлена%";
               КонецЕсли;
               // 04.19 ->
               ОбластьДляКартинки.ВысотаСтроки  = 150;
               ОбластьДляКартинки.ШиринаКолонки = 500;
               // 04.19 <-
           КонецЕсли;    
       КонецЕсли;    
   КонецЦикла;
   ПроцессорВывода.ЗакончитьВывод();
КонецПроцедуры
1 LivingStar
 
22.04.13
11:22
ставлю ОбластьДляКартинки.ШиринаКолонки = 50;
ОбластьДляКартинки.ШиринаКолонки = 500;
ничего не меняется!!!
2 LivingStar
 
22.04.13
12:00
СКД - > Вычисляемые поля, у меня там добавлена строка:
ПутьКДанным -> ПолеКартинки
Выражение   -> %Картинка%
Заголовок   -> Изображение номенклатуры
Оформление  -> минимальная ширина 25
и
в коде процедуры строка:
|
ОбластьДляКартинки.ВысотаСтроки  = 135;
|
задает ширину и высоту изображения которое было загруженно для проверки. В оформлении высотой не удалось регулировать. А если это нужно задавать программно? менять высоту и ширину изображения, КАК получить доступ к оформлению?
3 LivingStar
 
23.04.13
05:51
Никто этим не занимался в процедуре ПриКомпоновкеРезультата() ? Или может это нужно делать в другой процедуре?
4 Галахад
 
гуру
23.04.13
06:12
Я делал после вывода таблицы. Менял ширину у всех колонки.
5 LivingStar
 
23.04.13
06:16
ПроцессорВывода.ЗакончитьВывод();
|
после этой инструкции в процедуре ПриКомпоновкеРезультата() ?
или в каком месте?
6 Галахад
 
гуру
23.04.13
06:21
Такие подробности я не помню.
7 LivingStar
 
23.04.13
06:35
(6) а можете вспомнить как это делали? перебирали сформированную таблицу СКД и меняли? Где то я видел что то подобное, но из за этого она очень долго формировалась!!!
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.