Имя: Пароль:
1C
1С v8
Ширина колонки в макете
,
0 temmy70
 
18.02.14
12:13
День добрый.

Вывожу печатную форму, таблицу. Количество колонок может быть разным, это как пользователь галки поставит. Проблема в том, что если не выводим какие-то колонки, то остальные нужно растягивать на ширину.
Меняю ширину колонок например так:

КолонкаЦены1 = МакетПрайса.Область("ШапкаТаблицы|СтрокаЦена1");
КолонкаЦены1.ШиринаКолонки = КолонкаЦены1.ШиринаКолонки*2;

Меняет всю колонку по отчету, и шапка документа тоже разъезжается. Смотрел примеры, вроде должно работать. Что я делаю не так?
1 1Сергей
 
18.02.14
12:20
СоздатьФорматСтрок
2 temmy70
 
18.02.14
12:29
(1) сейчас почитаю. мне кажется у меня с макетом что-то не то
3 temmy70
 
18.02.14
12:46
а как можно задать вертикальную область, только на определенные горизонтальные области?
4 1Сергей
 
18.02.14
12:49
(3) это не будет ни вертикальная и ни горизонтальная область, а произвольная
5 Cube
 
18.02.14
12:50
(3) Попробуй так:

КолонкаЦены1 = МакетПрайса.Область(5, 2, 5, 2); //Вторая колонка пятой строки
КолонкаЦены1.ШиринаКолонки = КолонкаЦены1.ШиринаКолонки*2;
6 temmy70
 
18.02.14
13:00
(5) ширину всей колонки меняет.
(4) а как назначить эту произвольную область? в чужих макетах вижу, а у себя сделать не могу.
7 1Сергей
 
18.02.14
13:04
(6) ты ведь построчно выводишь? макет при выводе горизонтальной секции подгоняет ширины колонок для всего табличного документа, потом делаешь (1) и дальше ширины колонок пойдут уже новые
8 temmy70
 
18.02.14
13:18
(7) построчно вывожу. Сначала нужно получить область, заполнить параметрами, потом (1) и установить ширину нужной области? что-то у меня не в одной комбинации не получилось.
9 temmy70
 
18.02.14
13:19

КолонкаЦены1 = МакетПрайса.Область("СтрокаЦена1");
    КолонкаЦены1.СоздатьФорматСтрок();
    КолонкаЦены1.ШиринаКолонки = КолонкаЦены1.ШиринаКолонки*2;
    
    //вывод шапки таблицы
    ОбластьШапкаНомер = МакетПрайса.ПолучитьОбласть("ШапкаТаблицы|СтрокаНомер");
    ТабДок.Вывести(ОбластьШапкаНомер);
    ОбластьШапкаНомен = МакетПрайса.ПолучитьОбласть("ШапкаТаблицы|СтрокаНоменклатура");
    ТабДок.Присоединить(ОбластьШапкаНомен);
    ОбластьШапкаХарак = МакетПрайса.ПолучитьОбласть("ШапкаТаблицы|СтрокаКомментарий");
    ТабДок.Присоединить(ОбластьШапкаХарак);
    //колонки цен
    Если НаПечать1 Тогда
        ОбластьШапкаЦена1 = МакетПрайса.ПолучитьОбласть("ШапкаТаблицы|СтрокаЦена1");
        ЗаполнитьЗначенияСвойств(ОбластьШапкаЦена1.Параметры, СтруктураПечати);
        ТабДок.Присоединить(ОбластьШапкаЦена1);
    КонецЕсли;
    Если НаПечать2 Тогда
        ОбластьШапкаЦена2 = МакетПрайса.ПолучитьОбласть("ШапкаТаблицы|СтрокаЦена2");
        ЗаполнитьЗначенияСвойств(ОбластьШапкаЦена2.Параметры, СтруктураПечати);
        ТабДок.Присоединить(ОбластьШапкаЦена2);
    КонецЕсли;
    Если НаПечать3 Тогда
        ОбластьШапкаЦена3 = МакетПрайса.ПолучитьОбласть("ШапкаТаблицы|СтрокаЦена3");
        ЗаполнитьЗначенияСвойств(ОбластьШапкаЦена3.Параметры, СтруктураПечати);
        ТабДок.Присоединить(ОбластьШапкаЦена3);
    КонецЕсли;
    Если НаПечать4 Тогда
        ОбластьШапкаЦена4 = МакетПрайса.ПолучитьОбласть("ШапкаТаблицы|СтрокаЦена4");
        ЗаполнитьЗначенияСвойств(ОбластьШапкаЦена4.Параметры, СтруктураПечати);
        ТабДок.Присоединить(ОбластьШапкаЦена4);
    КонецЕсли;
    Если НаПечать5 Тогда
        ОбластьШапкаЦена5 = МакетПрайса.ПолучитьОбласть("ШапкаТаблицы|СтрокаЦена5");
        ЗаполнитьЗначенияСвойств(ОбластьШапкаЦена5.Параметры, СтруктураПечати);
        ТабДок.Присоединить(ОбластьШапкаЦена5);
    КонецЕсли;
10 temmy70
 
18.02.14
13:19
может свежим взглядом укажите в ошибку?
11 1Сергей
 
18.02.14
13:36
(9) После того, как вывел область с одними значениями ширины колонок, делай СоздатьФорматСтрок();, следующий вывод (ТабДок.Вывести(...);) будет с новыми значениями ширины колонок
12 temmy70
 
18.02.14
13:44
(11) Вот я вывел шапку документа. Потом сделал СоздатьФормаСтрок(). Потом вывожу шапку таблицы, которая должна быть по моим новым размерам. Выводится чистая строка, и шириной колонок поумолчанию. Ничего не заполняет. ((

Попутно ищу как сделать вертикальную область, которая будет распространятся только на определенные строки. В других макетах вижу, не пойму как сделано. Встаю на одну горизонтальную область, появляются вертикальные области. Перехожу на другую горизонтальную область, вертикальные области пропадают.
13 1Сергей
 
18.02.14
13:45
(12) ТабДок.СоздатьФорматСтрок();
14 temmy70
 
18.02.14
14:01
(13) Спасибо большое за помощь!
Решил следующим образом: в макете выделил строки, которые не нужно менять, одну из колонок поменял размер. При этом она наругалась, что будет создан новый формат строк. Это видимо то, что я не смог сделать программно. После этого вертикальные области распространяются на все, кроме этих строк.
Еще раз спасибо за помощь.