Имя: Пароль:
1C
1С v8
Как поменять шрифт в макете программно?
0 oslokot
 
27.12.13
14:31
Доброй всем пятницы!

Помогите новичку!
Вывожу строку в макет, хочу по условиям изменить шрифт в области.
В итоге получаю все строки жирные с курсивом. Хотя в цикле выполняется условие на обычный шрифт.
Что я делаю не так?

    ОбластьТовар = Макет.ПолучитьОбласть("Строка");

    мШрифт_Обычный = Новый Шрифт();
    мШрифт_Жирный = Новый Шрифт("Arial",8,Истина);
    мШрифт_Курсив = Новый Шрифт("Arial",8,,Истина);
    
    Для каждого ВыборкаСтрокТовары Из Объект.Товары Цикл

        // ТЧ "Товары" находятся в развернутом состоянии
        Если ГруппыРазвернуты Тогда
            // Группу не выводим
            Если ВыборкаСтрокТовары.ЭтоГруппа Тогда
                Продолжить;
            КонецЕсли;
            Если ВыборкаСтрокТовары.ИндексВГруппе = 0 Тогда
                ОбластьТовар.Область().Шрифт = мШрифт_Обычный;
            ИначеЕсли ВыборкаСтрокТовары.ИндексВГруппе = 1 Тогда
                ОбластьТовар.Область().Шрифт = мШрифт_Жирный;
            Иначе
                ОбластьТовар.Область().Шрифт = мШрифт_Курсив;                
            КонецЕсли;     
            
        КонецЕсли;
        // .......
        // .......
        ТабДокумент.Вывести(ОбластьТовар);
    КонецЦикла;
1 oslokot
 
27.12.13
14:47
всё, разобрался
Поместил в начало цикла:
ОбластьТовар = Макет.ПолучитьОбласть("Строка");
Теперь шрифт правильно устанавливается.

Это нормально вообще каждый раз получать область в цикле?
2 Kerk
 
27.12.13
14:51
(1) По идее нет.

Вместо
мШрифт_Обычный = Новый Шрифт();
Попробуй
мШрифт_Обычный = Новый Шрифт;
3 Kerk
 
27.12.13
14:55
И кстати, когда создаешь шрифт, ты хотябы по разному именовал бы их... а то все "Arial"....
4 oslokot
 
27.12.13
15:06
(2) (3)  пробовал, не помогает.
Только (1) помогло.

Хотя в клюшках (7.7) тоже, если происходит вывод строк в цикле, то область нужно сперва получить, поменять шрифт и потом вывести.