Имя: Пароль:
1C
 
Управляемые формы. ИИзменить цвет строки программно
0 Dimarik_1
 
14.07.18
10:15
Как можно программно изменить цвет конкретной строки в табличной части?
не надо, если сумма одной колонки отличается от другой, сделать строку в табличной части документа красной
1 sechs
 
14.07.18
10:24
Условным оформлением
2 Фрэнки
 
14.07.18
10:28
Способ решения будет зависеть от способа заполнения данных НА ФОРМЕ табличной части. Капс поставлен умышленно.
3 Dimarik_1
 
14.07.18
10:33
НоваяСтрока    = Форма.УсловноеОформление.Элементы.Добавить();
    //НоваяСтрока.Отбор = Новый ОтборКомпоновкиДанных;
    НовыйЭлементОтбора = НоваяСтрока.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    НовыйЭлементОтбора.Левоезначение = Новый ПолеКомпоновкиДанных("Объект.ОплатаПоРеализациям.СуммаДокументаРасчетов");
    НовыйЭлементОтбора.Правоезначение = Новый ПолеКомпоновкиДанных("Объект.ОплатаПоРеализациям.СуммаДолга");
    НовыйЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
    
    ЦветФона = НоваяСтрока.Оформление.Элементы.Найти("ЦветФона");
    ЦветФона.Значение = WebЦвета.Красный;
    ЦветФона.Использование = Истина;



Не заработало
4 sechs
 
14.07.18
10:40
.Использование
5 Dimarik_1
 
14.07.18
10:45
НоваяСтрока    = Форма.УсловноеОформление.Элементы.Добавить();
        НоваяСтрока.Использование = Истина;
    //НоваяСтрока.Отбор = Новый ОтборКомпоновкиДанных;
    НовыйЭлементОтбора = НоваяСтрока.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    НовыйЭлементОтбора.Левоезначение = Новый ПолеКомпоновкиДанных("Объект.рфсОплатаПоРеализациям.СуммаДокументаРасчетов");
    НовыйЭлементОтбора.Правоезначение = Новый ПолеКомпоновкиДанных("Объект.рфсОплатаПоРеализациям.СуммаДолга");
    НовыйЭлементОтбора.Использование = Истина;
    НовыйЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
    
    //НовоеПоле = НоваяСтрока.Поля.Элементы.Добавить();
    //НовоеПоле.Использование = Истина;
    //НовоеПоле = Новый ПолеКомпоновкиДанных("рфсОплатаПоРеализациямОбъектРасчетов");
    //
    ЦветФона = НоваяСтрока.Оформление.Элементы.Найти("ЦветФона");
    ЦветФона.Значение = WebЦвета.Красный;
    ЦветФона.Использование = Истина;



Для эксперимента попробовал поля добавить. не помогло
6 Фрэнки
 
14.07.18
10:52
(5) куда это все вставлено? виды событий какие, контексты какие.

Вообще, совет может не совсем в кассу, но если очень хочется играть с цветом ячеек и т.п., то гораздо эффектней сделать вывод на форме в поле табличного документа, а не пытаться юзать раскраску полей таблицы значений, либо дерева значений.

Кстати, можно заменить поле с таблицей значений на поле динамического списка, отработать все получение данных запросом и в этом же варианте установить условные оформления строк, практически на стандартном СКД
7 Dimarik_1
 
14.07.18
10:54
(6) я программно создал элемент формы и заполнил его. Сейчас потребовалось сделать условное оформление
8 Фрэнки
 
14.07.18
11:00
(7) понятно.

Имхо. Если время поджимает, то проще сделать этот элемент формы средствами конфигуратора и на готовом элементе там же определить условные оформления.

Как сделать полностью программно - не дошли руки к таким разборам.
9 Dimarik_1
 
14.07.18
12:26
Для упрощения примера, решил программно оформить ТЧ Товары в документе реализация в УТ 11

Не заработало

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

    
Конецпроцедуры
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший