Имя: Пароль:
1C
1С v8
Программное изменение шрифта в макете
0 ghostrid3r
 
14.02.13
13:22
Добрый день подскажите пожалйста как програмно изменить шрифт в макете для родителя номенклатуры ( сделать его курсивом). При этом неизвестно точно в какой строке будет стоять родитель, он может быть в первой в 20, 50 и т.д.(как пример). Есть цикл который обходит выборку с итогами по родителю, и как только он попал на родителя ему нужно изменить шрифт. вывели родителя и опять изменили шрифт на обычный. Цикл вывода в макет.

   Пока ВыборкаРодитель.Следующий() Цикл
       ОбластьМеню.ТекущаяОбласть.Шрифт = Новый Шрифт(,,Истина, Истина);
       ОбластьМеню.Параметры["Наименование" + НомерСтроки] = ?(ВыборкаРодитель.Родитель.Наименование = "Продукты питания", "Дополнительные блюда", ВыборкаРодитель.Родитель.Наименование);
       Выборка = ВыборкаРодитель.Выбрать();
       Пока Выборка.Следующий() Цикл
           ОбластьМеню.ТекущаяОбласть.Шрифт = Новый Шрифт(,,Ложь, Ложь);
           НомерСтроки = НомерСтроки + 1;
           ОбластьМеню.Параметры["Выхлоп" + НомерСтроки] = Выборка.Количество;
           ОбластьМеню.Параметры["цена" + НомерСтроки] = Выборка.ценарозн;
           ОбластьМеню.Параметры["Наименование" + НомерСтроки] = Выборка.Номенклатура.Наименование;
       КонецЦикла;
       НомерСтроки = НомерСтроки + 3;
   КонецЦикла;
   ЭлементыФормы.Результат.Вывести(ОбластьМеню);
   ЭлементыФормы.Результат.Вывести(ОбластьПодвал);
1 Галахад
 
гуру
14.02.13
13:23
Проще итоги выводить в другой области.
2 SherifSP
 
14.02.13
13:26
(0) Нельзя так, есть только 1 метод
3 ghostrid3r
 
14.02.13
13:26
(1) в какой другой области? просто нужно чтобы в макет вывелся родитель а след строки под ним номенклатура. далее когда другой родитель отделился 2 пустыми строками и так далее.
4 SherifSP
 
14.02.13
13:27
(0) Это вывести рядом с выводимой областью еще 1 область с теми же параметрами и вручную присвоить шрифт этой области, выводить ее в зависимости со своим условием
5 Галахад
 
гуру
14.02.13
13:30
(3) Ну или как вариант.
Вначале вывести область, а уж затем ее украшать.
6 НЕА123
 
14.02.13
13:44
(0)
   ЭлементыФормы.Результат.Вывести(ОбластьМеню);
   ЭлементыФормы.Результат.Вывести(ОбластьПодвал);
это разве вне цикла?
7 goleaff2006
 
14.02.13
13:47
делай проверку при выводе Номенклатура.родитель .пустая и меняй шрифт.
8 НЕА123
 
14.02.13
13:49
ОбластьМенюРОдитель = ПолучитьОбласть("областьМеню")
      ОбластьМенюРОдитель.Область().Шрифт = Новый Шрифт(,,Истина, Истина);
ОбластьМенюЭл = ПолучитьОбласть("областьМеню")

      ОбластьМенюЭл.Область().Шрифт = Новый Шрифт(,,Ложь, Ложь);

и лучше перед циклом
9 Evrepid
 
14.02.13
14:09
2 (7) Не совсем так, Т.к. группа может быть не на 0-м уровне, а значительно ниже.

Надо искать по более сложному признаку, например по ЭтоГруппа() для иерархии групп и подчиненность если иерархия элементов.

Как то так.