Имя: Пароль:
1C
 
v8: Изменение цвета конкретной ячейки
0 SuperLiving Star
 
27.10.09
13:06
можно ли задать цвет для конкретной ячейки, не для столбца, не для встроки?
|
ЭлементыФормы.ОтработанноеВремя.ТекущаяКолонка.ЦветТекстаПоля = Новый Цвет(255, 0, 0);
|
это задание цвета для столбца...
1 SuperLiving Star
 
27.10.09
13:08
ЭлементыФормы.ОтработанноеВремя.ТекущаяСтрока[ЭлементыФормы.ОтработанноеВремя.ТекущаяКолонка.Имя].ЦветТекстаПоля = Новый Цвет(255, 150, 0);
|
хотелось бы вот так задать цвет для ячейки, но выдает ошибку...
|
{Форма.Форма(1815)}: Значение не является значением объектного типа (ЦветТекстаПоля)
       ЭлементыФормы.ОтработанноеВремя.ТекущаяСтрока[ЭлементыФормы.ОтработанноеВремя.ТекущаяКолонка.Имя].ЦветТекстаПоля = Новый Цвет(255, 150, 0);
2 zbv
 
27.10.09
13:10
(1) используй события ПриВыводеСтроки или ПриПолученииДанных
3 SuperLiving Star
 
27.10.09
13:10
(2) так я через документ в дереве значений обработки меняю значения и надо изменить цвет изменившегося значения...
4 SuperLiving Star
 
27.10.09
13:11
(2) может при получении данных использовать обработчик?
может он позволит перехватить изменение цвета ячейки?
5 SuperLiving Star
 
27.10.09
13:14
(2) чтот не знаю что это такое ПриПолученииДанных, ПриВыводеСтроки не подойдет, строки уже выведены...
6 SuperLiving Star
 
27.10.09
13:22
блян!!! никак не выходит ((((
7 ptiz
 
27.10.09
13:25
(5) Это обработчики таб.поля.
8 Defender aka LINN
 
27.10.09
13:33
(5) Тебя кто-то просил строить теории? Делай, как (2) сказал и не выеживайся :)
9 SuperLiving Star
 
27.10.09
13:46
(2) ну как как в 2 то?
я говорю я изменяю данные заполненного ДереваЗначений через документ, строки уже в нем введены !!!!
10 SuperLiving Star
 
27.10.09
13:47
(8) ПриПолученииДанных, - от куда этого брать???
11 SuperLiving Star
 
27.10.09
13:49
извините господа, туплю!!! Кажется Через ПриВыводеСтроки заводится....
12 SuperLiving Star
 
27.10.09
14:01
нифига не выходжить ((((
|
   Если Ахтунг = 1 Тогда
       Элемент.ЦветФона = Новый Цвет(255,0,0);
       Ахтунг = 0;
   КонецЕсли;
КонецПроцедуры
|
вот так при выводе строки задаю....
13 EasyRider
 
27.10.09
14:04
Попробуй задать имя области для строки и для столбца и обратиться к ячейке  путем ПолучитьОбласть("ИмяСтроки|ИмяСтолбца")
14 SuperLiving Star
 
27.10.09
14:10
(13) это как так извратиться ((((
15 EasyRider
 
27.10.09
14:15
(14)Пардон,неправильно вопрос прочитал.Это я для цвета ячейки табличного документа написал.
16 hhhh
 
27.10.09
14:17
(12) ну посмотри ПриВыводеСтроки в типовой. Откуда у тебя Элемент какой-то взялся?
17 SuperLiving Star
 
27.10.09
14:20
(16) Процедура ОтработанноеВремяПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
18 SuperLiving Star
 
27.10.09
14:22
(16) Беру Элемент, пытаюсь изменить его свойства цвета, либо что то меняется лобо не меняется вообще, ОформлениеСтроки меняет все данные (((( Я сделал глобальную переменную и в зависимости от её значения, меняю цвет, то есть если значение меняется через документ, но он нифига не задает цвет ((((
19 SuperLiving Star
 
27.10.09
14:23
(16) где что в типовой? можно пример???
20 Defender aka LINN
 
27.10.09
14:23
(18) Зови программиста.
21 73
 
27.10.09
14:26
22 SuperLiving Star
 
27.10.09
14:27
как то так может ОформлениеСтроки.Ячейки["Дата"+ы].ЦветФона = Новый Цвет(255,255,0); // желтый
23 SuperLiving Star
 
27.10.09
14:28
но как получать что в [] ?
24 SuperLiving Star
 
27.10.09
14:29
(21) да дело!!!
но как брать имя колонки ПриВводеСтроки() ?
от куда????
25 73
 
27.10.09
14:29
(23) А ДанныеСтроки там ведь не для мебели...
26 SuperLiving Star
 
27.10.09
14:32
опа!!! вот как Элемент.ТекущаяКолонка.Данные
27 SuperLiving Star
 
27.10.09
14:33
(25) ну и что ДынныеСтроки? А какая текущая то, вернее как называется поле которое бодлежало изменению....
28 SuperLiving Star
 
27.10.09
14:37
Если Ахтунг = 1 Тогда
       //ОформлениеСтроки.Ячейки
       ОформлениеСтроки.Ячейки[Элемент.ТекущаяКолонка.Данные].ЦветФона = Новый Цвет(255,0,0);
       Ахтунг = 0;
   КонецЕсли;
|
вот это выделило самую верхнюю...
29 SuperLiving Star
 
27.10.09
14:37
(((( а мне то нужно на которой я стою !!! (
30 SuperLiving Star
 
27.10.09
14:40
вот так вот (
31 SuperLiving Star
 
27.10.09
14:43
(25) подскажите как могут помочь данные строки?
32 hhhh
 
27.10.09
14:43
(30) ну Ахтунг зачем завел? Точно вчера пил? Ты же меняешь цвет в первой строке, а остальным строкам делаешь гитлер капут.
33 manyak
 
27.10.09
14:45

ОтработанноеВремяПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
условие тогда Оформлениестроки.ячейки.МойСтолбец.ЦветФона=Webцвета.Голубой конецесли;

МойСтолбец - вобьешь имя нужной колонки
34 hhhh
 
27.10.09
14:45
(32) тогда уж делай Ахтунг = Истина; Ахтунг = Ложь; что там у тебя за дурацкие цифры?
35 SuperLiving Star
 
27.10.09
14:46
(32) да нет я не пил, мне нельзя больше!!!
а если убрать Ахтунг, то при открытии все строги перефигачит (((
у меня так было.... (
36 SuperLiving Star
 
27.10.09
14:48
тама при выборе полей договоров в начале заполняется все, а это фукционас смены значений в отдельных ячейках, что проканает так? (33)(34)
37 73
 
27.10.09
14:48
(29) <(((( а мне то нужно на которой я стою !!! (>

И что, щелкать мышей запрещено?

Судя по (27) где-то надо запоминать, что подлежало изменению.

ПриВыводеСтроки() решает (0), но судя по (35) и (36) автору нужно совсем другое...
38 SuperLiving Star
 
27.10.09
14:50
(37) пока что бы хоть заливала определенную ячейкук, а то счас при открытии залила первый столбец, я же убрал ахтунг, потом заливает столбец весь где ячейка в которой я меняю
39 SuperLiving Star
 
27.10.09
14:51
он короче заливает весь столбец, не видит что нужно только одну ячейку, по строке не пересекается что ли, как ему дать понять то что ещё по строке нужно обрезать?
40 manyak
 
27.10.09
14:54
обьясни по порядку что ты хочешь сделать?: открыл форму дока, на нем сразу вывелась табличка (табличное поле), исходя из опр. условий - ты можешь в "ПриВыводеСтроки()" менять заливку нужной тебе ячеки
41 73
 
27.10.09
14:55
(39) Даже если определить, то она же выделена цветом выделения.

ЗЫ. Меняй алгоритм.

ЗЗЫ. Тебе отметить надо по всей ТЧ, что менялось, что-ли?
42 SuperLiving Star
 
27.10.09
14:58
(40) открываю обработку, меняю значения полей договоров
заливается ДеревоЗначений данными, затем нужно при выборе какой либо ячейки
нажимать на кнопку, открывается документ, в него переносятся данные, суть в том что при изменении числовых данных они менялись и в поле ДереваЗначений, и менялся цвет.... сейчас данные меняются а цвет никак не могу задать, даже при использовании ПриВыводеСтроки()
43 SuperLiving Star
 
27.10.09
14:59
(+42) то при открытии заливается цветом первый столбец, то потом при указании нужного и изменении данных через документ, снова заливается весь столбец где в ячейке менялись данные???
44 SuperLiving Star
 
27.10.09
15:01
(41) при открытии не нужно ничего заливать, а нужно при изменении значения и только в определенной ячейке...
45 73
 
27.10.09
15:02
А как узнать, что данные менялись?
Может, все-таки, с предыдущими сравнивать?
Или ты думаешь, что перейдя к другой ячейке, где-то само запомнится, что ты чт-то менял?
46 SuperLiving Star
 
27.10.09
15:05
(45)да пока говорю хотябы что бы в этой цветом залилось...
47 SuperLiving Star
 
27.10.09
15:05
а потом уже буду думать дальше, пока эту то не заливает ((
48 manyak
 
27.10.09
15:08
по нажатию кнопки запоминаешь строку на которой стоял:

инд_тек_стр=ТЧ.Индекс(элементыформы.ТП.ТекущаяСтрока);


ТЧ- !!!это источник данных (ТЧ дока)
ТП - табличное поле (табличка)
49 Axel2009
 
27.10.09
15:11
(0) а Вы думаете, что обработчик при выводе строки отрабатывает только один раз? =)))))
50 Michael99
 
27.10.09
15:13
для раскраски чего либо в ТП надо иметь критерий в ТЧ , пока ты не определишься с формальным критерием - чем эта конкретная ячейка (строка) отличается от других дело не двинется.
51 73
 
27.10.09
15:13
(47) В данном случае надо как раз подумать дальше...
52 SuperLiving Star
 
27.10.09
15:16
я не понимаю почему я не могу залить одну ячейку?
53 SuperLiving Star
 
27.10.09
15:17
ну или надо завести где хранить цвет столбца, одна залита другие белые...
54 Композитор
 
27.10.09
15:24
(52) Истина в 50.

Глянь, может, поможет...

Процедура ПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
   Если (Элемент.Имя = "ТПИгровоеПолеМое") ИЛИ
       (Элемент.Имя = "ТПИгровоеПолеЧужое") Тогда
       Для Каждого Ячейка из ОформлениеСтроки.Ячейки Цикл
           Если НЕ Ячейка.Имя = "НомерСтроки" Тогда
               Ячейка.ОтображатьТекст        = Ложь;
               Ячейка.ОтображатьФлажок    = Ложь;
               Ячейка.ОтображатьКартинку    = Истина;
               Ячейка.ИндексКартинки        = Ячейка.Значение;
           КонецЕсли;
       КонецЦикла;    
   ИначеЕсли Элемент.Имя = "ТабличноеПоле1" Тогда
       ОбычныйЦветФона = Новый Цвет(255,255,255);
       ВыделенныйЦветФона = Новый Цвет(0, 204,255);
       Если ДанныеСтроки.Количество = ДанныеСтроки.Из Тогда
            ОформлениеСтроки.Ячейки[1].ЦветФона = ВыделенныйЦветФона;
            ОформлениеСтроки.Ячейки[2].ЦветФона = ВыделенныйЦветФона;
        Иначе
            ОформлениеСтроки.Ячейки[1].ЦветФона = ОбычныйЦветФона;
            ОформлениеСтроки.Ячейки[2].ЦветФона = ОбычныйЦветФона;
       КонецЕсли;    
   КонецЕсли;    
КонецПроцедуры
55 manyak
 
27.10.09
15:27
по нажатию кнопки запоминаешь строку на которой стоял:

инд_тек_стр=ТЧ.Индекс(элементыформы.ТП.ТекущаяСтрока);


окрасит весь столбец:

ОтработанноеВремяПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
Оформлениестроки.ячейки.МойСтолбец.ЦветФона=Webцвета.Голубой
...


Окрасит нужную ячеку в нужной ячейке:

ОтработанноеВремяПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
если тек+индекс=индекс_нужной тогда  Оформлениестроки.ячейки.МойСтолбец.ЦветФона=Webцвета.Голубой
...
56 manyak
 
27.10.09
15:27
тек_индекс
57 manyak
 
27.10.09
15:45
по нажатию кнопки запоминаешь строку на которой стоял:

инд_измененной=ТЧ.Индекс(элементыформы.ТП.ТекущаяСтрока);



ОтработанноеВремяПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
инд_текущей_строки=данныестроки.номерстроки-1
если инд_текущей_строки=индекс_измененной тогда  Оформлениестроки.ячейки.МойСтолбец.ЦветФона=Webцвета.Голубой
58 hhhh
 
27.10.09
18:16
так надо еще прошлые текущие обратно перекрасить
59 SuperLiving Star
 
28.10.09
06:40
(50)(54)(55) Пробую !
60 SuperLiving Star
 
28.10.09
06:46
(50) ещё дело в том что у меня ДеревоЗначений...
61 Rie
 
28.10.09
06:56
(60) "И на четвёртый день Соколиный Глаз заметил, что в сарае не хватает одной стены..."
Ну а что это меняет?
62 SuperLiving Star
 
28.10.09
07:08
Элемент.ТекущаяКолонка.Данные -вот идекс колонки
ЭлементыФормы.ОтработанноеВремя.ТекущаяСтрока[Элемент.ТекущаяКолонка.Данные] - вот значение колонки, это все я получаю в ОтработанноеВремяПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
и ОтработанноеВремя это ДеревоЗначений в упор не пойму как задавать цвет разным строкам, у него нет реквизита НомерСтроки...
63 Rie
 
28.10.09
07:13
(62) У тебя есть ДанныеСтроки и ОформлениеСтроки (если речь идёт о ПриВыводеСтроки). Чего тебе не хватает для задания цвета?
64 SuperLiving Star
 
28.10.09
07:14
(54) все это тоже заливает весь столбец(((
65 SuperLiving Star
 
28.10.09
07:18
1. нужно отследить что действие происходит именно при изменении одной ячейки, а не при заполнении всего дерева значениями...
2. получить строку и столбец, и проверяя что это именно этта строка в пересечении именно с этим столбцом, залить ячейку...
66 SuperLiving Star
 
28.10.09
07:20
получается заливать один столбец, нужно как то определить, как делать остальные строки белыми....
67 SuperLiving Star
 
28.10.09
07:28
(55) у меня дерево значений на форме обработки, а не табличная часть и табличное поле, там к сожелению нет видимо таких свойств вообще...
68 SuperLiving Star
 
28.10.09
07:43
(57) весь косяк в том, что у моих ДанныеСтроки, нет номера строки (((((
69 vmv
 
28.10.09
08:58
я тоже раньше думал, что отредактированное значение было неплохо выделять цветом, но как оказалось напргать цветовой кашей пользователя не рационально)

Лучше использовать шрифты и выделять отредактированное значение подчеркиванием шрифта - это логично и эргономично)
70 SuperLiving Star
 
28.10.09
09:02
(69) да я бы хоть как бы сделал, хоть выделенным текстом, хоть подчеркиванием, хоть курсивом....
71 vmv
 
28.10.09
09:02
что касается отлова и сохранения факта редактирования в дереве, то я поступил ...не рационально, но надежно - продублировал и скрыл числовые колонки, в которых сохряняю предыдущие значения.

Тогда при открытии сохраннего дерева(неважно где), видны отредактированные значения предущих сеансов)
72 SuperLiving Star
 
28.10.09
09:05
(71) в моём случае, думаю при подчеркивании или делании шрифта жирным он поменяется во всей колонке как и с цветом ((( к стати в моем дереве то же есть продублированные числовые колонки, видимо его разработчик учитывал этот вариант...
73 SuperLiving Star
 
28.10.09
09:06
только всей парадигмы пока что не пойму (((
74 SuperLiving Star
 
28.10.09
09:07
тока они содержат другие идентификаторы ((( может ещё для чего нужны...
75 SuperLiving Star
 
28.10.09
09:15
(71) а выделение текста или цвета ячеек отдельных в дереве делали?
76 vmv
 
28.10.09
09:28
// Вставляется в обработчики ПриВыводеСтроки для деревьев "связанных" с табличной частью.
Процедура ДеревоТабличнойЧастиПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки, мСуффиксыЧК) Экспорт
   
   Ячейки  = ОформлениеСтроки.Ячейки;
   Для Инд = 0 По мСуффиксыЧК.ВГраница() Цикл
       УстановитьШрифтыОтредактированныхЯчеек(Ячейки, Суффикс, ДанныеСтроки);
   КонецЦикла;
   
КонецПроцедуры

Процедура УстановитьШрифтыОтредактированныхЯчеек(Ячейки, Суффикс, ДанныеСтроки)
   
   // Суффикс для имени числовой колонки может принимать значения
   // из фиксированного массива {"Мин", "1", "2", "3", "Макс"} или любой другой логический набор.
   
   // Значение   - это уже отредактированное перед заходом на обработчик "ПриВыводеСтроки"
   // ИзмененоНа - предыдущее значение этого же реквизита
   
   Значение   = ОбщегоНазначения.ПреобразоватьВЧисло(ДанныеСтроки["Величина"         + Суффикс]);
   ИзмененоНа = ОбщегоНазначения.ПреобразоватьВЧисло(ДанныеСтроки["ВеличинаИзменено" + Суффикс]);
   
   Если ИзмененоНа <> 0 Тогда
       Детализации.УстановитьШрифтЯчейкиПриИзмененииЧисловогоЗначения(Ячейки["Величина" + Суффикс], Значение, ИзмененоНа);
   КонецЕсли;
   
КонецПроцедуры

Процедура УстановитьШрифтЯчейкиПриИзмененииЧисловогоЗначения(Ячейка, Значение, ИзмененоНа) Экспорт
   Перем Жирный, Подчеркивание;
   
   Если ИзмененоНа = 0 Тогда
       Возврат;
   КонецЕсли;
   
   Если ИзмененоНа <  0 Тогда
       Жирный = Истина;
   КонецЕсли;
   
   Если ИзмененоНа <> 0 Тогда
       Подчеркивание = Истина;
   КонецЕсли;
   
   Ячейка.Шрифт = Новый Шрифт(Ячейка.Шрифт,,, Жирный,,Подчеркивание);
       
КонецПроцедуры

Этого достаточно для решения вашей проблемы, а задачу сохранения изменного значения в колонку дубль - решите сами. И не важно где вы меняеете ревкизит
в табличной части части документа или ее проекции в дерево, как говорил один лидер:"Это реально сделать") осталось чуть-чуть подумать самому)
77 SuperLiving Star
 
28.10.09
09:32
(76) Ок! Большое спасибо!!! Посмотрю...
78 vmv
 
28.10.09
09:36
ИзмененоНа, ес-но, дельта, проще сохранять ее, а не предыдущее значение)
79 vmv
 
28.10.09
09:39
последня пр-ра должна быть такой

Процедура УстановитьШрифтЯчейкиПриИзмененииЧисловогоЗначения(Ячейка, Значение, ИзмененоНа) Экспорт
   Перем Жирный, Подчеркивание;
   
   Если ИзмененоНа = 0 Тогда
       Возврат;
   КонецЕсли;
     
   Жирный        = Ячейка.Шрифт.Жирный;
   Подчеркивание = Ячейка.Шрифт.Подчеркивание;
   
   Если ИзмененоНа <  0 Тогда
       Жирный = Истина;
   КонецЕсли;
   
   Если ИзмененоНа <> 0 Тогда
       Подчеркивание = Истина;
   КонецЕсли;
   
   Ячейка.Шрифт = Новый Шрифт(Ячейка.Шрифт,,, Жирный,,Подчеркивание);
       
КонецПроцедуры

"Неопределено" не катит в параметрах. все
80 SuperLiving Star
 
28.10.09
09:46
(79) Сенкс !!!
81 Композитор
 
28.10.09
09:59
(64) у меня не заливает весь столбец. Заливает именно одну ячейку в нужной строке.
82 SuperLiving Star
 
28.10.09
10:52
(81)   ИначеЕсли Элемент.Имя = "ТабличноеПоле1" Тогда
       ОбычныйЦветФона = Новый Цвет(255,255,255);
       ВыделенныйЦветФона = Новый Цвет(0, 204,255);
       Если ДанныеСтроки.Количество = ДанныеСтроки.Из Тогда
            ОформлениеСтроки.Ячейки[1].ЦветФона = ВыделенныйЦветФона;
            ОформлениеСтроки.Ячейки[2].ЦветФона = ВыделенныйЦветФона;
        Иначе
            ОформлениеСтроки.Ячейки[1].ЦветФона = ОбычныйЦветФона;
            ОформлениеСтроки.Ячейки[2].ЦветФона = ОбычныйЦветФона;
       КонецЕсли;    

вот этот блок у вас это делает???
просто у меня, не таблица, а дерево !(
83 SuperLiving Star
 
30.10.09
08:55
вот этой процедурой я перемещаю числовое значение в ячейку таблицы значений дерева значений, как значение в этой ячейке выделить жирным шрифтом, если цветом не получается???
|
// №1.1 Процедура обработки нажатия на пункте подменю, вызывающая корректировку соответствующей ячейки ДереваЗначений
Процедура КнопкаСформироватьНажатие(Элемент)
ИскомыйДокумент = Документы.КорректировкаТабеля.НайтиПоНомеру(Элемент.Имя, Дата(Элемент.Текст));
Если НЕ ИскомыйДокумент.Пустая() Тогда
   // поиск поста в котором следует произвести поиск сотрудника
   ОтработанноеВремя.Строки.Найти(ИскомыйДокумент.ОтработанноеВремя[0].ОбъектОхраны,"ПостСотрудник");
   // поиск сотрудника в найденном посту, и получение значения типа "СтрокаДереваЗначений"
   ТекСтрока = ОтработанноеВремя.Строки.Найти(ИскомыйДокумент.ОтработанноеВремя[0].ФизЛицо,"ПостСотрудник",Истина);
   ТекСтрока["Дата"+ИскомыйДокумент.ОтработанноеВремя[0].Число] = ИскомыйДокумент.ОтработанноеВремя[0].ОтработанноеВремя;
   // взята из процедуры ОтработанноеВремяПоДатеПриИзменении(Элемент), обновляет итоговые значения строки по сотруднику
   ЗарегистрироватьИзмененияПоДню();
КонецЕсли;
КонецПроцедуры
// -------------------------------------------------------------------------------------------------------------
84 SuperLiving Star
 
30.10.09
09:08
(79) Сейчас скопировал вашу разработку из (76), пробую разобраться, пока что туговато, вы на связи???
85 SuperLiving Star
 
30.10.09
09:16
НАПРИМЕР, что все же такое переменная мСуффиксыЧК (в первой процедуре) и объект Детализации (во второй процедуре) ?
86 SuperLiving Star
 
30.10.09
10:53
(vmv) я хотел бы у вас проконсультироваться...