Вход | Регистрация

1С:Предприятие ::

Метки: 

Условное оформление программно

Я
   operasdk
 
27.08.18 - 12:39
Есть такой кусок кода:
Элемент = УсловноеОформление.Элементы.Добавить();

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

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

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

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

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

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

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

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


Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует