Заполнить реквизит ТЧ последующей строки на основании реквизита из предыдущей

1. Max0n57 13.09.23 10:15 Сейчас в теме
Здравствуйте, уважаемые форумчане. Помогите, пожалуйста. Есть табличная часть ТЧПЛ. Мне нужно, чтобы в реквизит СпидометрВозвращения попадала сумма двух других реквизитов. Этого я, вроде бы, добился. Кроме того, в следующей строке реквизит СтрТЧ.СпидометрВыезда должен принять значение СтрТЧ.СпидометрВозвращения из предыдущей.
При попытке запустить мой пример выходит следующая ошибка (Получение элемента по индексу для значения не определено
{ВнешняяОбработка.ЗаполнитьПробегИТопливоПоСреднемуПоТопливу.Форма.Форма.Форма(330)}: СтрТЧ.СпидометрВыезда[Объект.ТЧПЛ.Индекс(СтрТЧ)+1] = СтрТЧ.СпидометрВозвращения;) Подскажите, пожалуйста, как мне реализовать заполнение реквизита последующей строки на основании реквизита из предыдущей?
Процедура ТЧПЛПробегПоGPSПриИзменении(Элемент)
    Для Каждого СтрТЧ Из Объект.ТЧПЛ Цикл
        
        СтрТЧ.СпидометрВозвращения = СтрТЧ.СпидометрВыезда + СтрТЧ.ПробегПоGPS;
        СтрТЧ.СпидометрВыезда[Объект.ТЧПЛ.Индекс(СтрТЧ)+1] = СтрТЧ.СпидометрВозвращения;
    КонецЦикла;
КонецПроцедуры


Далее я попробовал сделать так:
	ТекСтрока = Элементы.ТЧПЛ.ТекущаяСтрока;
	CтрокаТЧ = Элементы.ТЧПЛ.ТекущиеДанные;
	ИндексТекСтроки = Объект.ТЧПЛ.Индекс(ТекСтрока);
	ВсегоСтрок = Объект.ТЧПЛ.Количество();	
	Для ИндексТекСтроки=0 По ВсегоСтрок-1 Цикл
		
		CтрокаТЧ.СпидометрВозвращения[ИндексТекСтроки] = CтрокаТЧ.СпидометрВыезда[ИндексТекСтроки] + CтрокаТЧ.ПробегПоGPS[ИндексТекСтроки];
		CтрокаТЧ.СпидометрВыезда[ИндексТекСтроки+1] = CтрокаТЧ.СпидометрВозвращения[ИндексТекСтроки];
	КонецЦикла;
Показать

Вышла аналогичная ошибка.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. VZyryanov 13.09.23 10:39 Сейчас в теме
Объект.ТЧПЛ[ИндексТекСтроки].СпидометрВозвращения
3. Max0n57 13.09.23 10:43 Сейчас в теме
(2)Это во втором примере нужно подставить?
4. Max0n57 13.09.23 10:49 Сейчас в теме
(2)Исправил на:
	ТекСтрока = Элементы.ТЧПЛ.ТекущаяСтрока;
	CтрокаТЧ = Элементы.ТЧПЛ.ТекущиеДанные;
	ИндексТекСтроки = Объект.ТЧПЛ.Индекс(ТекСтрока);
	ВсегоСтрок = Объект.ТЧПЛ.Количество();	
	Для ИндексТекСтроки=0 По ВсегоСтрок-1 Цикл
		
		Объект.ТЧПЛ[ИндексТекСтроки].СпидометрВозвращения = Объект.ТЧПЛ[ИндексТекСтроки].СпидометрВыезда + Объект.ТЧПЛ[ИндексТекСтроки].ПробегПоGPS;
		Объект.ТЧПЛ[ИндексТекСтроки+1].СпидометрВыезда = Объект.ТЧПЛ[ИндексТекСтроки].СпидометрВозвращения;
	КонецЦикла;
Показать

Теперь ошибка следующая: Индекс находится за границами массива
{ВнешняяОбработка.ЗаполнитьПробегИТопливоПоСреднемуПоТопливу.Форма.Форма.Форма(334)}: Объект.ТЧПЛ[ИндексТекСтроки+1].СпидометрВыезда = Объект.ТЧПЛ[ИндексТекСтроки].СпидометрВозвращения;
7. VZyryanov 13.09.23 13:56 Сейчас в теме
(4) Индекс за границами массива в Объект.ТЧПЛ[ИндексТекСтроки+1].СпидометрВыезда,
когда ИндексТекСтроки = ВсегоСтрок-1.
5. starjevschik 13.09.23 10:52 Сейчас в теме
При переборе запомнить значение в переменную и в следующей итерации подставить его...
Пред = Неопределено;
Для а = 0 По Макс Цикл
ТЧ[а].Пред = Пред;
Пред =ТЧ[а].Нужное;
КонецЦикла; 
6. Max0n57 13.09.23 11:37 Сейчас в теме
(5)
ТекСтрока = Элементы.ТЧПЛ.ТекущаяСтрока;
ИндексТекСтроки = Объект.ТЧПЛ.Индекс(ТекСтрока);
ВсегоСтрок = Объект.ТЧПЛ.Количество();
ПредыдущаяСтрока = Неопределено;

Для ИндексТекСтроки=0 По ВсегоСтрок-1 Цикл

Объект.ТЧПЛ[ИндексТекСтроки].СпидометрВозвращения = Объект.ТЧПЛ[ИндексТекСтроки].СпидометрВыезда + Объект.ТЧПЛ[ИндексТекСтроки].ПробегПоGPS;
ПредыдущаяСтрока = Объект.ТЧПЛ[ИндексТекСтроки].СпидометрВозвращения;
Если ИндексТекСтроки > 0 Тогда

Объект.ТЧПЛ[ИндексТекСтроки].СпидометрВыезда = ПредыдущаяСтрока;

КонецЕсли;

КонецЦикла;
Показать

Скажите, пожалуйста, так должно быть?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот