Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

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

Условное оформление программно
Я
   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
Тема закрыта, всем спасибо за помощь. В итоге по циклу взял общий список используемых цветов и, сравнивая индекс, подставлял нужный цвет.

Список тем форума
Рекламное место пустует  Рекламное место пустует
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс, 1996 г.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует