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