Есть обработка, которая использует сложный запрос, и прямо #НаСервере заполняется таблица значений.
Как сделать изменение фона строки таблицы значений в зависимости от значения одного из реквизитов таблицы значения.
P.S. вариант заполнить таблицу значений на сервере, а потом пройтись по каждой строке на клиенте не подходит, хотелось упростить вывод
Как сделать изменение фона строки таблицы значений в зависимости от значения одного из реквизитов таблицы значения.
P.S. вариант заполнить таблицу значений на сервере, а потом пройтись по каждой строке на клиенте не подходит, хотелось упростить вывод
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3)
Уже года 3 как работаем: программно создаются реквизиты, в том числе типа "ТаблицаЗначений" и так же программно красятся. ЧЯДНТ??? Управляемые формы?
Вот пример из общего модуля:
Уже года 3 как работаем: программно создаются реквизиты, в том числе типа "ТаблицаЗначений" и так же программно красятся. ЧЯДНТ??? Управляемые формы?
Вот пример из общего модуля:
Процедура ДобавитьУсловноеОформление(Форма, ИмяТаблицы)
ЭлементУсловноеОформление = Форма.УсловноеОформление.Элементы.Добавить();
//делаем условие
ЭлементОтбора = ЭлементУсловноеОформление.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ХарактеристикиЗначения.Изменена");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Истина;
ЭлементОтбора.Использование = Истина;
//делаем поля
Элемент = ЭлементУсловноеОформление.Поля.Элементы.Добавить();
Элемент.Поле = Новый ПолеКомпоновкиДанных(ИмяТаблицы + "Характеристика");
Элемент.Использование = Истина;
Элемент = ЭлементУсловноеОформление.Поля.Элементы.Добавить();
Элемент.Поле = Новый ПолеКомпоновкиДанных(ИмяТаблицы + "Значение");
Элемент.Использование = Истина;
Элемент = ЭлементУсловноеОформление.Поля.Элементы.Добавить();
Элемент.Поле = Новый ПолеКомпоновкиДанных(ИмяТаблицы + "Дата");
Элемент.Использование = Истина;
//делаем оформление
ЭлементОформления = ЭлементУсловноеОформление.Оформление.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ЦветТекста"));
Если ЭлементОформления <> Неопределено Тогда
ЭлементОформления.Значение = Новый Цвет(255, 0, 0);
ЭлементОформления.Использование = Истина;
КонецЕсли;
КонецПроцедуры
Показать
(5)
В данном примере идет программное заполнение условного оформления как если бы у вас эта таблица (реквизит и элемент) были созданы интерактивно, В примере текст строки делается красным если реквизит "Изменена" стал равен Истина. Первый блок - условие, второй блок - на какие колонки таблицы распространяется действие условного оформления, третий - само оформление. Контекст серверный. Вынесено в общий модуль, т.к. вызов идет с разных форм.
В данном примере идет программное заполнение условного оформления как если бы у вас эта таблица (реквизит и элемент) были созданы интерактивно, В примере текст строки делается красным если реквизит "Изменена" стал равен Истина. Первый блок - условие, второй блок - на какие колонки таблицы распространяется действие условного оформления, третий - само оформление. Контекст серверный. Вынесено в общий модуль, т.к. вызов идет с разных форм.
(7)
Само добавление условного оформления в (4), а вызов ниже:
Ну и программное создание таблицы значений:
Само добавление условного оформления в (4), а вызов ниже:
Процедура ХарактеристикиДобавитьЭлементы(Форма, ЭлементРодитель, ИмяТаблицы, ИмяТаблицыПодчиненные, НомерРеквизита, ИмяКоманды, Отбор = Неопределено)
// добавляем таблицу
ЭлементТаблица = Форма.Элементы.Добавить(ИмяТаблицы + НомерРеквизита + ИмяТаблицыПодчиненные, Тип("ТаблицаФормы"), ЭлементРодитель);
ЭлементТаблица.ПутьКДанным = ИмяТаблицы;
ЭлементТаблица.ИзменятьПорядокСтрок = Ложь;
ЭлементТаблица.ИзменятьСоставСтрок = Ложь;
ЭлементТаблица.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет;
ЭлементТаблица.Отображение = ОтображениеТаблицы.Список;
ЭлементТаблица.РежимВыделения = РежимВыделенияТаблицы.Одиночный;
ЭлементТаблица.ВысотаВСтрокахТаблицы = 1;
ЭлементТаблица.УстановитьДействие("Выбор", "ХарактеристикиВыбор");
ЭлементТаблица.УстановитьДействие("ПриАктивизацииСтроки", "ХарактеристикиПриАктивизацииСтроки");
ЭлементТаблица.УстановитьДействие("ПередНачаломИзменения", "ХарактеристикиПередНачаломИзменения");
ЭлементТаблица.КонтекстноеМеню.ОтображениеПодсказки = ОтображениеПодсказки.Нет;
// добавляем колонки
Элемент = Форма.Элементы.Добавить(ИмяТаблицы + НомерРеквизита + ИмяТаблицыПодчиненные + "Характеристика", Тип("ПолеФормы"), ЭлементТаблица);
Элемент.Вид = ВидПоляФормы.ПолеВвода;
Элемент.ПутьКДанным = ИмяТаблицы + "." + "Характеристика";
Элемент.ГоризонтальноеПоложениеВШапке = ГоризонтальноеПоложениеЭлемента.Центр;
Элемент.ТолькоПросмотр = Истина;
Элемент.Ширина = 10;
Элемент = Форма.Элементы.Добавить(ИмяТаблицы + НомерРеквизита + ИмяТаблицыПодчиненные + "Значение", Тип("ПолеФормы"), ЭлементТаблица);
Элемент.Вид = ВидПоляФормы.ПолеВвода;
Элемент.ПутьКДанным = ИмяТаблицы + "." + "Значение";
Элемент.ГоризонтальноеПоложениеВШапке = ГоризонтальноеПоложениеЭлемента.Центр;
Элемент.ВыбиратьТип = Ложь;
Элемент.ТолькоПросмотр = Ложь;
Элемент.МногострочныйРежим = Истина;
Элемент.Высота = 1;
Элемент.УстановитьДействие("ПриИзменении", "ХарактеристикиЗначениеПриИзменении");
Элемент.УстановитьДействие("НачалоВыбора", "ХарактеристикиЗначениеНачалоВыбора");
Элемент.УстановитьДействие("Открытие", "ХарактеристикиЗначениеОткрытие");
Элемент.Ширина = 5;
Элемент.КнопкаОткрытия = Истина;
Элемент.ИсторияВыбораПриВводе = ИсторияВыбораПриВводе.НеИспользовать;
Элемент = Форма.Элементы.Добавить(ИмяТаблицы + НомерРеквизита + ИмяТаблицыПодчиненные + "Дата", Тип("ПолеФормы"), ЭлементТаблица);
Элемент.Вид = ВидПоляФормы.ПолеВвода;
Элемент.ПутьКДанным = ИмяТаблицы + "." + "Дата";
Элемент.УстановитьДействие("ПриИзменении", "ХарактеристикиДатаПриИзменении");
// установим отбор
ЭлементТаблица.ОтборСтрок = Отбор;
...; // остальное
// добавим условное оформление
ДобавитьУсловноеОформление(Форма, ЭлементТаблица.Имя);
КонецПроцедуры
ПоказатьНу и программное создание таблицы значений:
Процедура ХарактеристикиДобавитьРеквизиты(Форма, ИмяТаблицы)
МассивРеквизитов = Новый Массив;
Реквизит = Новый РеквизитФормы(ИмяТаблицы, Новый ОписаниеТипов("ТаблицаЗначений"), , , Истина);
МассивРеквизитов.Добавить(Реквизит);
Форма.ИзменитьРеквизиты(МассивРеквизитов);
// колонки таблицы характеристик
МассивРеквизитов.Очистить();
Реквизит = Новый РеквизитФормы("Характеристика", Новый ОписаниеТипов("СправочникСсылка.Характеристики"), ИмяТаблицы, НСтр("ru = 'Характеристика'; en = 'Characteristic'"));
МассивРеквизитов.Добавить(Реквизит);
Реквизит = Новый РеквизитФормы("Значение", Справочники.Характеристики.ПолучитьСуммарныйТип(), ИмяТаблицы, НСтр("ru = 'Значение'; en = 'Value'"));
МассивРеквизитов.Добавить(Реквизит);
Реквизит = Новый РеквизитФормы("Дата", ОбщегоНазначения.ОписаниеТипаДата(ЧастиДаты.Дата), ИмяТаблицы, НСтр("ru = 'Дата'; en = 'Date'"));
МассивРеквизитов.Добавить(Реквизит);
Реквизит = Новый РеквизитФормы("Изменена", Новый ОписаниеТипов("Булево"), ИмяТаблицы, НСтр("ru = 'Изменена'; en = 'Changed'"));
МассивРеквизитов.Добавить(Реквизит);
Форма.ИзменитьРеквизиты(МассивРеквизитов);
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот