|
v8: Обработка по загрузке данных из файла Эксель в регистр сведений. | ☑ | ||
---|---|---|---|---|
0
razbiralshik
22.03.13
✎
16:08
|
Обработка по загрузке данных из файла Эксель в регистр сведений.
Нажимаем загрузить, загружаются данные в табличное поле. Причем, в табличное поле должны попасть только те строки Экселя, которые были изменены по сравнению с в предыдущей загрузкой (условный например, прошлый раз была строка номер 1 с данными: йцу, цук, уке, она загрузилась в РС, теперь в строке номер 1 данные такие: йцу, цук, 123. Это значит что эту строку необходимо загрузить в табличный документ). Загрузку я сделал, но теперь необходимо сделать, чтобы подкрашивались те ячейки табличного поля, в которых произошло изменение, например в желтый цвет. При загрузке стоит условие где сравниваются по ячейкам поля прошлой загрузки и текущей, если поле изменилось то переменная становится в истину: Если НЕ СокрЛП(СтрРезульт.НазваниеВторичногоСтатуса) = СокрЛП(НазваниеВторичногоСтатуса) Тогда НазваниеВторичногоСтатусаИзменен = Истина; КонецЕсли; //СтрТабл = ТаблицаЗагрузки.Добавить(); ЭлементыФормы.ТаблицаЗагрузки.ДобавитьСтроку(); СтрТабл = ЭлементыФормы.ТаблицаЗагрузки.ТекущаяСтрока; (делаю именно так, чтобы юзвери видели как табличное поле заполняется) идет переход в процедуру: Процедура ТаблицаЗагрузкиПриПолученииДанных(Элемент, ОформленияСтрок) Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл Если ДопОборудованиеАвтомобиляИзменен = Истина Тогда Иначе КонецЕсли; Если НазваниеВторичногоСтатусаИзменен = Истина Тогда Иначе КонецЕсли; КонецЦикла; КонецПроцедуры И тут возникает засада! Когда добавляется первая строчка в ТП, все отрабатывает нормально, в цикле всего одно значение, он обходит его и получаем то что необходимо. Когда добавляется вторая строчка в ТП, эта процедура не обращается к новой строчке, а начинает обход ТП с самого начала, получается что два раза и тут уже раскраска становится не та что мне нужна... не те поля закрашиваются. Подскажите, как закрасить только необходимые ячейки? |
|||
1
mikecool
22.03.13
✎
16:10
|
"Когда добавляется вторая строчка в ТП, эта процедура не обращается к новой строчке, а начинает обход ТП с самого начала" - не раскрашивать уже раскрашенные, ваш кеп
|
|||
2
mikecool
22.03.13
✎
16:10
|
вапчето ПриПолученииДанных вызывается один раз для отображаемого массива, заполни сразу все ТП и не парься
|
|||
3
razbiralshik
22.03.13
✎
16:12
|
(2) тогда придется для каждого поля создать поле значение для раскраски, число полей увеличится вдвое!
|
|||
4
Фокусник
22.03.13
✎
16:12
|
(0) Флаги ДопОборудованиеАвтомобиляИзменен и НазваниеВторичногоСтатусаИзменен должны быть реквизитами того того объекта (ТаблицаЗначений, ТабличнаяЧасть и т.д.), который отображается в ТабличномПоле, т.е. условие должно быть вида:
|
|||
5
razbiralshik
22.03.13
✎
16:13
|
(4) ну да, я знаю это вариант, видимо придется добавлять реквизиты ТЧ... коли других способов нет
|
|||
6
Фокусник
22.03.13
✎
16:20
|
(5) А как иначе? Любое "обновление данных" (их будет много, например при каждой прокрутке табличного поля) должно выполнять правильно раскраску, а не только "первое" :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |