Имя: Пароль:
1C
1С v8
программное изменение печатной формы
0 Zoopst
 
31.05.12
15:04
Всем добрый день!

Есть печатная форма с табличной частью.
Надо, в зависимости от определенного условия, либо выделить жирным строку таблицы, либо оставить как в макете.

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

...
   Область = Макет.ПолучитьОбласть("Элемент");

   НовыйШрифт = Новый Шрифт (Область.ТекущаяОбласть.Шрифт,,,Истина); // получили такой же шрифт, но жирный

   // Выборка номенклатуры.
   Пока ВыборкаСтрок.Следующий() Цикл
       Если ВыборкаСтрок.Параметр>0 Тогда
             Область.ТекущаяОбласть.Шрифт = НовыйШрифт;
               КонецЕсли;
       Область.Параметры.Заполнить(ВыборкаСтрок);
       ТабДокумент.Вывести(Область);
       
   КонецЦикла;
...


Что не так?
1 Buster007
 
31.05.12
15:08
мне кажется, что надо сначала вывести, а потом менять шрифт.
2 Buster007
 
31.05.12
15:09
+(1) но после вывода, получать область по параметру Область будет неверно
3 Wobland
 
31.05.12
15:10
так работает:
       Область2.Область("R1C7").ЦветФона=?(Выборка.Отдел>0, ЖёлтыйЦвет, БелыйЦвет);
       ТабДок.Вывести(Область2);
4 Zoopst
 
31.05.12
15:36
Область2.Область("R1C7").ЦветФона=?(Выборка.Отдел>0, ЖёлтыйЦвет, БелыйЦвет);

так работает но криво.

вместо раскрашивания текущей ячейки добавляет ряд строк и в последней раскрашивает
5 Wobland
 
31.05.12
15:48
(4) врёшь ведь. у меня R1
6 Zoopst
 
31.05.12
15:48
никто не в курсе почему теперь лишние строки добавляются и шрифт меняется только в последней
а текущая строка как есть так и осталась
7 Zoopst
 
31.05.12
15:49
Область = Макет.ПолучитьОбласть("Элемент");

   НовыйШрифт = Новый Шрифт (Область.ТекущаяОбласть.Шрифт,,,Истина); // получили такой же шрифт, но жирный

   // Выборка номенклатуры.
   Пока ВыборкаСтрок.Следующий() Цикл
       
       Область.Параметры.Заполнить(ВыборкаСтрок);
       //Область.Параметры.НомерСтроки = Ном;
       
       Если ВыборкаСтрок.ЗаголовокПеречня=1 Тогда
           Область.Область("R7C3").Шрифт = НовыйШрифт;
       КонецЕсли;    
         ТабДокумент.Вывести(Область);

   КонецЦикла;



При таком варианте в ячейке R7C3 шрифт меняется, но не в текущей строке таблицы а в новой строке, которая добавляется после текущей
8 Wobland
 
31.05.12
15:52
(7) а в седьмой. а в области у тебя одна строка
9 Zoopst
 
31.05.12
16:00
вроде получилось

надо было вместо

Область.ТекущаяОбласть.Шрифт = НовыйШрифт;

писать

Область.Область().Шрифт = НовыйШрифт;

меняется для всей строки.


Правда непонятно как с отдельными ячейками быть
10 Zoopst
 
31.05.12
16:01
Вот непонятно почему

Область.Область().Шрифт = НовыйШрифт;

отрабатывает нормально, а

Область.Область("R7C3").Шрифт = НовыйШрифт;

добавляет лишние пустые строки
11 Wobland
 
31.05.12
16:03
(10) перевести (8)?
12 Zoopst
 
31.05.12
16:12
???

получается так

текст11  текст12  текст13  текст14  текст15
<пустая строка>
<пустая строка>
<пустая строка>
<пустая строка>
<пустая строка>
<пустая строка с измененным шрифтом в ячейке>

текст21  текст22  текст23  текст24  текст25
<пустая строка>
<пустая строка>
<пустая строка>
<пустая строка>
<пустая строка>
<пустая строка с измененным шрифтом в ячейке>
13 Zoopst
 
31.05.12
16:13
всего строк в таблице 9 колонок 5

почему добавляется 6 строк и в 6-й меняется шрифт
14 Wobland
 
31.05.12
16:17
(13) смотри на количество строк в _области_. у тебя седьмой строки там нет, оно тебе и добавляет. ты ж седьмую просил ;)
15 Zoopst
 
31.05.12
16:27
Ага.  теперь все нормально

Спасибо
2 + 2 = 3.9999999999999999999999999999999...