Имя: Пароль:
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) Спасибо большое за помощь!
Решил следующим образом: в макете выделил строки, которые не нужно менять, одну из колонок поменял размер. При этом она наругалась, что будет создан новый формат строк. Это видимо то, что я не смог сделать программно. После этого вертикальные области распространяются на все, кроме этих строк.
Еще раз спасибо за помощь.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn