В процессе написания WhatsApp клиента для 1С возник вопрос, можно ли раскрасить ячейку таблицы формы программно значением цвета из текущего контакта из строки таблицы:

```1c
    Элемент = УсловноеОформление.Элементы.Добавить();
    Элемент.Поля.Элементы.Добавить().Поле = Новый ПолеКомпоновкиДанных("КонтактыКонтакт");
    ЭлементОтбора = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.Использование = Истина;
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Контакты.ЦветКонтакта");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
    ЭлементОтбора.ПравоеЗначение = Новый Цвет(0,0,0);

    Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона",Новый Цвет(55,55,55));
```

Вот так работает (окраска фиксированным цветом), т.е. если цвет не Черный(по умолчанию создается), то красим другим.
А вот примерно так не работает

```1c
    Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", Новый ПолеКомпоновкиДанных("Контакты.ЦветКонтакта"));
```
 Условие отрабатывает, но красит в Черный
Есть идеи?
---
скорее всего из-за того, что значение цвета должно быть статистическое, а не динамическое

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

```1c
    Для Каждого Цвет Из Цвета Цикл
    Элемент = УсловноеОформление.Элементы.Добавить();
    Элемент.Поля.Элементы.Добавить().Поле = Новый ПолеКомпоновкиДанных("КонтактыКонтакт");
    ЭлементОтбора = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.Использование = Истина;
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Контакты.ЦветКонтакта");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.ПравоеЗначение = Цвет;

    Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", Цвет);
    КонецЦикла;
```

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

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

```1c
    Для Каждого Цвет Из Цвета Цикл
    Элемент = УсловноеОформление.Элементы.Добавить();
    Элемент.Поля.Элементы.Добавить().Поле = Новый ПолеКомпоновкиДанных("КонтактыКонтакт");
    ЭлементОтбора = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.Использование = Истина;
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Контакты.ЦветКонтакта");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.ПравоеЗначение = Цвет;

    Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", Цвет);
    КонецЦикла;
```

если пользователю разрешено редактирование цвета - то при изменении цвета нужно пройтись по условным оформлениям и если нету такого цвета - то добавить условное оформление для этого цвета
---
Задать явное оформление для каждого контакта.
То есть берем список контактов, для каждого контакта задаем новое условное оформление и устанавливаем цвет из этого контакта.
---
Сделал пока так

```1c
    &НаСервере
    Процедура УстановитьУсловноеОформление()

    МассивЦветов = Новый Массив;
    СпрК = Справочники.WhatsApp_Контакты.Выбрать();
    Пока СпрК.Следующий() Цикл
    Если НЕ СпрК.ЦветВСписке.Получить() = Неопределено Тогда
    Если МассивЦветов.Найти(СпрК.ЦветВСписке.Получить()) = Неопределено Тогда
    МассивЦветов.Добавить(СпрК.ЦветВСписке.Получить());
    КОнецЕсли;
    КонецЕсли;
    КонецЦикла;

    Для Каждого Цвет из МассивЦветов Цикл

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

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

    КонецПроцедуры
```

только пока открыта форма WhatsApp-клиента, появление совсем нового цвета не отработает, но это меньшее из зол.