Имя: Пароль:
1C
1С v8
УФ: Условное оформление списка
0 IKSparrow
 
15.09.13
23:49
Справочник. Форма выбора со списком. У списка есть условное оформление.
Смотрю в отладчике:
Список.УсловноеОформление.Элементы - пусто.
Но условное оформление исправно работает.

На форме того же справочника, так же есть условное оформление.
И в отладчике ЭтаФорма.УсловноеОформление.Элементы - там заполнено тем, что установлено в конфигураторе.

Теперь вопрос - а где находятся настройки условного оформления у списка? Хочу их на лету поменять.

У формы такой трюк прокатывает.
1 IKSparrow
 
16.09.13
00:51
Фиг с ними, отсутствующими элементами. Пошёл другим путём. А именно, сделал программно свои настройки условного оформления:
    ЭлементУсловногоОформления = Список.УсловноеОформление.Элементы.Добавить();
    
    ПолеОформления = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
    ПолеОформления.Использование = Истина;
    ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("Наименование");
    
    ПолеОтбора = ЭлементУсловногоОформления.Отбор.элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ПолеОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаАктивацииЭКЛЗ");
    ПолеОтбора.ПравоеЗначение = Дата('00010101');
    ПолеОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Больше;
    
    
    ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.ТемноСиний);
    ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Шрифт", Новый Шрифт(ЭлементУсловногоОформления.Оформление.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Шрифт")).Значение,,,Истина));

Только вот беда какая. Мне надо сравнивать реквизит каждого объекта ("ДатаАктивацииЭКЛЗ") с определённым значением, а именно ДатаАктивацииЭКЛЗ + 185 дней. Ну и соответственно, при достижении этого срока, раскрашивать строку списка, подавая тем самым пользователю визуальный алярм.
Я так понимаю, что условное оформление под мои задачи не подходит? Как тут можно подсветить строки справочника для такой задачи?
2 IKSparrow
 
16.09.13
02:51
Всё-таки подходит данный механизм.
Итого, получилось следующее:

&НаСервере
Процедура ПриОткрытииНаСервере()
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ВЫБОР
    |        КОГДА ДОБАВИТЬКДАТЕ(ККМ.ДатаАктивацииЭКЛЗ, ДЕНЬ, 185) >= &КонтрольнаяДата
    |            ТОГДА ККМ.Ссылка
    |    КОНЕЦ КАК Ссылка
    |ИЗ
    |    Справочник.ККМ КАК ККМ
    |ГДЕ
    |    ККМ.Владелец В (&Владелец)";
    Запрос.УстановитьПараметр("Владелец", ЭтаФорма.Список.Отбор.Элементы[0].ПравоеЗначение);
    Запрос.УстановитьПараметр("КонтрольнаяДата",КонтрольнаяДата);
    ВыборкаЗапроса = Запрос.Выполнить().Выбрать();
    Список.УсловноеОформление.Элементы.Очистить();
    Пока ВыборкаЗапроса.Следующий() Цикл
        Оформление = Список.УсловноеОформление.Элементы.Добавить();
        Оформление.Использование = Истина;
        Отбор = Оформление.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");
        Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
        Отбор.ПравоеЗначение = ВыборкаЗапроса.Ссылка;
        ЭлементЦвет = Оформление.Оформление.Элементы.Получить(0);
        ЭлементЦвет.Значение = Новый Цвет(255,0,0);
        ЭлементЦвет.Использование = Истина;
    КонецЦикла;
    
КонецПроцедуры
3 Лодырь
 
16.09.13
06:09
А сформировать список запросом, и наложить условное оформление непрограмно почему не удалось?
4 IKSparrow
 
16.09.13
07:47
(3) Если честно то не подумал :( Спасибо за подсказку!
5 olegves
 
16.09.13
08:34
(4) еще можешь реквизиты формы задействовать в УО