Имя: Пароль:
1C
1С v8
Условное оформление программно
0 operasdk
 
27.08.18
12:39
Есть такой кусок кода:
Элемент = УсловноеОформление.Элементы.Добавить();

ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.DueDate.Имя);

ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.DueDate");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
ОтборЭлемента.ПравоеЗначение = ТекущаяДата() - 3 * 24 * 60 * 60;

Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Кирпичный);

Вопрос в том, можно ли как-то в последней строке кода вместо "WebЦвета.Кирпичный" вытянуть и подставить значение реквизита Объекта, к которому применяется данное условное оформление? Заранее спасибо за помощь.

P.S. Кадры с ответами по типу "Зачем тебе подставлять реквизит?" и т.д. идут лесом.
1 Tonik992
 
27.08.18
12:40
(0) Такое хорошее начало, и концовка все портит..
2 Вафель
 
27.08.18
12:42
выбери все возможные цвета и сделай оформление по условию
3 operasdk
 
27.08.18
12:42
Чем Вам не понравилась концовка?
4 operasdk
 
27.08.18
12:47
Мне не нужно по условию. Мне нужно в списке справочника установить цвет фона для каждого объекта из динамического списка. Индекс цвета, который требуется установить находится в реквизите объекта из списка. Мне нужно как-то получить этот реквизит при программном условном оформлении, но я не знаю как.
5 polosov
 
27.08.18
12:51
(4) Выбор Различных по твоему реквизиту из справочника.
И потом программно установи оформление.
6 Вафель
 
27.08.18
12:54
(4) добавь реквизит в список - делов то. через произвольный запрос
7 Вафель
 
27.08.18
12:54
А потом (2)
8 operasdk
 
27.08.18
12:57
(6) polosov, можно поподробнее, если не трудно?
9 operasdk
 
27.08.18
12:58
(5) *
10 catena
 
27.08.18
12:58
(8) Желаемый цвет храниться в объекте или в списке в каждой строке?
11 catena
 
27.08.18
12:58
*тся
12 operasdk
 
27.08.18
13:00
(10) Желаемый цвет хранится в объекте из списка, точнее не цвет, а индекс цвета. Через функцию общего модуля из индекса возвращается цвет.
13 Fragster
 
гуру
27.08.18
13:02
в свое время хотел сделать индивидуальные цвета. но 1с под такое не приспособлена. Остановился на коллекции картинок и хранении индекса в реквизите. По производительности оказался оптимальный вариант. Ну и зачем пользователю > десятка цветов - хз.

Выбор цвета можно подсмотреть в http://catalog.mista.ru/public/556514/ в форме элемента проекта (из нее открывается общая форма ФормаВыбораМаркераЦвета).
14 operasdk
 
27.08.18
13:02
(6) Вы не понимаете. Проблема в том, что цветом может быть несколько десятков + они могут добавляться. Поэтому в ручную устанавливать для каждого цвета условие глупо.
15 Cyberhawk
 
27.08.18
13:05
Конструктор цвета не осилил что ли?
16 catena
 
27.08.18
13:06
Если для одного условия в разных строках желается индивидуальная цветовая гамма, то нет, УО накладывается на отображаемую часть таблицы, а не на строки, в отличии от оформленияСтрок в ПриПолученииДанных ОФ. Если же условия-цвета однозначный список, то (5) - отобрать все возможные комбинации и по ним наложить.
17 Fragster
 
гуру
27.08.18
13:11
(14) справочник цветов + условное оформление тоже работает. но нужно весь справочник загонять в УФ + галочку на "использовать всегда" у реквизита, в котором хранится ссылка на справочник цветов. вот кусок кода из СУЗ 1.0.0.1 (от УО отказался уже в 1.0.0.2)

цвет хранится в сериализованном виде в справочнике.

Процедура УстановитьУсловноеОформление(УсловноеОформление, ПолеОтбора, ПоляОформления = "") Экспорт
    
    МассивПолейОформления = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ПоляОформления, ",", Истина, Истина);
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |    Проекты.Ссылка,
    |    Проекты.Цвет
    |ИЗ
    |    Справочник.Проекты КАК Проекты
    |ГДЕ
    |    Проекты.Цвет <> """"";
    
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    Пока Выборка.Следующий() Цикл
        Цвет = СериализаторXDTO.XMLЗначение(Тип("Цвет"), Выборка.Цвет);
        ЭлементОформления = УсловноеОформление.Элементы.Добавить();
        ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", Цвет);
        ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ЭлементОформления.Отбор, ПолеОтбора, ВидСравненияКомпоновкиДанных.Равно, Выборка.Ссылка);
        Для каждого ПолеОформления Из МассивПолейОформления Цикл
            ЭлементОформления.Поля.Элементы.Добавить().Поле = Новый ПолеКомпоновкиДанных(ПолеОформления);
        КонецЦикла;

    КонецЦикла;
    
КонецПроцедуры
18 operasdk
 
27.08.18
13:56
Тема закрыта, всем спасибо за помощь. В итоге по циклу взял общий список используемых цветов и, сравнивая индекс, подставлял нужный цвет.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.