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