Имя: Пароль:
1C
1С v8
Опять про ЦветФона в табличном документе
0 nola
 
19.01.12
08:33
Прошу сильно не пинать ногами. Поиск дал много ссылок, в соответствии с ними и действовала.    
   
ИмяТекОбл = ТабДок.ТекущаяОбласть.Имя;
Поз = Найти(ИмяТекОбл,"C");
ИмяВсейСтроки=Лев(ИмяТекОбл,Поз-1);
ТабДок.Область(ИмяВсейСтроки).ЦветФона = WebЦвета.Бежевый;

по отладчику ТабДок.Область(ИмяВсейСтроки) имеет тип ОбластьЯчеекТабличногоДокумента, как нужно. Так же в отладчике вижу, что цвет установился.
До приведенного момента используются конструкции ТабДок.Присоединить(Секция, , "Профвзносы", Истина), т.к. я их программно группирую.
Выведенный документ все равно остается белым. Что еще я упустила? надо теперь как-то вывести эту раскрашенную строку?
Релиз платформы 8,2,13,219. Да, новичок в 8.
1 nola
 
19.01.12
09:27
ну хорошо, запинайте, только ткните носом сначала...
2 Wobland
 
19.01.12
09:31
1. Показать() же после всего этого делается?
2. почему бы при выводе сразу не красить?
3. а где оно?
3 hhhh
 
19.01.12
09:38
(0) ИМХО лучше не париться, а сразу делать в зависимости от условий

ТабДок.Присоединить(СекцияПрокрашенная, , "Профвзносы", Истина),

или

ТабДок.Присоединить(СекцияНепрокрашенная, , "Профвзносы", Истина),
4 nola
 
19.01.12
09:47
(2)
Да, ТабДок.Показать() в самую последнюю очередь. Общая структура кода примерно так:

   Макет = ПолучитьМакет("Макет1");
   
   ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок|ОснОбласть");
   
   ТабДок = Новый ТабличныйДокумент;
   
   ТабДок.Очистить();
   ТабДок.Вывести(ОбластьЗаголовок);
   ВыборкаГрупп = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, ,);
   ВыводКолонок(ТабДок,ВыборкаГрупп,"ШапкаТаблицы");
   
   ВыборкаДетальныеЗаписи = Результат.Выбрать();
   
   Красить=Ложь;
   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
       ВыводКОлонок(ТабДок,ВыборкаДетальныеЗаписи,"Детали",Красить);
       Красить = не Красить;
   КонецЦикла;
   
   ТабДок.Защита = Истина;
   ТабДок.ТолькоПросмотр = Истина;
   ТабДок.Показать();


Процедура ВыводКолонок(ТабДок,СТрокаТЗ, область,Красить=Ложь)

   Секция = макет.ПолучитьОбласть(область+"|ОснОбласть");
   Секция.Параметры.Заполнить(СТрокаТЗ);
   
   ТабДок.Вывести(Секция,0,,Истина);
   
   ТабДок.НачатьГруппуКолонок("Профвзносы");
   Для Каждого текСтрока из ТППрофвзносы цикл
       Секция = Макет.ПолучитьОбласть(область+"|Профвзносы");
       Секция.Параметры.ДляПарам = СформироватьПараметрыВТабДок(Область,строкаТЗ,текСтрока);
       Если область = "Детали" тогда
           Секция.Параметры.РасшПарам = текСтрока.Колонка1.ссылка;
       КонецЕсли;
       ТабДок.Присоединить(Секция, , "Профвзносы", Истина);
   КонецЦикла;
   ТабДок.ЗакончитьГруппуКолонок();

   Если Красить тогда
       ИмяТекОбл = ТабДок.ТекущаяОбласть.Имя;
       Поз = Найти(ИмяТекОбл,"C");
       ИмяВсейСтроки=Лев(ИмяТекОбл,Поз-1);
       ТабДок.Область(ИмяВсейСтроки).ЦветФона = WebЦвета.Бежевый;
   КонецЕсли;
   
КонецПроцедуры
5 Wobland
 
19.01.12
09:48
(4) дык у тебе цвет после вывода присваивается
6 nola
 
19.01.12
09:50
даже если я помещаю этот кусок до цикла - никакой разницы
7 Wobland
 
19.01.12
09:52
Секция.Область().ЦветФона
Присоединить()
8 Wobland
 
19.01.12
09:53
Область2.Область("R1C7").ЦветФона=?(Выборка.Отдел>0, ЖёлтыйЦвет, БелыйЦвет);
ТабДок.Вывести(Область2);
9 vmv
 
19.01.12
09:54
(3) прав, зачем думать о свойствах и цетах программно, если в макете можно сделать разные по цвету секции с идентичным набором параметров и уже по условию выводим.

красненькие - ляпотя
10 Wobland
 
19.01.12
09:56
(9) иногда проще пару лишних строк сделать, чем десяток лишних областей ;)
11 nola
 
19.01.12
09:58
(9) ну в семерке такого не было, хотела "пощупать" хотя бы.
12 hhhh
 
19.01.12
09:59
(11) попробуй

    ТекОбласть = ТабДок.ПолучитьОбласть(ИмяВсейСтроки);
ТекОбласть.ЦветФона = WebЦвета.Бежевый;
13 nola
 
19.01.12
10:02
(7,8) Даже вот так делаю:


   ТабДок.НачатьГруппуКолонок("Профвзносы");
   Для Каждого текСтрока из ТППрофвзносы цикл
       Секция = Макет.ПолучитьОбласть(область+"|Профвзносы");
       Секция.Параметры.ДляПарам = СформироватьПараметрыВТабДок(Область,строкаТЗ,текСтрока);
       Если область = "Детали" тогда
           Секция.Параметры.РасшПарам = текСтрока.Колонка1.ссылка;
       КонецЕсли;
       Если Красить тогда
           ИмяТекОбл = Секция.ТекущаяОбласть.Имя;
           Поз = Найти(ИмяТекОбл,"C");
           ИмяВсейСтроки=Лев(ИмяТекОбл,Поз-1);
           Секция.Область(ИмяВсейСтроки).ЦветФона = WebЦвета.Бежевый;
       КонецЕсли;
       
       ТабДок.Присоединить(Секция, , "Профвзносы", Истина);
   КонецЦикла;
   ТабДок.ЗакончитьГруппуКолонок();
14 nola
 
19.01.12
10:03
(12) насколько я понимаю, ПолучитьОбласть() мне вернет ТабличныйДокумент,а не ОбластьЯчеекТабличногоДокумента
15 vmv
 
19.01.12
10:03
авторгуппировка строк мож влияет если задана, ну там когда дерево строиться, так ляпнул - а вдруг
16 nola
 
19.01.12
10:03
очень жаль, что в документации не встречается пример использования с описанием всех условий.
17 Wobland
 
19.01.12
10:04
(14) посмотри на моё "R1C7" - это ж в цикле делается
18 vmv
 
19.01.12
10:06
ИмяВсейСтроки и Секция что-то мне навеваю грусть как-то неочевидно что это и что же Присоединяют.
19 nola
 
19.01.12
10:07
в цикле присоединяется по одной ячейке. Бог с ним, хоть одна бы прокрасилась, дальше легче.
20 Wobland
 
19.01.12
10:08
(19) Секция.Область("R1C1").ЦветФона уже попробовала?
21 kosts
 
19.01.12
10:08
У меня вот так работает


ОбластьШапка.Область().ЦветФона = WebЦвета.Бежевый;
Шапка.Вывести(ОбластьШапка);
22 vmv
 
19.01.12
10:10
(19) если ничего не получается, то комментим все чОткие условия, с простите, хрен знаем чем и делаем тупейший цикл с простейшим условием, присоединением и покраской - получилось?

тогда раскоменчиваем осторожно условия и наворачиваем.

я так делаю
23 nola
 
19.01.12
10:12
так, что-то получилось. ща посмотрим
24 nola
 
19.01.12
10:12
спасибо всем большое, помогли. Разберусь и отпишусь.
25 Wobland
 
19.01.12
10:12
(24) этого мало будет
26 kosts
 
19.01.12
10:14
Тут косяк скорее всего -> Секция.ТекущаяОбласть.Имя
27 Cube
 
19.01.12
10:15
(0) Вот простой наглядный пример: http://up.optizone.ru/626774
28 Cube
 
19.01.12
10:16
+(27) Код:

ЭлементыФормы.Результат.Очистить();
   Макет = ПолучитьМакет("Макет");
   ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
   
   Раскрашивать = Ложь;
   Для НомерСтроки = 1 По 10 Цикл
       Если Раскрашивать Тогда
           ОбластьСтрока.Область("РаскрашиваемаяОбласть").ЦветФона = ЦветаСтиля.СтатусОтклонен;
       Иначе
           ОбластьСтрока.Область("РаскрашиваемаяОбласть").ЦветФона = Новый Цвет;
       КонецЕсли;
       ОбластьСтрока.Параметры.НомерСтроки = НомерСтроки;
       ЭлементыФормы.Результат.Вывести(ОбластьСтрока);
       Раскрашивать = НЕ Раскрашивать;
   КонецЦикла;
29 nola
 
19.01.12
10:17
я думаю, что все-таки дело было в том, что раскраска делалась после вывода в документ или присоединения.
Меня сбили с толку высказывания, что раскрасить можно и после вывода. Например, тут v8: v8: Как покрасить область с табличном документе? колодина говорит, что у нее вот так работает:
Ячейки = ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетали.Уровень());
       //Область = ТабДок.Область(номер_строки+кво_строк,2,номер_строки+кво_строк,7);

       Область = ТабДок.Область(ячейки.верх,ячейки.лево,ячейки.низ,ячейки.право);

       если ВыборкаДетали.ЕстьБлокировка = Истина тогда
           Область.ЦветФона = WebЦвета.Розовый;
       конецесли;
30 Cube
 
19.01.12
10:17
+(27) В макете ячейкам, которые должны раскрашиваться, присвоено имя "РаскрашиваемаяОбласть".
31 nola
 
19.01.12
10:18
(28) а "РаскрашиваемаяОбласть" - это в макете задано?
32 Wobland
 
19.01.12
10:18
и вообще

Тематическая ветка форума подобна нераспустившейся розе, которую нужно осветить солнцем, помочь ей подняться. Только когда вопрос уже решён, девушке можно намекнуть про фотку... И тогда распустившаяся роза будет прекрасна!
33 nola
 
19.01.12
10:18
))
34 kosts
 
19.01.12
10:18
(29) Тут все правильно
35 Cube
 
19.01.12
10:18
(31) Смотри (30) :)
36 vmv
 
19.01.12
10:18
(27) ыыы, я думал там картинка, качать еще - некрасиво!)
37 nola
 
19.01.12
10:19
(32) поззия пропадает без вас!)) вот приведу в желаемый вид и распущусь)) Спасибо, ребята, правда очень помогли!
38 Cube
 
19.01.12
10:20
(36) И что ты хотел увидеть на картинке? Скрин, что у меня всё работает?))) А как работает это другой вопрос?)
39 nola
 
19.01.12
10:20
(34) т.е. она после этого места еще где-то Вывести() делает?
40 Wobland
 
19.01.12
10:22
(39) ага.
41 Wobland
 
19.01.12
10:22
(37) обещать вы все горазды ;)
42 Cube
 
19.01.12
10:24
Кстати, да! Фотку надобно в профиль вставить... :)
43 nola
 
19.01.12
10:27
все понятно, я не обратила внимания на Ячейки = ТабДок.Вывести(...), как раз туда и возвращается ОбластьЯчеекТабличногоДокумента.
44 vmv
 
19.01.12
10:32
ок, если все в порядко, то осталось выучить пустячок

http://www.gorodpavlodar.kz/Forums.html&file=viewtopic&t=2642
45 nola
 
19.01.12
11:02
обнаружила, что можно сделать просто вот так:
ТабДок.Вывести(Секция,0,,Истина).ЦветФона = WebЦвета.Бежевый;
или вот так:
ТабДок.Присоединить(Секция, , "Отпуска", Истина).ЦветФона = WebЦвета.Бежевый;
46 Wobland
 
19.01.12
11:04
(45) и сразу распустилась?
47 Cube
 
19.01.12
11:09
(45) В этом случае у тебя закрашивается строка целиком, даже ячейки, которые пустые. В моем примере закрашиваются только те ячейки, которые я хочу закрасить.
48 nola
 
19.01.12
11:30
(46) дабы опровергнуть стереотип
(47) да, мне и нужна вся строка, значения не рассматриваю. И раскрашивается она все равно по секциям, хотя хотелось одним оператором сразу всю.
49 Wobland
 
19.01.12
11:32
ой, какая девушка! держите мои глаза, они слепнут