From d33c97bff1923e0a19378776223195084855c3e9 Mon Sep 17 00:00:00 2001 From: wakadakawaka Date: Wed, 16 Apr 2025 15:54:35 +0500 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D1=8B=D0=B5=20=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D1=82=D1=8C=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Управляемые формы/Условное оформление программно | 49 +++++++++++++++++++ .../Изменение доступности элементов рекурсивно.md | 39 +++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 src/content/docs/knowledge-base/Примеры, сниппеты/Управляемые формы/Условное оформление программно create mode 100644 src/content/docs/knowledge-base/Самописные методы/Изменение доступности элементов рекурсивно.md diff --git a/src/content/docs/knowledge-base/Примеры, сниппеты/Управляемые формы/Условное оформление программно b/src/content/docs/knowledge-base/Примеры, сниппеты/Управляемые формы/Условное оформление программно new file mode 100644 index 0000000..82c930e --- /dev/null +++ b/src/content/docs/knowledge-base/Примеры, сниппеты/Управляемые формы/Условное оформление программно @@ -0,0 +1,49 @@ + +Дополнять условное оформление лучше всего в обработчике формы **`ПриСозданииНаСервере`** + +```bsl +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + ... + УстановитьУсловноеОформлениеНаСервере(); +КонецПроцедуры + +... + +&НаСервере +Процедура УстановитьУсловноеОформлениеНаСервере() + + // Создаем новый элемент + НовыйЭлемент = УсловноеОформление.Элементы.Добавить(); + НовыйЭлемент.Использование = Истина; + + // Настраиваем оформление. Варианты параметров можно посмотреть в форме настройки условного оформления на форме + НовыйЭлемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветВажного); + НовыйЭлемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", ЦветаСтиля.ЦветФонаГруппировкиОтчета1); + + // Устанавливаем условия + // Создаем группу элементов отбора, если нужно + ГруппаЭлементовОтбора = НовыйЭлемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); + ГруппаЭлементовОтбора.Использование = Истина; + ГруппаЭлементовОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ; + + // А в эту группу уже добавляем элементы отбора + Отбор = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + + //Если условие одиночное, то добавляется прямо в НовыйЭлемент.Отбор.Элементы + Отбор = НовыйЭлемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + + // Настраиваем сравнения + + // ПутьКДанным, т.е. Если реквизит объекта, то Объект.РеквизитОформляемоеПоле + Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("РеквизитОформляемоеПоле"); + Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше; + Отбор.ПравоеЗначение = 0; // либо также ПолеКомпоновкиДанных + + // Добавляем поля, которые будут оформляться + ОформляемоеПоле = НовыйЭлемент.Поля.Элементы.Добавить(); + ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ЭлементОформляемоеПоле"); // тут уже имя элемента на форме, не путь к данным + +КонецПроцедуры + +``` \ No newline at end of file diff --git a/src/content/docs/knowledge-base/Самописные методы/Изменение доступности элементов рекурсивно.md b/src/content/docs/knowledge-base/Самописные методы/Изменение доступности элементов рекурсивно.md new file mode 100644 index 0000000..e07a79d --- /dev/null +++ b/src/content/docs/knowledge-base/Самописные методы/Изменение доступности элементов рекурсивно.md @@ -0,0 +1,39 @@ + +```bsl +// Процедура - устанавливает значения свойств "Доступность" и "Только просмотр" +// +// Параметры: +// Форма - ФормаКлиентскогоПриложения - +// Элемент - ЭлементыФормы, Строка - +// Доступность - Булево - Значение свойства "Доступность". Свойство "Только просмотр" = Не "Доступность" +// ТолькоПросмотрГрупп - Булево - Устанавливает значение свойства "Только просмотр" для групп. По умолчанию ЛОЖЬ +// +Процедура УстановитьДоступностьЭлементовРекурсивно(Форма, Элемент, Доступность, ТолькоПросмотрГрупп = Ложь) Экспорт + + ИзменяемыйЭлемент = Элемент; + + Если ТипЗнч(Элемент) = Тип("Строка") Тогда + ИзменяемыйЭлемент = Форма.Элементы.Найти(Элемент); + КонецЕсли; + + Если ИзменяемыйЭлемент = Неопределено Тогда + Возврат; + КонецЕсли; + + Если ТипЗнч(ИзменяемыйЭлемент) = Тип("ГруппаФормы") Или ТипЗнч(ИзменяемыйЭлемент) = Тип("ФормаКлиентскогоПриложения") Тогда + + ИзменяемыйЭлемент.ТолькоПросмотр = ТолькоПросмотрГрупп; + + Для Каждого ПодчиненныйЭлемент Из ИзменяемыйЭлемент.ПодчиненныеЭлементы Цикл + УстановитьДоступностьЭлементовРекурсивно(Форма, ПодчиненныйЭлемент, Доступность, ТолькоПросмотрГрупп); + КонецЦикла; + + ИначеЕсли ТипЗнч(ИзменяемыйЭлемент) = Тип("КнопкаФормы") Или ТипЗнч(ИзменяемыйЭлемент) = Тип("ТаблицаФормы") Тогда + ИзменяемыйЭлемент.Доступность = Доступность; + ИначеЕсли ТипЗнч(ИзменяемыйЭлемент) = Тип("ПолеФормы") Тогда + ИзменяемыйЭлемент.ТолькоПросмотр = Не Доступность; + ИзменяемыйЭлемент.Доступность = Истина; // Поле ввода всегда доступно, управляем "ТолькоПросмотр" + КонецЕсли; + +КонецПроцедуры +``` \ No newline at end of file