Имя: Пароль:
1C
1С v8
Покрасить фон строки табПоля без события ПриВыводеСтроки
, ,
0 Crush
 
29.03.13
18:40
Как мне установить цвет фона текущей строки??

Процедура ТаблицаВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
   //ОткрытьЗначение(ВыбраннаяСтрока[Колонка.Имя]);
   текОформление    = Элемент.ОформлениеСтроки(ВыбраннаяСтрока);
   ВыборЦвета    = новый ДиалогВыбораЦвета;
   ВыборЦвета.Цвет    = текОформление.ЦветФона;
   Если ВыборЦвета.Выбрать() Тогда
       текОформление.ЦветФона    = ВыборЦвета.Цвет;
   КонецЕсли;
   Элемент.ОбновитьСтроки();
   СтандартнаяОбработка    = Ложь;
КонецПроцедуры

В текОформление устанавливается цвет фона, а на табличное поле не влияет. В чем косяк? Или как еще можно к оформлению строки добраться?
1 Crush
 
29.03.13
18:42
Как получить объект ОформленияСтрок не из ПриПолученииДанных?
2 Crush
 
29.03.13
18:47
Пока только вижу вариант добавлять колонку со значением цвета и обновлять таблицу, что б сработало событие ПриВыводеСтроки.
А как на лету?? Без создания дополнительных хранилищ?
Или как вызвать событие  ПриВыводеСтроки передав ему нужный параметр ОформлениеСтроки?
3 Kreont
 
29.03.13
18:48
ОформленияСтрок - он ведь всегда доступен, через обект "родитель".
4 Crush
 
29.03.13
18:52
(3) Да ну? А где он доступен?  У меня внешняя обработка с табличным полем на форме. ТипЗначения = ТаблицаЗначений.
5 Crush
 
29.03.13
18:53
Или вешать ОформленияСтрок в переменную формы? Щя попробую.
6 Crush
 
29.03.13
18:56
Бу га га :)
   текОформление    = текОформления.Получить(0);//(ВыбраннаяСтрока);
   ВыборЦвета    = новый ДиалогВыбораЦвета;
   ВыборЦвета.Цвет    = текОформление.ЦветФона;
   Если ВыборЦвета.Выбрать() Тогда
       текОформление.ЦветФона    = ВыборЦвета.Цвет;
   КонецЕсли;
   Элемент.ОбновитьСтроки();
   СтандартнаяОбработка    = Ложь;

Возникшая проблема привела к закрытию программы:)))
7 Crush
 
29.03.13
18:58
О.. Наблюдается стабильность. Рекомендую:

Процедура ТабличкоВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
   текОформление    = текОформления.Получить(0);    ВыборЦвета    = новый ДиалогВыбораЦвета;
   ВыборЦвета.Цвет    = текОформление.ЦветФона;
   Если ВыборЦвета.Выбрать() Тогда
       текОформление.ЦветФона    = ВыборЦвета.Цвет;
   КонецЕсли;
   Элемент.ОбновитьСтроки();
   СтандартнаяОбработка    = Ложь;
КонецПроцедуры


Процедура ТабличкоПриПолученииДанных(Элемент, ОформленияСтрок)
   текОформления    = ОформленияСтрок;
КонецПроцедуры
8 Crush
 
29.03.13
18:59
Сверху еще определить
Перем текОформление;
9 Crush
 
29.03.13
19:00
Вылетает даже при попытке в отладчике прочитать содержимое текОформление
10 Crush
 
29.03.13
19:02
А вот количество индексов даёт посмотреть
текОформления.Количество()    56 207    Число
Но от куда столько? У меня 22 строки и 4 колонки.
11 Kreont
 
29.03.13
19:07
Процедура ТабличкоВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
   Фон    = Элемент.ЦветФона;
12 Crush
 
29.03.13
19:11
Неа. Так не работает. Во первых это ФонВсегоТабличко, а во вторых сама таблица не хочет краситься:(
13 Reset
 
29.03.13
19:12
Цитата из СП:

Возвращаемый объект оформления строки является самостоятельным объектом и не связан с содержимым табличного поля. Поэтому при его редактировании изменения в табличном поле не отображаются. Для того, чтобы изменения данного объекта отображались в табличном поле необходимо пользоваться обработчиками событий ПриВыводеСтроки или ПриПолученииДанных.


Не добавить, не прибавить.
14 Reset
 
29.03.13
19:13
цитата из описания метода ОформлениеСтроки()
15 Crush
 
29.03.13
19:15
Уже раз пять прочитал это в СП в надежде, что текст изменится и появится какая то возможность менять цвет без событий ПриВыводеСтроки или ПриПолученииДанных. Надежда умирает последней:)
16 Kreont
 
29.03.13
19:17
неверю сп что никак, ща потестирую :)
17 Crush
 
29.03.13
19:27
Я пока добавил в таблицу временную колонку. С ней получается нужный результат. Но в голове не помещается почему нельзя инициализировать ВыводСтроки задав параметры оформления.
18 Kreont
 
29.03.13
19:33
(17) Ну да тут надо себе держать где то в переменной что надо разрисовать. Типа таблицу номерСтроки + параметры оформления, и по них уже заполнять в "ПриВыводеСтроки или ПриПолученииДанных".
19 Reset
 
29.03.13
19:36
(17) вот этот набор слов не понятен разуму моему "инициализировать ВыводСтроки задав параметры оформления"
20 Reset
 
29.03.13
19:38
Как будет выглядеть строка, можно задать ТОЛЬКО:
а) в свойствах ТП, для всех строк.
б) в событиях ПриВыводеСтроки, ПриПолученииДанных - конкретно перем отображением.
21 Kreont
 
29.03.13
19:39
(19) убедил, без использования "ПриВыводеСтроки или ПриПолученииДанных" никак :))

Ну типа так:
Перем СтрокаНомерСЦветом;

Процедура ТабличнаяЧастьВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
   
   СтрокаНомерСЦветом = ВыбраннаяСтрока.НомерСтроки;
   
КонецПроцедуры

Процедура ТабличнаяЧастьПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
   Если ДанныеСтроки.НомерСтроки = СтрокаНомерСЦветом Тогда
   ОформлениеСтроки.ЦветФона = Новый Цвет(40,0,60);
   КонецЕсли;
КонецПроцедуры

,только ТС- надо будет запоминать не одну строку а массив, я так понял, ну и наверное запретить для ТЧ сортировки, отборы и т.п. что б попроще.
22 Crush
 
29.03.13
19:41
Да я вот тоже уже соглашаюсь, что никак.
С пятницей всех!:)
23 Magic Dick
 
29.03.13
19:42
условное оформление
24 Reset
 
29.03.13
19:43
(23) не читатель
(22) Спасибо, и тебя тем же :)
Программист всегда исправляет последнюю ошибку.