Имя: Пароль:
1C
1С v8
УФ Раскрасить отдельную ячейку в табличной части дкоумента
,
0 Aswed
 
09.12.16
11:51
САБЖ
Ткните носом как сделать. Поиск что то ничего не выдал.
1 Torquader
 
09.12.16
11:53
ПриВыводеСтроки - ОформлениеСтроки.Ячейки и т.д.
2 kochurovg
 
09.12.16
11:56
Свойство формы "УсловноеОформление"
3 Aswed
 
09.12.16
11:56
Забыл сказать что табличную часть рисую динамически.
В итоге в УсловномОформлении нельзя указать условия расцветки для этих ячеек.
4 Aswed
 
09.12.16
11:56
(1) При выводе строки нет в УФ
5 LeReve
 
09.12.16
12:01
(4) в уф только условное оформление
6 Defender aka LINN
 
09.12.16
12:16
(3) Как связаны между собой эти предложения?
7 FIXXXL
 
09.12.16
12:18
(3) формируй условное оформление программно при создании твоих программных колонок
делал такое, работает
8 catena
 
09.12.16
12:22
(3)Это почему это?
9 shpioleg
 
09.12.16
12:51
(3) Можно сделать у формы дополнительный реквизит для условного оформления. В коде вычисляются значения этого реквизита, а условное оформление, используя его содержимое, раскрашивает нужную ячейку в строке.
10 Aswed
 
09.12.16
13:02
(7) Блин точно! Программно!!!
Спасибо, а я уперся в прямые настройки.
11 Aswed
 
09.12.16
13:03
(9) Интересно. А как это?
12 shpioleg
 
09.12.16
15:08
(11) Например, как я делал.
Есть таблица ходов шахматной партии. Чтобы подсвечивать не всю строку, а отдельно ход белых/черных я на форму кинул вспомогательный булевский реквизит УОПолуход, который заполняется в коде при активизации ячейки ,УОПолуход = ТекущийПолуход%2;
В условном оформлении настроил условия на колонки белых и черных, используя реквизит формы УОПолуход. Для колонки белых УОПолуход = Истина, а для черных УОПолуход = Ложь.
Таким образом, при клике мышки по ячейке таблицы срабатывает обработчик ПриАктивизацииЯчейки и кликнутая ячейка выделяется.
13 Aswed
 
09.12.16
15:27
(12) Аааааааа понятно.
У меня же количество колонок не известно и может быть любым.
14 Aswed
 
09.12.16
16:42
Ткните носом что не правильно?
Уже час сижу пялюсь и не могу понять

        ЭлементМассива = МассивДобавляемыхРеквизитов.Получить(Т);
             ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
            ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
            ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ТаблицаДанныхНоменклатура");
            ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
            ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Таблицаданных.Количество");
            ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
            ЭлементОтбора.ПравоеЗначение = 10;
            ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.СеребристоСерый);
15 shpioleg
 
09.12.16
17:06
(14) Ну, выглядит правильно. Может это поможет?
http://catalog.mista.ru/public/181336/
16 Aswed
 
09.12.16
17:33
В общем вот так работает

        ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
        ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
        ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ТаблицаДанныхЦена");
        ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТаблицаДанных.Цена");
        ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
        ЭлементОтбора.ПравоеЗначение = 15;
        ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.СеребристоСерый);
17 Aswed
 
09.12.16
17:34
А вот так не работает

        ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
        ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
        ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ТаблицаДанныхЦена");
        ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ТаблицаДанных"+Реквизит.Имя);
        ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТаблицаДанных.Цена");
        ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
        ЭлементОтбора.ПравоеЗначение = 15;
        ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.СеребристоСерый);
18 Aswed
 
09.12.16
17:35
Хотя поле "ТаблицаДанных"+Реквизит.Имя
это программно добавленное поле в эту табличную часть на форме
19 Aswed
 
09.12.16
17:36
Вот так его создаю

        НовыйЭлемент = ЭтаФорма.Элементы.Добавить(Реквизит.Имя, Тип("ПолеФормы"), Элементы["Группа_" + ПолучитьИдентификаторЭлементаПоИмени(Реквизит.Имя)]);
        НовыйЭлемент.Заголовок                   = Реквизит.Заголовок;
        НовыйЭлемент.ПутьКДанным                 = "ТаблицаДанных." + Реквизит.Имя;
        НовыйЭлемент.Вид                          = ВидПоляФормы.ПолеВвода;
        НовыйЭлемент.Ширина                        = 2;
        НовыйЭлемент.РастягиватьПоГоризонтали     = Ложь;
        НовыйЭлемент.УстановитьДействие("ПриИзменении", "Подключаемый_ПриИзмененииЗначения");
        НовыйЭлемент.ТолькоПросмотр                = Истина;
20 Aswed
 
09.12.16
17:37
Вот целиком кусок когда

        НовыйЭлемент = ЭтаФорма.Элементы.Добавить(Реквизит.Имя, Тип("ПолеФормы"), Элементы["Группа_" + ПолучитьИдентификаторЭлементаПоИмени(Реквизит.Имя)]);
        НовыйЭлемент.Заголовок                   = Реквизит.Заголовок;
        НовыйЭлемент.ПутьКДанным                 = "ТаблицаДанных." + Реквизит.Имя;
        НовыйЭлемент.Вид                          = ВидПоляФормы.ПолеВвода;
        НовыйЭлемент.Ширина                        = 2;
        НовыйЭлемент.РастягиватьПоГоризонтали     = Ложь;
        НовыйЭлемент.УстановитьДействие("ПриИзменении", "Подключаемый_ПриИзмененииЗначения");
        НовыйЭлемент.ТолькоПросмотр                = Истина;
        
        ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
        ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
        ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ТаблицаДанныхЦена");
        //ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ТаблицаДанных"+Реквизит.Имя);
        ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТаблицаДанных.Цена");
        ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
        ЭлементОтбора.ПравоеЗначение = 15;
        ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.СеребристоСерый);
21 FIXXXL
 
09.12.16
18:06
(17)
не работает
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ТаблицаДанных"+Реквизит.Имя);

а так:
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ТаблицаДанных."+Реквизит.Имя);
22 FIXXXL
 
09.12.16
18:08
кароч:

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


&НаСервере
Процедура СоздатьЭлементУО(Знач ЛевоеЗначение, Знач ПравоеЗначение, Знач ЦветУО, Знач МассивПолейОформления,ВидСравненияУО=Неопределено)

    ЭлементОформления = УсловноеОформление.Элементы.Добавить();
    //условие отбора
    ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ЛевоеЗначение);
    ЭлементОтбора.ВидСравнения = ?(ВидСравненияУО=Неопределено,ВидСравненияКомпоновкиДанных.Равно,ВидСравненияУО);
    ЭлементОтбора.ПравоеЗначение = ПравоеЗначение;//Новый ПолеКомпоновкиДанных(ПравоеЗначение);
    ЭлементОтбора.Использование = Истина;
    //цвет оформления
    ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", ЦветУО);    
    ЭлементОформления.Использование = Истина;    
    //поля оформления
    Для Каждого ПолеДляОформления из МассивПолейОформления Цикл
        ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
        ПолеОформления.Поле = Новый ПолеКомпоновкиДанных(ПолеДляОформления);
        ПолеОформления.Использование = Истина;
    КонецЦикла;
    
КонецПроцедуры
23 Aswed
 
20.12.16
11:54
Уже которую неделю бьюсь над мелочью и не могу понять что же все таки не так.
Вот код

//создаю реквизиты
        ИдентификаторЭлементаФормы = ПолучитьИдентификаторЭлементаФормы(ТО);
        
        ИмяРекивизита = "Признак_ТО__" + ИдентификаторЭлементаФормы;
        МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(ИмяРекивизита, Новый ОписаниеТипов("Булево"), "ТаблицаДанных", НСтр("ru = 'Прим.'")));     //Применимость


//создаю элементы формы
ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);
    
    Для каждого Реквизит Из МассивДобавляемыхРеквизитов Цикл
        //НовыйЭлемент = ЭтаФорма.Элементы.Добавить(Реквизит.Имя, Тип("ПолеФормы"), Элементы["Группа_" + ПолучитьИдентификаторЭлементаПоИмени(Реквизит.Имя)]);
        НовыйЭлемент = ЭтаФорма.Элементы.Добавить(Реквизит.Имя, Тип("ПолеФормы"), Элементы.ТаблицаДанных);
        НовыйЭлемент.Заголовок                   = Реквизит.Заголовок;
        НовыйЭлемент.ПутьКДанным                 = "ТаблицаДанных." + Реквизит.Имя;
        НовыйЭлемент.Вид                          = ВидПоляФормы.ПолеВвода;
        НовыйЭлемент.Ширина                        = 2;
        НовыйЭлемент.РастягиватьПоГоризонтали     = Ложь;
        НовыйЭлемент.УстановитьДействие("ПриИзменении", "Подключаемый_ПриИзмененииЗначения");
        НовыйЭлемент.ТолькоПросмотр                = Истина;

//пытаюсь поставить условное оформление
        //тестовое добавление        
        ЭлементОформления = УсловноеОформление.Элементы.Добавить();
        
        ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(НовыйЭлемент.Имя);
        ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
        ЭлементОтбора.ПравоеЗначение = Истина;
        ЭлементОтбора.Использование = Истина;
        
        ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.СеребристоСерый);
        ЭлементОформления.Использование = Истина;
                
        ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить();
        ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(НовыйЭлемент.Имя);
        
    КонецЦикла;


И она падла не работает!
Скоро головой буду биться об стену, ни как не могу понять где я ошибся.
24 Вафель
 
20.12.16
11:59
оформляется не реквизит формы. а поле с данными
25 Aswed
 
20.12.16
12:06
(24) В курсе.
Там все так и написано.
26 Aswed
 
20.12.16
12:10
Сам нашел!

Не верно указывал путь к полю для сравнения

Было

ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(НовыйЭлемент.Имя);

а правильно

ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(НовыйЭлемент.ПутьКДанным + "." + НовыйЭлемент.Имя);


Теперь не могу понять какого фига красит всю таблицу колонку целиком)))
27 aleks_default
 
20.12.16
12:15
Видимо условие не отрабатывает
28 Aswed
 
20.12.16
13:25
А как тогда задать условие?

        ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(НовыйЭлемент.ПутьКДанным + "." + НовыйЭлемент.Имя);
        ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
        ЭлементОтбора.ПравоеЗначение = Истина;
        ЭлементОтбора.Использование = Истина;

Вот так если пишу красит все.
Скотина!
29 Aswed
 
20.12.16
14:22
Нет все таки видимо я не верно задаю отбор.
Не срабатывает правило

ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(НовыйЭлемент.ПутьКДанным + "." + НовыйЭлемент.Имя);

Хотя и ошибки ни какой не выскакивает
30 Aswed
 
20.12.16
14:30
Млять! Победил!!

Верно так:

ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(НовыйЭлемент.ПутьКДанным);
        ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
        ЭлементОтбора.ПравоеЗначение = Истина;
        ЭлементОтбора.Использование = Истина;
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс