Имя: Пароль:
1C
1С v8
Изменение ширины колонки не всегда работает
0 supervk
 
04.12.12
13:10
Пытаюсь задать ширину колонки с помощью ТекущаяОбласть.ШиринаКолонки

Работает (ширина меняется), если делаю вот так:

ТабДокумент = Новый ТабличныйДокумент;
ОбластьИзображение = Макет.ПолучитьОбласть("Итого|КолонкаДляШирины");    
ОбластьИзображение.ТекущаяОбласть.ШиринаКолонки = 200;
ТабДокумент.Присоединить(ОбластьИзображение);


А если перед этим пытаюсь вывести ещё какие-нибудь колонки, то ширина остаётся такой, какая она была в макете.
Т.е. не работает (ширина не меняется), если делаю вот так:

ТабДокумент = Новый ТабличныйДокумент;
ОбластьНомера = Макет.ПолучитьОбласть("Итого|НомерСтроки");
ТабДокумент.Вывести(ОбластьНомера);
ОбластьИзображение = Макет.ПолучитьОбласть("Итого|КолонкаДляШирины");    
ОбластьИзображение.ТекущаяОбласть.ШиринаКолонки = 200;
ТабДокумент.Присоединить(ОбластьИзображение);

Что я делаю не так? Как сделать, чтобы и во втором случае ширина колонки менялась?
1 kosts
 
04.12.12
13:11
(0) Изменить ширину непосредственно в ТабДокумент
2 supervk
 
04.12.12
13:19
(1) Это упрощённый пример, в оригинале программно добавляются колонки разной ширины, поэтому желательно менять их через изменение колонки в области. Это же должно работать?
3 kosts
 
04.12.12
13:27
Задавай ширины не в конце когда итог выводишь, а в начале, когда шапку выводишь.
4 kosts
 
04.12.12
13:28
И тут проверь что это за текущая область ОбластьИзображение.ТекущаяОбласть

попробуй использовать ОбластьИзображение.Область(<адрес>)
5 supervk
 
04.12.12
13:31
Помогла очистка области изображения перед установкой ширины:

ОбластьИзображение.Очистить();

Т.е. вот так работает:

ТабДокумент = Новый ТабличныйДокумент;
ОбластьНомера = Макет.ПолучитьОбласть("Итого|НомерСтроки");
ТабДокумент.Вывести(ОбластьНомера);
ОбластьИзображение = Макет.ПолучитьОбласть("Итого|КолонкаДляШирины");    
ОбластьИзображение.Очистить();
ОбластьИзображение.ТекущаяОбласть.ШиринаКолонки = 200;
ТабДокумент.Присоединить(ОбластьИзображение);

:-\
6 kosts
 
04.12.12
13:36
(5)
ТабличныйДокумент (SpreadsheetDocument)
ТекущаяОбласть (CurrentArea)
Описание:
Тип: ОбластьЯчеекТабличногоДокумента. Содержит текущую активную область

Неправильно используешь ТекущаяОбласть, но видимо костыль помог.
7 supervk
 
05.12.12
04:52
Сделал

ОбластьКолонкаИзображение = Макет.Область("КолонкаДляШирины");
ОбластьКолонкаИзображение.ШиринаКолонки = 200;

Так, наверное, правильно. И работает без очистки области.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.