helpf.pro
Регистрация

v8.2 УП: Раскрасить строки табличной части документа по условию.

shcoder
28.09.2011 09:34Прочитано: 41404
Есть документ с табличной частью. Необходимо в этой табличной части раскрашивать в одинаковый цвет строки имеющие одинаковую дату (дата это колонка табчасти). Как это сделать? 1С 8.2 (управляемые формы).
Yandex
Возможно, вас также заинтересует
Реклама на портале
DJ_Serega
28.09.2011 09:59Ответ № 1
В 8.1 в событияэх табличной части есть: "ПриПолученииДанных" (Вызывается при получении данных табличным полем), можно написать:
Код 1C v 8.х
 
Для каждого СтрокаСписка Из ОформленияСтрок Цикл
Если СтрокаСписка.Проведен тогда
СтрокаСписка.ЦветФона = Новый Цвет(155, 155, 155);
КонецЕсли;
КонецЦикла;

Код не проверял, но приблизительно там образом я выделял строки проведенных документов.
shcoder
28.09.2011 13:52Ответ № 2
Проблема в том, что я имею дело с 8.2 УП. Там нет этого события.
typeharley
28.09.2011 15:46Ответ № 3
А событие "ПриВыводеСтроки" там есть?
shcoder
28.09.2011 18:05Ответ № 4
Нет конечно. Еще раз повторюсь, что это "управляемые формы". Слегка корявое решение я уже изобрел. Но хотелось бы посмотреть на ответы людей которые "понимают суть вещей".
Marfeus
29.09.2011 09:30Ответ № 5
в условном оформлении это можно сделать
Marfeus
29.09.2011 09:37Ответ № 6
вот пример кода, так что бы разобраться что к чему.

Код 1C v 8.2 УП
 Процедура ОтключениеДоступностиПоляСтроки() 

УО = ЭтаФорма.УсловноеОформление;
УО.Элементы.Очистить();
ЭлементУО = УО.Элементы.Добавить();

Оформляемоеполе = ЭлементУО.Поля.Элементы.Добавить(); // Поля таблицы для которых будет действовать оформление
Оформляемоеполе.Поле = Новый ПолеКомпоновкиДанных("ТабКолонка1");
Оформляемоеполе.Использование = ИСТИНА;


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




ЭлементУО.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", ИСТИНА); // Установка оформления
ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФОна",WebЦвета.БледноЗолотистый);

КонецПроцедуры
тебе надо будет обойти один раз таблицу записать даты в список значения, в отборе проверять есть ли дата в списке

Код 1C v 8.2 УП
  ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Таб.Дата"); 
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ЭлементОтбора.ПравоеЗначение = Даты;// даты это твой список значений
shcoder
29.09.2011 09:47Ответ № 7
(6) Marfeus, спасибо. Похожее решение изобрел сам вчера. В рамках этой задачи возникла теперь другая. А как это оформление которое я задал программно, можно сохранить? Что бы при последующем открытии документа оно было в том виде в котором я раскрасил.
Marfeus
29.09.2011 09:57Ответ № 8
лучше повесить код на событие ПриОткрытии формы. или его можно настроить сразу в свойствах формы тогда будет постоянно
shcoder
29.09.2011 13:55Ответ № 9
(8) Marfeus, И как будет выглядеть эта предварительная настройка? Я пытался что-то придумать с ней, не получилось. Если знаешь как, подскажи пожалуйста.
Marfeus
29.09.2011 15:09Ответ № 10
Интерактивно создать не получиться только программно потому что тебе при каждом изменении нужно перечитывать все даты из таблицы. забей код в процедуру и вызывай в событиях передОткрытием формы, и приИзмении поля.
shcoder
05.10.2011 10:17Ответ № 11
А если мне нужно, что бы заданные программно цвета для каждой колонки сохранялись? Грубо говоря, я делаю цветовую схему (в зависимости от того что выбрал пользователь) и при следующем открытии документа, он должен видеть тоже самое.
E_Migachev
05.10.2011 13:10Ответ № 12
(11) shcoder, значит ты должен где-то сохранить эти цвета, например создай еще колонку и в ней храни список значений Пользователь - Цвет для текущей колонки
shcoder
05.10.2011 13:36Ответ № 13
Создание скрытых колонок с параметрами как-то расово неверно. Сейчас пытаюсь отработать вариант сохранения получившегося условного оформления в хранилище значений, а потом накатывать его уже из хранилища. Но до рабочей реализации пока далеко =(
E_Migachev
05.10.2011 13:43Ответ № 14
(13) shcoder, как вариант *13
Marfeus
05.10.2011 15:31Ответ № 15
Когда ты задашь интерактивно в свойствах формы все настройки станут доступны в ЭтаФорма.УсловноеОформление и они будут сохранены и при следующем открытии дока, просто тебе нужно будет доработать, в событиях обращаться к нужному отбору и передатавать новый списокЗначений с датами.
Подсказка: Для быстрого перемещения к последнему ответу или к вопросу используйте или .
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.