СКД. Программное создание условного оформления
☑
0
nemoxp
15.09.16
✎
12:20
Для отчета на СКД нужно создать программно условное оформление. Источник данных для отчета - запрос. Написал такой код в обработчике при открытии:
ЭлементОформления = КомпоновщикНастроек.Настройки.Структура[0].УсловноеОформление.Элементы.Добавить();
ЭлементОформления.Использование = Истина;
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ЛевоеЗначение = КомпоновщикНастроек.Настройки.Структура[0].УсловноеОформление.ДоступныеПоляПолей.Элементы.Найти("Номенклатура").Элементы.Найти("Номенклатура.СтатусТовара").Поле;
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Справочники.ПланированиеЗаказов.НайтиПоКоду("000000002");
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", Новый Цвет(255, 126, 126));
Открываю настройки отчета, на закладке Условное Оформление пусто. Настроить через интерфейс СКД не устраивает тем, что функционал урезан.
Ошибок не выдает. Кто знает - помогите плз!
1
nemoxp
15.09.16
✎
12:21
платформа 8.2
2
nemoxp
15.09.16
✎
13:02
Вот так работает:
ЭлементОформления = КомпоновщикНастроек.Настройки.УсловноеОформление.Элементы.Добавить();
ЭлементОформления.Использование = Истина;
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Номенклатура.СтатусТовара");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Справочники.ПланированиеЗаказов.НайтиПоКоду("000000002");
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", Новый Цвет(255, 126, 126));
Так то. Пользуйтесь, неучи.
3
nemoxp
15.09.16
✎
13:24
Кто знает, как в правое значение загрузить список номенклатуры с видом сравнения "в списке"?
4
Nuobu
15.09.16
✎
13:25
(3) Как неуч неучу отвечу тебе: поменять видСравниения.
5
nemoxp
15.09.16
✎
13:29
Пишу "в списке". Создаю новый список значений. А в предприятии список пустой, если его открыть. Везде пустое значение
6
nemoxp
15.09.16
✎
13:32
СписокНоменклатуры = новый списокзначений;
Пока Выборка.Следующий() цикл
СписокНоменклатуры.Добавить(Выборка.Номенклатура);
КонецЦикла;
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ЭлементОтбора.ПравоеЗначение = СписокНоменклатуры;
В предприятии открываю этот список и везде "пустое значение". Что не так?
7
nemoxp
15.09.16
✎
13:33
Все ок. Вопрос снят. Не то поле установил для отбора.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший