Имя: Пароль:
1C
1С v8
Изменение высоты строки в макете под наибольшую ячейкув строке
0 ДедUndead
 
15.01.15
13:59
Доброго дня! Или вечера, у кого что.
Коллеги, подскажите, как победить такую проблему. Нужно в макет печатной формы вывести картинку. Это нетрудно, я разобрался, как это сделать. Но тонкость в том, что в строке в одной их ячеек может быть длинная спецификация товара. Если установить фиксированную высоту строки под размер картинки, то тогда все очень просто. картинки я предварительно привожу к примерно одному размеру. Но при таком решении,  если спецификация товара будет слишком длинной, то текст в такой ячейке будет обрезан, что неприемлемо. Как сделать, чтобы высота строки устанавливалась по самой высокой ячейке, с учетом того, что в строке есть картинка? Причем не могу добиться того, чтобы картинка меняла высоту ячейки. Получилось только при фиксированной высоте. Подскажите.
1 FIXXXL
 
15.01.15
14:02
тебе надо узнать максимальную длину строки и с учетом этого рассчитать высоту строки?
2 ДедUndead
 
15.01.15
14:06
Сейчас выводить пытаюсь так.

Изображение = ОбъектНоменклатура.ОсновноеИзображение.Хранилище.Получить();
        Если Изображение <> Неопределено Тогда
            Путь = ПолучитьИмяВременногоФайла("png");
            Изображение = Изображение.Преобразовать(ФорматКартинки.PNG);
            Изображение.Записать(Путь);
            GFLAx.LoadBitmap(Путь);
            Высота = GFLAx.Height;
            Ширина = GFLAx.Width;
            GFlAx.Resize(109, (109/Ширина) * Высота);
            GFLAx.SaveFormat = 3;
            GFLAx.SaveBitmap(Путь);
            
            Изображение = Новый Картинка(Путь);
            
            Рисунок = ОбластьИзображение.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
            Рисунок.Ширина = 25;
            Рисунок.Высота = 30;
            Рисунок.Лево = 0;
            Рисунок.Верх = 0;
            Рисунок.РазмерКартинки = РазмерКартинки.Пропорционально;
            Рисунок.Картинка = Изображение;
            
        КонецЕсли;
                
        ТабДокумент.Присоединить(ОбластьИзображение);
3 ДедUndead
 
15.01.15
14:08
Нет, скорее узнать высоту максимально высокой ячейки в строке, с учетом того, что в строке может быть картинка и ее высоту тоже надо учитывать. она может быть самой высокой в строке.
4 ДедUndead
 
15.01.15
14:15
вот такая хрень получается.

http://www.picshare.ru/view/5762109/
5 Serg_1960
 
15.01.15
14:39
ОбластьОписаниеТовара = ТабДок.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Текст);
...
МаксВысота = Макс(ОбластьОписанияТовара.Высота, ОбластьИзображения.Высота);
6 Serg_1960
 
15.01.15
14:44
PS: и кстати, области можно не только присоединять, но и удалять. В твоём случаи для предварительной оценки высоты может пригодиться.
7 lEvGl
 
гуру
15.01.15
14:53
автовысоту можно попробовать. в макете сделать картинку маленькой, что бы в строку помещалась и подсунуть потом в область большую картинку - должен автоматом растянуть по размеру картинки, так же с текстом
8 ДедUndead
 
15.01.15
14:59
Вот как раз вся проблема в том, что не растягивает. Я тоже так думал
9 ДедUndead
 
15.01.15
15:01
Serg_1960: Правильно понимаю, что это после добавления областей?
А как потом установить высоту строки?
10 DmitrO
 
15.01.15
15:05
mxl не подходит для таких задач, ее возможности ограничены. Надо использовать html.
11 ДедUndead
 
15.01.15
15:09
ОбластьОписаниеТовара.Высота - Поле объекта не обнаружено.
12 Масянька
 
15.01.15
15:10
(9) В семерке морочила голову так (правда для каждой выводимой строки):
- в строку ячейки помещается 40 символов.
- наименование тупо резала по 40 символов на каждую строку.
13 Масянька
 
15.01.15
15:11
+(12) То есть: есть наименование длиной 120 символов - 40 символов + перевод строки + 40 символов + перевод строки...
14 НЕА123
 
15.01.15
15:12
(9)
как-то
1. в исходом макете автовысота истина, без максимумма;
2. делаем (9);
3.
ОбластьВсяСтрока.ВысотаСтроки =0;
ОбластьВсяСтрока.ВысотаСтроки = МаксВысота;
15 ДедUndead
 
15.01.15
15:13
Если вот так делать
МаксВысота = Макс(ОбластьОписаниеТовара.ТекущаяОбласть.ВысотаСтроки, ОбластьИзображение.ТекущаяОбласть.ВысотаСтроки); - работает.
Но высота строки - 0!
16 ДедUndead
 
15.01.15
15:13
МаксВысота = 0 по какой-то причине.
17 НЕА123
 
15.01.15
15:14
*
ОбластьВсяСтрока.ВысотаСтроки = МаксВысота;
ОбластьВсяСтрока.АвтоВысота = Ложь;
18 НЕА123
 
15.01.15
15:16
(16)
попробуйте перед (15)
ОбластьВсяСтрока.АвтоВысота = Ложь;
19 _KaA
 
15.01.15
15:16
А какая платформа?
20 ДедUndead
 
15.01.15
15:17
1С:Предприятие 8.2 (8.2.19.83)
21 kosts
 
15.01.15
15:26
Выложи скрин макета, на подумать
22 ДедUndead
 
15.01.15
15:27
Макет каша, сейчас выложу
23 ДедUndead
 
15.01.15
15:32
Скрин части макета

http://www.picshare.ru/view/5762249/
24 kosts
 
15.01.15
15:34
А картинки одинакового размера?
25 ДедUndead
 
15.01.15
15:35
Высота разная, ширина одинаковая.
26 kosts
 
15.01.15
15:39
Надыбал. Если поможет.
Высота картинки остается неизменной, если она целиком расположена в одной строке. Можно добавить служебный текст (например белого цвета) с нужным количеством строк в служебную ячейку в новой служебной колонке.
Тогда строка не становится меньше заданной нами высоты, но остается возможность работы автовысоты.
27 kosts
 
15.01.15
15:40
(26) новую колонку не создавать, а задействовать, ту где картинка
28 ДедUndead
 
15.01.15
15:52
О, вот это может помочь!!!
29 ДедUndead
 
15.01.15
15:56
То есть, если правильн понял. Надо добавить текст в область, чтобы по высоте был примерно равен картинке. Добавить рисунок в ячейку. программно присваивать рисунку эту картинку. так?
30 ДедUndead
 
15.01.15
15:59
kosts: Кстати, откуда текст? это все, что там написано?
31 ДедUndead
 
15.01.15
16:42
Получилось, спасибо всем, особенно kosts. Элементарное решение, как сам не догадался.
32 Serg_1960
 
15.01.15
16:48
Упс :( времени нет, зря я встрял в тему. сорри.

v8: Табличный документ. Разная высота строк в разных колонках.