Мои заметки по 1с
Собственные наработки и набитые шишки в моей практике по программированию в 1С.
Страницы
четверг, 15 марта 2018 г.
Примеры Условного оформления (программно)
Примеры Условного Оформления форм:
&НаСервере
Процедура УстановитьОформлениеФормыНаСервере()
ИменаСлужебныхПрефиксов = НазначитьПрефиксИменСлужебныхЗначений();
ПрефиксИмениИнтервал = ИменаСлужебныхПрефиксов.Интервал;
ПрефиксИмениРучИзмЦены = ИменаСлужебныхПрефиксов.РучноеИзменениеЦены;
УсловноеОформление.Элементы.Очистить();
//
ЭлементОформления = УсловноеОформление.Элементы.Добавить();
ЭлементОформления.Представление = «СозданПрограммно»;
//Отбор
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(«ДеревоЦен.ЭтоГруппа»);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Истина;
//Оформление
ЭлементОформления.Оформление.УстановитьЗначениеПараметра(«Шрифт», Новый Шрифт(WindowsШрифты.ШрифтДиалоговИМеню,,11,Истина. ));
//Поле оформления
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных(«ДеревоЦен»);
//
ЭлементОформления = УсловноеОформление.Элементы.Добавить();
ЭлементОформления.Представление = «СозданПрограммно»;
//Отбор
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(«ДеревоЦен.ЭтоГруппа»);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Ложь;
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(«ДеревоЦен.БазоваяЦена»);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = 0;
//Оформление
ЭлементОформления.Оформление.УстановитьЗначениеПараметра(«ЦветФона», WebЦвета.Розовый);
ЭлементОформления.Оформление.УстановитьЗначениеПараметра(«Текст», «»);
ЭлементОформления.Оформление.УстановитьЗначениеПараметра(«ЦветТекста», WebЦвета.Серый);
//Поле оформления
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных(«ДеревоЦенБазоваяЦена»);
//оформление программно созданных колонок «Интервалы»
Для Каждого СтрокаИнтервала Из Интервалы Цикл
ИдентификаторИнтервала = СтрокаИнтервала.ИдентификаторИнтервала;
ИмяПоля_РИзмЦены = СтрЗаменить(ИдентификаторИнтервала, ПрефиксИмениИнтервал, ПрефиксИмениРучИзмЦены);
//
ЭлементОформления = УсловноеОформление.Элементы.Добавить();
//
ЭлементОформления.Представление = «СозданПрограммно»;
//Отбор
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(«ДеревоЦен.»+ИмяПоля_РИзмЦены);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Истина;
//Оформление
ЭлементОформления.Оформление.УстановитьЗначениеПараметра(«ЦветФона», WebЦвета.Бежевый);
ЭлементОформления.Оформление.УстановитьЗначениеПараметра(«ЦветТекста», WebЦвета.Синий);
//Поле оформления
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных(ИдентификаторИнтервала);
//
ЭлементОформления = УсловноеОформление.Элементы.Добавить();
//
ЭлементОформления.Представление = «СозданПрограммно»;
//Отбор
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(«ДеревоЦен.»+ИдентификаторИнтервала);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = 0;
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(«ДеревоЦен.ЭтоГруппа»);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Ложь;
//Оформление
ЭлементОформления.Оформление.УстановитьЗначениеПараметра(«ЦветФона», WebЦвета.Розовый);
ЭлементОформления.Оформление.УстановитьЗначениеПараметра(«Текст», «»);
ЭлементОформления.Оформление.УстановитьЗначениеПараметра(«ЦветТекста», WebЦвета.Серый);
//Поле оформления
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных(ИдентификаторИнтервала);
КонецЦикла;
КонецПроцедуры
Пример2:
С использованием общей процедуры.
Процедура СкопироватьПоляУсловногоОформления(ЭлементУсловногоОформления, ЭлементКомпоновщика, ИмяТаблицыОформления, ПрефиксИмениЭлементовФормы=»»)
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(ПрефиксИмениЭлементовФормы+Строка(ЭлементПоля.Поле));
Процедура СкопироватьОтборУсловногоОформления(ЭлементУсловногоОформления, ЭлементКомпоновщика, ИмяТаблицыОформления)
СкопироватьОтборУсловногоОформления(ЭлементУсловногоОформления, ЭлементОтбора, ИмяТаблицыОформления);
НовыйЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяТаблицыОформления+».» + Строка(ЭлементОтбора.ЛевоеЗначение));
Источник
Программное условное оформление строк ДереваЗначений. Условие по Родителю
Управляемые формы. Необходимо раскрасить строки дерева значений в зависимости от значений строки-родителя. Например, если в строке-родителе Количество=0, тогда все подчиненные строки раскрашиваем в зеленый цвет. Как этого добиться?
Написал такой код, но как в нем обратиться к родителю?
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЗначений1.КоличествоНаСкладеВсего"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.ПравоеЗначение = 0; ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ДеревоЗначений1"); ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Красный);
Никак. Добавь в строку колонку с признаком, который изменяешь при изменении количества в родителе и заполняй его по всем подчиненным строкам
1+ Запись условного оформления не может быть привязана к конкретной строке дерева (таблицы), но должна иметь возможность определить, красить данную строку или нет.
Потому алгоритм только один нужен признак в каждой строке, по которому будет ориентироваться УО. И не обязательно им рулить программно.
Источник
8.2 Упр.прилож.: Дерево значений — можно ли выделить цветом/шрифтом одну строку ?
Вывожу в упр.форму дерево значений — могу посмотреть тек.строку/тек.данные есть еще тек.элемент где можно менять цвет/шрифт, но это, похоже меняет во всем списке. Есть ли варианты выделить одну конкретную строку программно ?
Или только таб.документ делать ?
Как выделить одну строку другим цветом
Не судите строго, второй день изучаю С++. Прочитал много тем, нашел несколько подходящих тем, но.
Как выделить цветом одну строку в ленточной форме? Help!
Коллеги! Может быть, кто-то знает, как решить следующую задачку? Буду очень признателен за помощь.
Можно ли как-то выделить строку другим цветом?
так не катит,он весь текст делает таким.
TCalendarView как выделить определенные даты цветом или шрифтом?
На форме имеется TCalendarView и TDBGrid стоит задача выделить в календаре цветом или шрифтом.
Извините за тавтологию, но тек.строка (Текущая строка) по вашему не ОДНА конкретная строка?
Добавлено через 53 секунды
Для изменения шрифта и цвета в управляемых формах, строки не нужны. Есть объект «Условноеоформление» — читайте справку
А где у дерева значений условное уформление ? Усл.оформление у формы в целом в моем варианте не работает — я дерево программно создаю.
Так и просят код за них написать.
Что за «Пррограммисты»пошли
УО = УсловноеОформление.Элементы.Добавить(); УО.Оформление.УстановитьЗначениеПараметра("ЦветФона",WebЦвета.Красный); ЭУ = УО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭУ.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДЗ.Колонка1"); ЭУ.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭУ.ПравоеЗначение = "4"; ОП = УО.Поля.Элементы.Добавить(); ОП.Поле = Новый ПолеКомпоновкиДанных("ДЗКолонка1");
Сообщение от BVladimir2
Сообщение от Dethmontt
УО = УсловноеОформление.Элементы.Добавить(); УО.Оформление.УстановитьЗначениеПараметра("ЦветФона",WebЦвета.Красный); ЭУ = УО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭУ.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДЗ.Колонка1"); ЭУ.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭУ.ПравоеЗначение = "4"; ОП = УО.Поля.Элементы.Добавить(); ОП.Поле = Новый ПолеКомпоновкиДанных("ДЗКолонка1");
Это усл.оформление динамического списка, я так понимаю. Мне он не подходит, по ряду причин. У меня в форме создан реквизит типа
«Дерево значений» и выведен на форму. Само дерево заполняется программно (и выводится в соотв. элемент). Усл.оформления здесь нигде не нашел, ну кроме самой формы, конечно. Отсюда вопрос и возник, можно ли как-то изменить одну строку или не вариант ?
Сообщение было отмечено как решение
Решение
ЭТОТ код для реквизита формы с типом «ДЕРЕВОЗННАЧЕНИЙ»
я где то разве писал про динамический список?
Добавлено через 1 минуту
КОд не для динамического списка, а для любой таблицы формы.
Добавлено через 19 секунд
Добавлено через 2 минуты
Делаете выводы, даже не соизволив проверить.
Сообщение от Dethmontt
Ну, я, собственно, тоже подумал, что это к дин списку относится (поскольку в УФ ещё — честно признаться — пальцем о палец не ударял) и ввёл человека в заблуждение, натолкнув на эту мысль. Но что правда, то правда: надо ВСЁ ПРОВЕРЯТЬ НА ПРАКТИКЕ. Спасибо.
Сообщение от Dethmontt
Спасибо, заработало !
Но это код для усл.оформления формы в целом ? Я пробовал устанавливать усл.оформл. формы в конфигураторе — не сработало. А после програмн. добавления уже после формиров. дерева все заработало и новые добавленные поля можно увидеть в табло вместе с созданными в конфигураторе.
Сообщение от BVladimir2
Тут указываешь какие поля нужно оформлять
ОП = УО.Поля.Элементы.Добавить(); ОП.Поле = Новый ПолеКомпоновкиДанных("ДЗКолонка1");
CheckedListBox выделить некоторые элементы жирным шрифтом или цветом
CheckedListBox выделить некоторые элементы жирным шрифтом или цветом. возможно ли это? в ListBox.
Выделить строку в ListView жирным шрифтом
Здравствуйте!Возможно ли выделить строку в ListView жирным шрифтом. Вот код кнопки которая.
Как выделить строку в RichEdit жирным шрифтом
Здравствуйте. Как оптимальнее всего написать на Делфи следующее: RichEdit.Lines становится.
ComboBox. Можно ли выделить отдельные элементы жирным шрифтом?
Хочу некоторые элементы выделить цветом или жирным шрифтом. Это возможно?
Выделить в textBox одну или несколько букв другим цветом
На форме имеется элемент Textbox с некоторым текстом. Подскажите пожалуйста, как выделить одну.
Выделить строку DataGridView цветом
Доброго времени суток! Подскажите пожалуйста, как выделить строку в datagridview.
Источник
Условное оформление Дерева на УФ
Прошу помощи у специалистов по УФ. Сам таковым пока не являюсь. Хочется выделить строки дерева значений «ДеревоПлатежей», расположенного на форме. Строки с незаполненным значением колонки «ВидНалога» в дереве имеются. Не ругается, но и не оформляет ничего.
ЭлементОтбора = НовыйЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(«ДеревоПлатежей.ВидНалога»);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ЭлементОтбора.Использование = Истина;
ЭлементЦветаОформления = НовыйЭлементУсловногоОформления.Оформление.Элементы.Найти(«TextColor»);
ЭлементЦветаОформления.Значение = Метаданные.ЭлементыСтиля.ОтметкаОтрицательногоВыполненияЗадачи.Значение;
ЭлементЦветаОформления.Использование = Истина;
КонецПроцедуры
(0) у тебя статичный набор критериев раскраски, зачем программно красить?
В свойствах ДС (самого, а не у элемента формы) установи что тебе и как раскрасить.
(1) Действительно, поля указать забыл. Добавил в конец
НовыйЭлемент = НовыйЭлементУсловногоОформления.Поля.Элементы.Добавить();
НовыйЭлемент.Поле = Новый ПолеКомпоновкиДанных(«ВидНалога»);
Вот тут наверное надо конкретный цвет указывать.
ЭлементЦветаОформления.Значение = Метаданные.ЭлементыСтиля.ОтметкаОтрицательногоВыполненияЗадачи.Значение;
(3). Реквизитом отчета, добавленного на форму является ДеревоЗначений, а не динамический список. Я не могу настроить его не программно.
Источник