Изменение ширины колонки не всегда работает
☑
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;
Так, наверное, правильно. И работает без очистки области.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший