Как изменить цвет фона ячеек в таблице формы документа в зависимости от значения данных табличной части документа.
Добрый день. 1С 8.3.10 Управляемая форма.
Есть 2 таблицы ДанныеОВремени:
Сотрудник 1 2 3
Иванов Я Я Я
Петров Я Я Я
И
Сотрудник 1 2 3
Иванов Б Б Я
Петров Я Я Я
Как в таблице ДанныеОВремени1 покрасить ячейки в 2 и 3 колонке у сотрудника Иванов, т.к. у этого сотрудника в таблице ДанныеОВремени2 другие значения(Я <> Б)?
Есть 2 таблицы ДанныеОВремени:
Сотрудник 1 2 3
Иванов Я Я Я
Петров Я Я Я
И
Сотрудник 1 2 3
Иванов Б Б Я
Петров Я Я Я
Как в таблице ДанныеОВремени1 покрасить ячейки в 2 и 3 колонке у сотрудника Иванов, т.к. у этого сотрудника в таблице ДанныеОВремени2 другие значения(Я <> Б)?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Вот моя процедура проверки документов табель1, которую заполнили вручную, и табель2, которую заполнили автоматически
так красится вся колонка. На форме табличная часть ДанныеОВремени отображается как (Свойство = Элементы.ДанныеОВремени Значение = ТаблицаФормы Тип = ТаблицаФормы)
&НаСервере
Процедура КрасимОшибки(ТабТиповой, Д1, Д2)
//ТабТиповой - таблица документа табель2, заполненная вызовом типовой функции кнопки Заполнить на форме
ТабВремя = Объект.ДанныеОВремени;// эту таблицу заполнили вручную
НомСотр = 0;
Для Каждого СтрСотрудника Из ТабВремя Цикл
Сотр = СтрСотрудника.Сотрудник;
СтрокаПроверки = ТабТиповой.Найти(Сотр, "Сотрудник");
Если СтрокаПроверки <> Неопределено Тогда
Для дДень = Д1 По Д2 Цикл
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
//Вот тут не знаю как задать поле ячейки, где есть ошибка
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы["ДанныеОВремениВремя"+Ддень+"Представление"].Имя);
//Вот тут
//((Отбор работает.
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ДанныеОВремени["+НомСотр + "].Время"+дДень + "Представление");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = СтрокаПроверки["Время"+дДень + "Представление"];
ОтборЭлемента.Использование = Истина;
//Отбор работает.))
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", Новый Цвет(255, 0, 0));
Элемент.Использование = Истина;
КонецЦикла;
КонецЕсли;
НомСотр = НомСотр + 1;
КонецЦикла;
КонецПроцедуры
Показатьтак красится вся колонка. На форме табличная часть ДанныеОВремени отображается как (Свойство = Элементы.ДанныеОВремени Значение = ТаблицаФормы Тип = ТаблицаФормы)
(7) нет, там то же самое, там можно выбрать поля оформления.
Просто, если тебе надо сопоставлять одну таблицу с другой, то просто условка так обрабатывать там не будет. Ей нужно конкретно, в строке какое-то значение, и такая то колонка оформляется так то. В общем как обычная настройка списков
Просто, если тебе надо сопоставлять одну таблицу с другой, то просто условка так обрабатывать там не будет. Ей нужно конкретно, в строке какое-то значение, и такая то колонка оформляется так то. В общем как обычная настройка списков
&НаКлиенте
Процедура ОбработчикПриИзмененииКолонкиКоличества(Элемент);
Сверка = Элементы.Товары.ТекущиеДанные.Количество;
ТД = Элементы.Товары.ТекущиеДанные;
СверкаР = Сверка;
Для Сч = 1 По ДобавленныеРеквизиты.Количество() Цикл
ИмяРеквизита = СтрЗаменить(ДобавленныеРеквизиты[Сч-1].Значение,"Объект.Товары.","");
СверкаР = СверкаР - ТД[ИмяРеквизита];
КонецЦикла;
Элементы.Товары.ТекущиеДанные.КоличествоСверка = СверкаР;
Если Элементы.Товары.ТекущиеДанные.КоличествоСверка<0 Тогда
//Элементы.Товары.ТекущиеДанные.КоличествоСверка = 0;
//ТД = 0;
ЦветПоляТаблицы = Новый Цвет (255,0,0);
Элементы.Товары.КоличествоСверка.ЦветФона = ЦветПоляТаблицы;
Сообщить("Количество для сверки не может быть отрицательным!");
Возврат;
КонецЕсли;
КонецПроцедуры
ПоказатьВообщем, тут просто проверка содержимого ячейки, поэтому ячейка становится красной, если ошибка
Ну, используйте это как функцию чисто для изменения цвета. Прогоните ее или по данным через запрос, или пробегайтесь по всем ячейкам ТЧ. Просто нюанс, что если проверять все ячейки - будет шибко долго. А если пройтись по результатам запроса - наверняка будет быстрее. Ну, например, запросом выбрать ячейки, где выполняется условие, и потом в цикле пройтись конкретно по ним и изменить цвет.
(19) Условное Оформление не всегда подойдет. Т.к. иногда нужно опираться на реквизит Например номенклатуры.
т.е. если нужно чтобы строка была покрашена тогда когда Номенклатура.АссортиментнаяГруппа = ТакоеТоЗначение то это не прокатит, если только Ассортиментная группа не перечисление.
Т.е. нельзя "проваливаться" в реквизиты табличной части
т.е. если нужно чтобы строка была покрашена тогда когда Номенклатура.АссортиментнаяГруппа = ТакоеТоЗначение то это не прокатит, если только Ассортиментная группа не перечисление.
Т.е. нельзя "проваливаться" в реквизиты табличной части
(21) ну покажи пример.
Есть таблица Заказа, товары.
В ней есть Номенклатура реквизит ссылочный на справочник
В табличной части товары Заказа нет реквизита АссортиментнаяГруппа номенклатуры
Требуется, окрасить строку в цвет если Ассортиментная группа Номенклатуры принадлежит тому или иному значению
Очень интересно как же это приготовить!
Есть таблица Заказа, товары.
В ней есть Номенклатура реквизит ссылочный на справочник
В табличной части товары Заказа нет реквизита АссортиментнаяГруппа номенклатуры
Требуется, окрасить строку в цвет если Ассортиментная группа Номенклатуры принадлежит тому или иному значению
Очень интересно как же это приготовить!
(23) Я так понял ты предлагаешь добавить реквизит в табличную часть (в метаданные)
когда у тебя уже высоконагруженная система с кучей реквизитов и километрами кода это конечно выход, НО, тогда придется пройтись и заполнить все "старые" документы, инициировать заполнение этой колонки во всех процедурах где работаешь с табличной частью.
Слишком просто
когда у тебя уже высоконагруженная система с кучей реквизитов и километрами кода это конечно выход, НО, тогда придется пройтись и заполнить все "старые" документы, инициировать заполнение этой колонки во всех процедурах где работаешь с табличной частью.
Слишком просто
(25) Ну а в Левом значении что указывать?
Оформление = УсловноеОформление.Элементы.Добавить();
Оформление.Использование = Истина;
Поле1 = Оформление.Поля.Элементы.Добавить();
Поле1.Поле = Новый ПолеКомпоновкиДанных("Товары");
Отбор = Оформление.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Номенклатура.АссортиментнаяГруппа");
Отбор.ПравоеЗначение = Справочники.АссортиментныеГруппы.НайтиПоКоду("0000350");
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
Отбор.Использование = Истина;
Оформление.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Аквамарин);
Показать
(33) А ты думал как? Кастрюлю на плиту поставил, и дальше борщ сам сварится?
Пока ты выполнил только первый пункт. Приступай ко второму.Добавляешь нужную колонку в таблицу формы, подтягиваешь в неё нужное значение из Номенклатуры, и условным оформлением раскрашиваешь.
Пока ты выполнил только первый пункт. Приступай ко второму.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот