|
УФ: раскраска строк в тонком клиенте | ☑ | ||
---|---|---|---|---|
0
Blade Runner
07.11.12
✎
14:17
|
Необычный вопрос: как в зависимости от поля Статус раскрашивать в табличной части справочника в тонком клиенте?
не работает такой код на клиенте: ЭлементУО = ЭтаФорма.УсловноеОформление.Элементы.Добавить(); пишет "Условное оформление недоступно на клиенте" что я делаю не так? |
|||
1
Blade Runner
07.11.12
✎
14:31
|
апну, вроде ж не пятница...
|
|||
2
Goggy
07.11.12
✎
14:36
|
а судя по твоему вопросу именно тяпница...
УправляемаяФорма (ManagedForm) УсловноеОформление (ConditionalAppearance) Использование: Только чтение. Описание: Тип: УсловноеОформлениеКомпоновкиДанных. Содержит настройки условного оформления формы. Доступность: Сервер. |
|||
3
Defender aka LINN
07.11.12
✎
14:39
|
"пишет "Условное оформление недоступно на клиенте"
что я делаю не так?" - не читаешь нихрена, не? |
|||
4
НастоящееИмя
07.11.12
✎
14:39
|
(3)видимо не доступно
|
|||
5
НастоящееИмя
07.11.12
✎
14:40
|
УправляемаяФорма (ManagedForm)
УсловноеОформление (ConditionalAppearance) Использование: Только чтение. Описание: Тип: УсловноеОформлениеКомпоновкиДанных. Содержит настройки условного оформления формы. Доступность: Сервер. |
|||
6
vmv
07.11.12
✎
14:41
|
я так сделал когда у меня был мешок травы, по примеру кода ясно, как динамически менять УО Правда у меня еще есть справочник цветовых палитр, где можно задать наборы цветов на все случаи жизни и не терзать каждой УО каждой хрени всякий раз
// // Add_ComM_ОтчетыКС.ПолучитьСписокЦветовУо(РодительЦветов, "RGB10", "Счет", Истина); // Функция ПолучитьСписокЦветовУо(Знач РодительЦветов = Неопределено, RGB10ПолеКдИмя, ПолеКдИмя = "", ПолеКдПроверкаЗаполнения = Истина) Экспорт СзЦвета = Add_ComM_ОтчетыС.ПолучитьСписокЦветов(РодительЦветов, Ложь); СзЦветаУо = Новый СписокЗначений; НомерПп = 0; Для каждого ЭлементСз Из СзЦвета Цикл СтвОтбора = Новый Соответствие; СтвЭлементаОтбора = Новый Соответствие; СтвЭлементаОтбора.Вставить("ЛевоеЗначение" , Новый ПолеКомпоновкиДанных(RGB10ПолеКдИмя)); СтвЭлементаОтбора.Вставить("ВидСравнения" , ВидСравненияКомпоновкиДанных.Равно); СтвЭлементаОтбора.Вставить("ПравоеЗначение", ЭлементСз.Представление); СтвОтбора.Вставить("СтвЭлементаОтбора1", СтвЭлементаОтбора); Если ЗначениеЗаполнено(ПолеКдИмя) И ПолеКдПроверкаЗаполнения Тогда СтвЭлементаОтбора = Новый Соответствие; СтвЭлементаОтбора.Вставить("ЛевоеЗначение" , Новый ПолеКомпоновкиДанных(ПолеКдИмя)); СтвЭлементаОтбора.Вставить("ВидСравнения" , ?(ЗначениеЗаполнено(ПолеКдИмя), ВидСравненияКомпоновкиДанных.Заполнено, ВидСравненияКомпоновкиДанных.НеЗаполнено)); СтвЭлементаОтбора.Вставить("ПравоеЗначение", Неопределено); СтвОтбора.Вставить("СтвЭлементаОтбора2", СтвЭлементаОтбора); КонецЕсли; СтвЗнчПараметров = Новый Соответствие; СтвЗнчПараметров.Вставить("ЦветФона", ЭлементСз.Значение); //... установка прочих значений параметров СтруктураЭлементаУо = Новый Структура; СтруктураЭлементаУо.Вставить("СтвЗнчПараметров", СтвЗнчПараметров); СтруктураЭлементаУо.Вставить("СтвОтбора" , СтвОтбора); НомерПп = НомерПп + 1; КодПп = Формат(НомерПп, "ЧЦ=5; ЧН=; ЧВН=; ЧГ="); СзЦветаУо.Добавить(СтруктураЭлементаУо, КодПп); КонецЦикла; СзЦветаУо.СортироватьПоПредставлению(); Возврат СзЦветаУо; КонецФункции // // Варианты вызова: // // Add_ComM_ОтчетыКС.УстановитьЦветаУо(Уо, РодительЦветов, "RGB10",, Ложь); // // Add_ComM_ОтчетыКС.УстановитьЦветаУо(Уо, РодительЦветов, "СтрокаБ.RGB10",, Ложь); // // Add_ComM_ОтчетыКС.УстановитьЦветаУо(Уо, РодительЦветов, "RGB10", "Счет", Истина); // Функция УстановитьЦветаУо(Уо, РодительЦветов = Неопределено, RGB10ПолеКдИмя, ПолеКдИмя = "", ПолеКдПроверкаЗаполнения = Истина, ПоляРесурсов = Ложь) Экспорт // Получим УИД текущего пользователя строкой и ключ поиска элемента в ПредставлениеПользовательскойНастройки УидПлзСтр = Add_ComM_ОтчетыС.ТекущийПользовательИд(Истина); Если ЗначениеЗаполнено(ПолеКдИмя) Тогда КлючВПредставлениеПлзНс = ПолеКдИмя + "/" + УидПлзСтр; ИначеЕсли ПоляРесурсов Тогда КлючВПредставлениеПлзНс = "ПоляРесурсов" + "/" + УидПлзСтр; Иначе КлючВПредставлениеПлзНс = УидПлзСтр; КонецЕсли; СзЦветаУо = ПолучитьСписокЦветовУо(РодительЦветов, RGB10ПолеКдИмя, ПолеКдИмя, ПолеКдПроверкаЗаполнения); ЭлементыУо = Уо.Элементы; // Получим в массив все добавленные ранее этим методом элементы условного оформления по УидПлзСтр и ПолеКдИмя мЭлементыУо = Новый Массив; Для каждого ЭлементУо Из ЭлементыУо Цикл Если Найти(ЭлементУо.ПредставлениеПользовательскойНастройки, КлючВПредставлениеПлзНс) Тогда мЭлементыУо.Добавить(ЭлементУо); КонецЕсли; Если Найти(ЭлементУо.ИдентификаторПользовательскойНастройки, КлючВПредставлениеПлзНс) Тогда мЭлементыУо.Добавить(ЭлементУо); КонецЕсли; КонецЦикла; // Удалим все добавленные ранее этим методом элементы условного оформления по ИдПн Для каждого ЭлементУо Из мЭлементыУо Цикл ЭлементыУо.Удалить(ЭлементУо); КонецЦикла; Для каждого СзЦветаУоЭлемент Из СзЦветаУо Цикл СтруктураЭлементаУо = СзЦветаУоЭлемент.Значение; // Соответствие значений парметров условного оформления текущего элемента условного оформления СтвЗнчПараметров = СтруктураЭлементаУо.СтвЗнчПараметров; СтвЗнчПараметровКво = СтвЗнчПараметров.Количество(); Если НЕ СтвЗнчПараметровКво Тогда Продолжить; КонецЕсли; // Соответствие отбора условного оформления текущего элемента условного оформления СтвОтбора = СтруктураЭлементаУо.СтвОтбора; СтвОтбораКво = СтвОтбора.Количество(); Если НЕ СтвОтбораКво Тогда Продолжить; КонецЕсли; // Инициализация текущего элемента условного оформления ЭлементУо = ЭлементыУо.Добавить(); ЭлементУо.Представление = СзЦветаУоЭлемент.Представление + "/" + RGB10ПолеКдИмя; ЭлементУо.ПредставлениеПользовательскойНастройки = ЭлементУо.Представление + "/" + КлючВПредставлениеПлзНс; Для каждого СтвЗнчПараметровЭлемент Из СтвЗнчПараметров Цикл ТекущийПараметрКД = Новый ПараметрКомпоновкиДанных(СтвЗнчПараметровЭлемент.Ключ); ЗнчПараметраНастроекКД = ЭлементУо.Оформление.НайтиЗначениеПараметра(ТекущийПараметрКД); Если ЗнчПараметраНастроекКД = Неопределено Тогда Продолжить; КонецЕсли; ЗнчПараметраНастроекКД.Использование = Истина; ЗнчПараметраНастроекКД.Значение = СтвЗнчПараметровЭлемент.Значение; КонецЦикла; // Инициализация отбора по текущему элементу условного оформления Если СтвОтбораКво = 1 Тогда // Если соответствие содержит один элемент, то это элемент Уо с простым отбором. СтвЭлементаОтбора = СтвОтбора.Получить("СтвЭлементаОтбора1"); ЭлементОтбора = ЭлементУо.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.Использование = Истина; ЭлементОтбора.ЛевоеЗначение = СтвЭлементаОтбора.Получить("ЛевоеЗначение"); ЭлементОтбора.ВидСравнения = СтвЭлементаОтбора.Получить("ВидСравнения"); ЭлементОтбора.ПравоеЗначение = СтвЭлементаОтбора.Получить("ПравоеЗначение"); ИначеЕсли СтвОтбораКво > 1 Тогда // Если соответствие содержит более чем один элемент, то это элемент Уо с групповым отбором. // Инициализируем группу элементов отбора по текущему элементу условного оформления ГруппаИОтбораУо = ЭлементУо.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); ГруппаИОтбораУо.Использование = Истина; ГруппаИОтбораУо.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ; Для каждого СтвЭлементаОтбораКЗ Из СтвОтбора Цикл Если СтвЭлементаОтбораКЗ.Ключ = "Цвет" Тогда Продолжить; КонецЕсли; ЭлементОтбора = ГруппаИОтбораУо.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.Использование = Истина; ЭлементОтбора.ЛевоеЗначение = СтвЭлементаОтбораКЗ.Значение.Получить("ЛевоеЗначение"); ЭлементОтбора.ВидСравнения = СтвЭлементаОтбораКЗ.Значение.Получить("ВидСравнения"); ЭлементОтбора.ПравоеЗначение = СтвЭлементаОтбораКЗ.Значение.Получить("ПравоеЗначение"); КонецЦикла; Иначе Продолжить; КонецЕсли; // Инициализация полей по текущему элементу условного оформления ЭлементУоПоляЭлементы = ЭлементУо.Поля.Элементы; Если ЗначениеЗаполнено(ПолеКдИмя) Тогда ПолеОформления = ЭлементУоПоляЭлементы.Добавить(); ПолеОформления.Использование = Истина; ПолеОформления.Поле = Новый ПолеКомпоновкиДанных(ПолеКдИмя); ИначеЕсли ПоляРесурсов Тогда Для каждого ДоступноеПолеКд Из Уо.ДоступныеПоляПолей.Элементы Цикл Если ДоступноеПолеКд.Ресурс И (НЕ ДоступноеПолеКд.Папка) И (НЕ ДоступноеПолеКд.Таблица) Тогда ПолеОформления = ЭлементУоПоляЭлементы.Добавить(); ПолеОформления.Использование = Истина; ПолеОформления.Поле = ДоступноеПолеКд.Поле; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; Возврат Истина; КонецФункции |
|||
7
vmv
07.11.12
✎
14:44
|
+(6) эти медоты КС, т.е. работают и на клиенте и на сервере, так и должно быть для УО, ибо модификации УО может понадобиться
1. ПриСозданииФормы, т.е. на сервере 2. По воздействию пользователя на управляющий реквизит формы или элемент настройки в настройке варианта компоновки, т.е. на клиенте |
|||
8
Blade Runner
07.11.12
✎
14:52
|
вотжеж набросились, (1)(2)(3) я аналогично книге делаю.
Демонстрационная конфигурация "Оформление списков" к книге "Разработка управляемого интерфейса" (1.0.0.1) (6) спасибо, вроде то что нужно. |
|||
9
Blade Runner
07.11.12
✎
14:57
|
о! а вот что показывает мой СП
может у меня другоей СП? :) УсловноеОформление (ConditionalAppearance) УсловноеОформление (ConditionalAppearance) Элементы коллекции: ЭлементУсловногоОформления Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы условного оформления. Возможно обращение к элементу оформления посредством оператора [...]. В качестве аргумента передается индекс (нумерация с 0). Свойства: <Имя элемента оформления> (<Format element name>) Методы: Вставить (Insert) Добавить (Add) Индекс (IndexOf) Количество (Count) Очистить (Clear) Получить (Get) ПолучитьДоступныеПоля (GetAvailableFields) Сдвинуть (Move) Удалить (Delete) УстановитьДоступныеПоля (SetAvailableFields) Конструкторы: Основной Описание: Содержит набор условных оформлений областей. Доступность: Сервер, толстый клиент, внешнее соединение. Сериализуется. См. также: ПостроительОтчета, свойство УсловноеОформление |
|||
10
vmv
07.11.12
✎
15:00
|
(9) не все так просто чувак, в сабже неявно поставлен вопрос, как установить занчение парметров УО связанных с цветом(Цвет фона, текста и т.д.) с ОТБОРОМ, так что кописпасть сп дальше)
|
|||
11
Blade Runner
07.11.12
✎
15:18
|
(10) чувак, и я о том же, не все так просто, не понимаю вот почему!
читаю твой код, а расскажи пожалуйста, какая у тебя была задача?.. в (7) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |