|
Проблема с окраской ячейки табличного поля | ☑ | ||
---|---|---|---|---|
0
razbiralshik
05.02.13
✎
12:12
|
Нажимаем на кнопку, происходит следующее:
ЭлементыФормы.ТаблицаЗагрузки.ДобавитьСтроку(); СтрТабл = ЭлементыФормы.ТаблицаЗагрузки.ТекущаяСтрока; СтрТабл.НомерЗаказа = НомерЗаказа; Соответственно идет вызов события табличного поля "ПриВыводеСтроки": Процедура ТаблицаЗагрузкиПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки) Для Каждого ОформлениеЯчейки Из ОформлениеСтроки.Ячейки Цикл Если ОформлениеЯчейки.Имя = "НомерЗаказа" Тогда Если НомерЗаказаИзменен Тогда ОформлениеЯчейки.ЦветФона = WebЦвета.ТусклоОливковый; КонецЕсли; КонецЕсли; Если ОформлениеЯчейки.Имя = "Опции" Тогда Если ДопОборудованиеАвтомобиляИзменен Тогда ОформлениеЯчейки.ЦветФона = WebЦвета.ТусклоОливковый; КонецЕсли; КонецЕсли; КонецЦикла; НомерЗаказаИзменен = Ложь; ДопОборудованиеАвтомобиляИзменен = Ложь; КонецПроцедуры Но закраска как только появляется на ячейке, тут-же пропадает. Не пойму в чем проблема. Подскажите пожалуйста. |
|||
1
razbiralshik
06.02.13
✎
11:51
|
Никто не знает?
|
|||
2
Reset
06.02.13
✎
11:53
|
(1) Изза
НомерЗаказаИзменен = Ложь; ДопОборудованиеАвтомобиляИзменен = Ложь; |
|||
3
DrShad
06.02.13
✎
11:53
|
НомерЗаказаИзменен = Ложь;
ДопОборудованиеАвтомобиляИзменен = Ложь; |
|||
4
razbiralshik
06.02.13
✎
11:56
|
(2)(3) Убираю если, то вся колонка становится зеленая, а не только определенные ячейки
|
|||
5
Reset
06.02.13
✎
11:57
|
(4) Это логично
|
|||
6
Reset
06.02.13
✎
11:57
|
Переменная - то одна у тебя на все поле
|
|||
7
Reset
06.02.13
✎
11:59
|
Тебе при оформлении нужно или "НомерЗаказа" сравнивать с образцом на предмет измнен/не изменен, либо хранить булево для каждой строки.
|
|||
8
salvator
06.02.13
✎
12:00
|
(4) ОформлениеСтроки.Ячейки.НомерЗаказа.ЦветФона = ...
|
|||
9
Reset
06.02.13
✎
12:00
|
(8) У него так и есть, только через опу
|
|||
10
razbiralshik
06.02.13
✎
12:01
|
(7) скорее булево хранить для каждой ячейка что необходимо подкрашивать...
|
|||
11
hhhh
06.02.13
✎
12:10
|
(10) ПриВыводеСтроки может несколько раз вызываться при обновлениях экрана. У тебя сначала красит, а на втором проходе стирает. Потому что (3)
|
|||
12
razbiralshik
06.02.13
✎
12:14
|
(11) Ты прав. Как избежать это?
|
|||
13
hhhh
06.02.13
✎
12:17
|
(12) не надо устанавливать в ЛОЖЬ, подкрашивать всегда.
|
|||
14
razbiralshik
06.02.13
✎
12:27
|
(13) Тут идет заполнение циклом табличного поля, например может заполнится 10 строк где ячейка Опции не подкрашена, а как только попадается ячейка которую надо подкрасить, то в случае что ты предложил, 1С окрасит весь столбец...
|
|||
15
DrShad
06.02.13
✎
12:34
|
(14) тебе же сказали что из-за того что у тебя переменная одна на все строки
|
|||
16
razbiralshik
06.02.13
✎
12:35
|
(15) на каждую ячейку своя переменная у меня
|
|||
17
DrShad
06.02.13
✎
12:36
|
(16) врешь
|
|||
18
razbiralshik
06.02.13
✎
12:36
|
появляется строка, происходит анализ, и для каждого столбца строки формируется своя переменная
|
|||
19
DrShad
06.02.13
✎
12:36
|
на строки одна
|
|||
20
razbiralshik
06.02.13
✎
12:38
|
(17) не вру, могу алогоритм кинуть полный, только сперва сокращу его, а то огромный
|
|||
21
razbiralshik
06.02.13
✎
12:43
|
Процедура ОсновныеДействияФормыОсновныеДействияФормыВыполнить(Кнопка)
ТаблицаЗагрузки.Очистить(); ДопОборудованиеАвтомобиляИзменен = Ложь; Для Строка = 2 По ФайлСтрок Цикл ДопОборудование1 = СокрЛП(Excel.Cells(Строка, 16).Value); Результат = Запрос.Выполнить().Выгрузить(); СтрРезульт = Результат[0] Если НЕ СокрЛП(СтрРезульт.ДопОборудование) = СокрЛП(ДопОборудованиеАвтомобиля) Тогда ДопОборудованиеАвтомобиляИзменен = Истина; Иначе ДопОборудованиеАвтомобиляИзменен = Ложь; КонецЕсли; ЭлементыФормы.ТаблицаЗагрузки.ДобавитьСтроку(); СтрТабл = ЭлементыФормы.ТаблицаЗагрузки.ТекущаяСтрока; КонецЦикла; КонецПроцедуры Процедура ТаблицаЗагрузкиПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки) Если ДопОборудованиеАвтомобиляИзменен Тогда ОформлениеСтроки.Ячейки.Опции.ЦветФона = WebЦвета.ТусклоОливковый; КонецЕсли; КонецПроцедуры |
|||
22
razbiralshik
06.02.13
✎
12:44
|
(21) Так сперва ячейка закрашивается, потом закраска пропадает.
А если сделать так: Если НЕ СокрЛП(СтрРезульт.ДопОборудование) = СокрЛП(ДопОборудованиеАвтомобиля) Тогда ДопОборудованиеАвтомобиляИзменен = Истина; КонецЕсли; То вся колонка закрашивается. Вот что не так? |
|||
23
hhhh
06.02.13
✎
12:58
|
(22) ДопОборудованиеАвтомобиляИзменен - эта переменная у тебя одна на все ячейки. Тебе уже талдычим целое утро.
Если на экран выводится несколько ячеек подряд, они все у тебя покрасятся в один цвет, потому что все смотрят в ДопОборудованиеАвтомобиляИзменен |
|||
24
hhhh
06.02.13
✎
13:03
|
(21) и вот эту бредятину выбрось
ЭлементыФормы.ТаблицаЗагрузки.ДобавитьСтроку(); СтрТабл = ЭлементыФормы.ТаблицаЗагрузки.ТекущаяСтрока; напиши СтрТабл = ТаблицаЗагрузки.Добавить(); |
|||
25
razbiralshik
06.02.13
✎
13:12
|
(23) ладно, покопаюсь, спасибо.
(24) ну так если сделаю, то ТП заполнится разом в конце загрузки, а мне надо чтобы "они" видели добавление строк... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |