Имя: Пароль:
1C
 
Изменить цвет фона ячейки заполненного параметра
0 myr4ik07
 
27.07.16
15:59
Есть табличный документ.
в нем заполняю параметры

ОбластьДетальныхЗаписей.Параметры.НомерЗаказа = ВыборкаДетальныеЗаписи.НомерЗаказа;

и я хочу эту же ячейку программно фон изменить, а как это сделать?
1 Ёпрст
 
гуру
27.07.16
16:00
.ЦветФона = WebЦвета.Красный;
2 myr4ik07
 
27.07.16
16:12
(1) от какого объекта свойство это искать? Я понимаю, что Цвет фона
3 Ёпрст
 
гуру
27.07.16
16:12
(2) у области таблицы
4 Ёпрст
 
гуру
27.07.16
16:12
вестимо
5 Ёпрст
 
гуру
27.07.16
16:13
хочешь, всю её крась, хочешь, огранич конкретной областью/ячейкой.
6 myr4ik07
 
27.07.16
16:13
(3) ОбластьДетальныхЗаписей.ТекущаяОбласть.ЦветФона ?
7 myr4ik07
 
27.07.16
16:13
(5) мне нужно конкретно эту ячейку, в которую я только что запердячил параметр
8 Ёпрст
 
гуру
27.07.16
16:19
(6) нет. Либо по имени области (если задана) либо через .Область(номер строки, номер колонки, номерстроки, номер колонки). цветФона
9 myr4ik07
 
27.07.16
16:22
(8) а как же получить имя области куда я залупашил параметр?
10 hhhh
 
27.07.16
16:25
(6) это исходный макет. В нем можешь для тренировки только покрасить.
11 Ёпрст
 
гуру
27.07.16
16:25
(9) никак.
12 myr4ik07
 
27.07.16
16:27
(11) о, смотри, я ж хочу в зависимости от содержимого параметра изменять цвет фона в ячейку куда было положено значения параметра.

как мне в таком случаи с данной ситуации выйти?
13 hhhh
 
27.07.16
16:28
(12) имеет смысл две ячейки в макете иметь, покрашенную и непокрашенную

и перенсишь в табдок ту ячейку, которую надо.
14 Ёпрст
 
гуру
27.07.16
16:28
(12) и ? Что мешает то ?
15 Ёпрст
 
гуру
27.07.16
16:28
(13) занафига ?
16 myr4ik07
 
27.07.16
16:29
(14) не могу поняьт как это сделаьть )
17 myr4ik07
 
27.07.16
16:35
откройте секрет, как задачу решить?
18 Ёпрст
 
гуру
27.07.16
16:36
(16) да ё, назначь ИМЯ области, например, Вася ,далее в коде так, например:

    ТабДок = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("Макет");
    Область = Макет.ПолучитьОбласть("Строка");
    Область.Области.Вася.ЦветФона = WebЦвета.Красный;
    ТабДок.Вывести(Область);
19 Ёпрст
 
гуру
27.07.16
16:38
Ну или по адресу нужной ячейки:

    ТабДок = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("Макет");
    Область = Макет.ПолучитьОбласть("Строка");
    Область.Области.Вася.ЦветФона = WebЦвета.Красный;
    Область.Область(1,2,1,2).ЦветФона = WebЦвета.Желтый;
    ТабДок.Вывести(Область);
20 Ёпрст
 
гуру
27.07.16
16:41
Или крась потом, в самом ТабДок:

    ТабДок = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("Макет");
    Область = Макет.ПолучитьОбласть("Строка");
    Область.Области.Вася.ЦветФона = WebЦвета.Красный;
    Область.Область(1,2,1,2).ЦветФона = WebЦвета.Желтый;
    ТабДок.Вывести(Область);
    
    ТабДок.Область(ТабДок.ВысотаТаблицы,3,ТабДок.ВысотаТаблицы,3).Текст = "Вася";
    ТабДок.Область(ТабДок.ВысотаТаблицы,3,ТабДок.ВысотаТаблицы,3).ЦветФона = WebЦвета.Аквамарин;
21 Ёпрст
 
гуру
27.07.16
16:42
в общем, развлекайся.

Можешь, еще и искать по значению или по тексту нужную область.
22 myr4ik07
 
27.07.16
16:42
(21) ну так я ж параметр заполняю, а не область, у меня вот какой бред
http://paste1c.ru/ym4
23 Ёпрст
 
гуру
27.07.16
16:44
(22) как всё запущенно
24 myr4ik07
 
27.07.16
16:45
(23) та перестань, есть нюансы почему использую макет - как вывод отчета, поверь
25 myr4ik07
 
27.07.16
16:46
(23) ты лучше совет дай, как в моей каше вот так красиво как ты здесь (20) написал сделать
26 Ёпрст
 
гуру
27.07.16
16:48
(25) открой макет, найди нужную ячейку. Задай ей имя человечье(заместо R2..C4..), затем  смотри (18)
27 myr4ik07
 
27.07.16
16:54
(26) я чего то не доганяю, есть http://prntscr.com/by6i3j
обращаюсь
http://prntscr.com/by6ij9
и по чем мне ориентировать какое значение установлено?
28 myr4ik07
 
27.07.16
16:56
как мне обойти две драные колонки и сравнить одну колонку с другой по строке и если есть какая то разница то одну драую колонку цвет фона изменить?
29 Ёпрст
 
гуру
27.07.16
16:58
(27) ясен пень. В макете же нет текста у ячейки!
Ты его не задал там еще.
30 Ёпрст
 
гуру
27.07.16
16:58
(28) циклом
31 Ёпрст
 
гуру
27.07.16
17:02
Если ЗначениеЗаполнено(ПланФакт[0].ДатаФакт) Тогда
                ОбластьДетальныхЗаписей.Найти
                    //ОбластьДетальныхЗаписей.Области.Детали.ЦветФона = WebЦвета.ЗеленаяЛужайка;
                    //ОбластьДетальныхЗаписей.ТекущаяОбласть.ЦветФона = WebЦвета.Фиолетовый;

ОбластьДетальныхЗаписей.Область(1,8,1,8).ЦветФона = WebЦвета.Фиолетовый;



            КонецЕсли;
32 myr4ik07
 
27.07.16
17:02
(29) т.е. параметр заполняю + паралельно з фиксированной ячейки и до низу для каждого параметра заполняю тест?
33 Ёпрст
 
гуру
27.07.16
17:04
(32) ё..
34 myr4ik07
 
27.07.16
17:04
(31) впрочем, что то нарисовуется решение, пойду играться, спасибо
35 Ёпрст
 
гуру
27.07.16
17:04
делай как в (31) только выкини свой код оттуда.
36 myr4ik07
 
27.07.16
17:25
(35) глянь, http://prntscr.com/by6yil а тут же есть текст? почему тогда когда макет.обласьт("область").текст он пустой?
37 Ёпрст
 
гуру
27.07.16
17:28
(36) да уж... имя яейки не "область" вот и пусто
38 Ёпрст
 
гуру
27.07.16
17:29
и..ты где хоть смотришь то ? в Макете ? В Табличном документе ?
39 myr4ik07
 
27.07.16
17:30
(38) в макете, а макет это ж табличный документ
40 Ёпрст
 
гуру
27.07.16
17:33
(39) как тебе сказать то попроще. Макет, это грубо говоря шаблон. Ты берешь из него нужную область, задаешь ей текст, параметр, можешь её покрасить и выводишь (рисуешь) в результирующий Табличный документ, который потом печатаешь или показываешь пользователю.

Либо ты можешь рисовать сразу в Табличном документе, не используя при этом шаблон-макет. А ручонками, через Область табличного документа задавать текст, расшифровки, параметры, цвет, границы и т.д..

Так яснее ?
41 myr4ik07
 
27.07.16
17:34
(38) я вот так попробовал     
Вниз = 8;
    //получаем итоги из запроса
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        
        ОбластьДетальныхЗаписей.Параметры.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
        ОбластьДетальныхЗаписей.Параметры.ОПзС = ВыборкаДетальныеЗаписи.ОПзС;
        ОбластьДетальныхЗаписей.Параметры.НомерЗаказа = ВыборкаДетальныеЗаписи.НомерЗаказа;
        
        ПланФакт = ПолучитьПланФактОтгрузки(ВыборкаДетальныеЗаписи.Ссылка);
        Если ПланФакт.Количество() <> 0 Тогда
            ОбластьДетальныхЗаписей.Параметры.Отгрузка = ПланФакт[0].ДатаФакт;
            //ОбластьДетальныхЗаписей.Область("R"+Вниз+"C7").Текст = ПланФакт[0].ДатаФакт;
            
            ОбластьДетальныхЗаписей.Параметры.ОтгрузкаПлан = ПланФакт[0].ДатаПлан;
            //ОбластьДетальныхЗаписей.Область("R"+Вниз+"C8").Текст = ПланФакт[0].ДатаПлан;
            
            //Если ЗначениеЗаполнено(ПланФакт[0].ДатаФакт) Тогда
            //        ОбластьДетальныхЗаписей.Область("R"+Вниз+"C7").ЦветФона = WebЦвета.ЗеленаяЛужайка;
            //        //ОбластьДетальныхЗаписей.ТекущаяОбласть.ЦветФона = WebЦвета.Фиолетовый;
            //КонецЕсли;
        КонецЕсли;
Вниз = Вниз + 1;
КонецЦикла

там где закомментировано имею ввиду. какие то дубляжи поехали
42 Ёпрст
 
гуру
27.07.16
17:34
Соответственно, ты либо заранее красишь нужную ячейку в шаблоне-макете и потом вставляешь её в Табличный документ, ИЛИ
вставляешь что-то в табличный документ и красишь уже потом область в табличном документе (а не в макете-шаблоне)
43 myr4ik07
 
27.07.16
17:35
(40) догнал, использую табдок, а потом вывожу в макет
44 Ёпрст
 
гуру
27.07.16
17:37
да ё..

вот так, для начала:

//        ОбластьДетальныхЗаписей.Область("R"+Вниз+"C7").ЦветФона = WebЦвета.ЗеленаяЛужайка;

        ОбластьДетальныхЗаписей.Область(1,1,1,1).ЦветФона = WebЦвета.Красный;
     ОбластьДетальныхЗаписей.Область(1,3,1,3).ЦветФона = WebЦвета.Желтый;
        ОбластьДетальныхЗаписей.Область(1,5,1,5).ЦветФона = WebЦвета.Зеленый;


Потом, придёт оно, просветление
45 myr4ik07
 
27.07.16
17:47
(44) )))))) ща почитаю о этих цифрах
46 myr4ik07
 
27.07.16
17:51
(44) ура ура ура, дошло ))))
ТабДок.Область("R8C8").Текст вот тут текст уже есть ))),


логично, я же заполняю параметры в ТабДок, а проверяю в макете
47 myr4ik07
 
27.07.16
17:58
(44) спасибо
48 myr4ik07
 
28.07.16
13:07
Вышло таким способом победить

..........................
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        //обнуляем полученную область от далее установленных форматов (шрифт, фон)
        ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");

это делаем для того, что бы потом не очищать формат вручную

ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
        
тут обычное заполнение з запроса параметрами

Если ПланФакт.Количество() <> 0 и ПланФакт[0].ДатаФакт > дата(1,1,1) тогда
            ОбластьДетальныхЗаписей.Область("R1C7").ЦветФона = WebЦвета.ЗеленоватоЖелтый;
            Если  НачалоДня(ПланФакт[0].ДатаПлан) < НачалоДня(ПланФакт[0].ДатаФакт) тогда
                ОбластьДетальныхЗаписей.Область("R1C7").ЦветТекста = WebЦвета.НасыщенноРозовый;
                ОбластьДетальныхЗаписей.Область("R1C7").Шрифт = Новый Шрифт(,,Истина);
            КонецЕсли;    
        КонецЕсли;

вот тут в условии мы каждый раз получаем область с макета, а и в зависимости от условия рисуем ячейку в макете, а это: 1-ая строка, 7-мая ячейка, так делаем каждый раз в цикле, мы типа к одной области добавили еще одну ту же область
    
        ТекОбласть = ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
        
    КонецЦикла;
49 Ёпрст
 
гуру
28.07.16
13:34
(48)

ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
    ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
    Если ПланФакт.Количество() <> 0 и ПланФакт[0].ДатаФакт > дата(1,1,1) тогда
        Область = ТабДок.Область(ТабДок.ВысотаТаблицы,7,ТабДок.ВысотаТаблицы,7);
        Область.ЦветФона = WebЦвета.ЗеленоватоЖелтый;
        Если  НачалоДня(ПланФакт[0].ДатаПлан) < НачалоДня(ПланФакт[0].ДатаФакт) тогда
            Область.ЦветТекста = WebЦвета.НасыщенноРозовый;
            Область.Шрифт = Новый Шрифт(,,Истина);
        КонецЕсли;    
    КонецЕсли;
КонецЦикла;