Как изменить цвет фона ячеек в таблице формы документа в зависимости от значения данных табличной части документа.

1. Salavat88 18.12.17 07:53 Сейчас в теме
Добрый день. 1С 8.3.10 Управляемая форма.

Есть 2 таблицы ДанныеОВремени:

Сотрудник 1 2 3

Иванов Я Я Я
Петров Я Я Я

И

Сотрудник 1 2 3

Иванов Б Б Я
Петров Я Я Я

Как в таблице ДанныеОВремени1 покрасить ячейки в 2 и 3 колонке у сотрудника Иванов, т.к. у этого сотрудника в таблице ДанныеОВремени2 другие значения(Я <> Б)?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Alexey_ 27 18.12.17 08:05 Сейчас в теме
3. Salavat88 18.12.17 08:07 Сейчас в теме
А как задать УО на ячейку?
4. pm74 203 18.12.17 08:20 Сейчас в теме
(3)на форму , точнее ее табличную часть , там можно указать какую именно ячейку раскрашивать
5. Salavat88 18.12.17 09:21 Сейчас в теме
Вот моя процедура проверки документов табель1, которую заполнили вручную, и табель2, которую заполнили автоматически

&НаСервере
Процедура КрасимОшибки(ТабТиповой, Д1, Д2)
	//ТабТиповой - таблица документа табель2, заполненная вызовом типовой функции кнопки Заполнить на форме
	
	ТабВремя = Объект.ДанныеОВремени;// эту таблицу заполнили вручную

	НомСотр = 0;
	Для Каждого СтрСотрудника Из ТабВремя Цикл
		Сотр = СтрСотрудника.Сотрудник;
		СтрокаПроверки = ТабТиповой.Найти(Сотр, "Сотрудник");
		Если СтрокаПроверки <> Неопределено Тогда
			Для дДень = Д1 По Д2 Цикл
				Элемент = УсловноеОформление.Элементы.Добавить();
				ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
		
//Вот тут не знаю как задать поле ячейки, где есть ошибка
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы["ДанныеОВремениВремя"+Ддень+"Представление"].Имя);
//Вот тут

//((Отбор работает. 

				ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));

				
                                ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ДанныеОВремени["+НомСотр + "].Время"+дДень + "Представление");
				ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
				ОтборЭлемента.ПравоеЗначение = СтрокаПроверки["Время"+дДень + "Представление"];
				ОтборЭлемента.Использование = Истина;
//Отбор работает.)) 
				
				Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", Новый Цвет(255, 0, 0));
				Элемент.Использование = Истина;
			КонецЦикла;
		КонецЕсли;
		НомСотр = НомСотр + 1;
	КонецЦикла; 
КонецПроцедуры
Показать



так красится вся колонка. На форме табличная часть ДанныеОВремени отображается как (Свойство = Элементы.ДанныеОВремени Значение = ТаблицаФормы Тип = ТаблицаФормы)
6. Boneman 301 18.12.17 09:42 Сейчас в теме
удалил, возможно в данной задаче мой коммент некорректен
7. Salavat88 18.12.17 10:10 Сейчас в теме
(6)Аха. Мне Условное оформление нужно задать для конкретной ячейки. Как я понимаю, через конфигуратор можно только для строк ТЧ
8. Boneman 301 18.12.17 10:35 Сейчас в теме
(7) нет, там то же самое, там можно выбрать поля оформления.
Просто, если тебе надо сопоставлять одну таблицу с другой, то просто условка так обрабатывать там не будет. Ей нужно конкретно, в строке какое-то значение, и такая то колонка оформляется так то. В общем как обычная настройка списков
9. Sanario 27 18.12.17 11:52 Сейчас в теме
О! Знакомая задача. Решена была. Помощь еще требуется или как?
10. Salavat88 18.12.17 11:56 Сейчас в теме
11. Sanario 27 18.12.17 12:16 Сейчас в теме
Счас поищу, куда прописал и пришлю пример рабочей процедуры
12. Sanario 27 18.12.17 12:23 Сейчас в теме
&НаКлиенте
Процедура ОбработчикПриИзмененииКолонкиКоличества(Элемент);
	Сверка  = Элементы.Товары.ТекущиеДанные.Количество;
	ТД      = Элементы.Товары.ТекущиеДанные;
	СверкаР = Сверка;
	Для Сч = 1 По ДобавленныеРеквизиты.Количество() Цикл
		ИмяРеквизита = СтрЗаменить(ДобавленныеРеквизиты[Сч-1].Значение,"Объект.Товары.","");
		СверкаР = СверкаР - ТД[ИмяРеквизита];
	КонецЦикла;	
	Элементы.Товары.ТекущиеДанные.КоличествоСверка = СверкаР;
	
	
	Если Элементы.Товары.ТекущиеДанные.КоличествоСверка<0 Тогда
		//Элементы.Товары.ТекущиеДанные.КоличествоСверка = 0;
		//ТД = 0;
		ЦветПоляТаблицы = Новый Цвет (255,0,0);
		Элементы.Товары.КоличествоСверка.ЦветФона = ЦветПоляТаблицы;
		Сообщить("Количество для сверки не может быть отрицательным!");
		Возврат;
	КонецЕсли;	
	
КонецПроцедуры	
Показать



Вообщем, тут просто проверка содержимого ячейки, поэтому ячейка становится красной, если ошибка
15. Salavat88 18.12.17 13:31 Сейчас в теме
(12) Так мне же нужно пробежаться по всем строкам и колонкам, сравнить значения в колонках и изменить цвет фона ячейки. Там нет ТекущихДанных
13. Sanario 27 18.12.17 12:43 Сейчас в теме
Может быть поможет
vitalchikkk; voa-voavoa-voa; +2 Ответить
14. Salavat88 18.12.17 13:17 Сейчас в теме
(13) Благодарю Вас. Сейчас попробую и отпишусь.
16. Sanario 27 18.12.17 14:20 Сейчас в теме
Ну, используйте это как функцию чисто для изменения цвета. Прогоните ее или по данным через запрос, или пробегайтесь по всем ячейкам ТЧ. Просто нюанс, что если проверять все ячейки - будет шибко долго. А если пройтись по результатам запроса - наверняка будет быстрее. Ну, например, запросом выбрать ячейки, где выполняется условие, и потом в цикле пройтись конкретно по ним и изменить цвет.
17. Salavat88 19.12.17 14:13 Сейчас в теме
(16)
в цикле пройтись конкретно по ним и изменить цвет
. Вот это главный вопрос. Примерчик можете кинуть, как изменить цвет фона хоть Первой ячейки Первой строки любой ТаблицыФормы
18. Sanario 27 20.12.17 16:19 Сейчас в теме
Так пример в куске кода, что я Вам выше выложил. Плюс еще у меня и колонки ТЧ документа там динамические...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот