Имя: Пароль:
1C
1С v8
Заполнение реквизита ТЧ последующей строки на основании реквизита из предыдущей
0 Max57
 
12.09.23
18:46
Здравствуйте, уважаемые форумчане. Помогите, пожалуйста. Есть табличная часть ТЧПЛ. Мне нужно, чтобы в реквизит СпидометрВозвращения попадала сумма двух других реквизитов. Этого я, вроде бы, добился. Кроме того, в следующей строке  реквизит СтрТЧ.СпидометрВыезда должен принять значение СтрТЧ.СпидометрВозвращения из предыдущей.
При попытке запустить мой пример выходит следующая ошибка (Получение элемента по индексу для значения не определено
{ВнешняяОбработка.ЗаполнитьПробегИТопливоПоСреднемуПоТопливу.Форма.Форма.Форма(330)}:        СтрТЧ.СпидометрВыезда[Объект.ТЧПЛ.Индекс(СтрТЧ)+1] = СтрТЧ.СпидометрВозвращения;) Подскажите, пожалуйста, как мне реализовать заполнение реквизита последующей строки на основании реквизита из предыдущей?
Процедура ТЧПЛПробегПоGPSПриИзменении(Элемент)
    Для Каждого СтрТЧ Из Объект.ТЧПЛ Цикл
        
        СтрТЧ.СпидометрВозвращения = СтрТЧ.СпидометрВыезда + СтрТЧ.ПробегПоGPS;
        СтрТЧ.СпидометрВыезда[Объект.ТЧПЛ.Индекс(СтрТЧ)+1] = СтрТЧ.СпидометрВозвращения;
    КонецЦикла;
КонецПроцедуры
1 vicof
 
12.09.23
19:17
Циклы еще бывают со счетчиком.
А ошибка в том, что строки нет с таким индексом.
2 Max57
 
12.09.23
20:45
(1) Спасибо, посмотрите, пожалуйста https://imgur.com/myb3ypu. Что-то похожее надо сделать? Почему у меня ошибка выходит, что переменная не определена?
3 Max57
 
12.09.23
20:48
4 H A D G E H O G s
 
13.09.23
02:53
Храни предыдыдущую строку в отдельной переменной
5 vicof
 
13.09.23
09:06
(3) А ТЧПЛ у тебя на форме есть? И имеет тип ТаблицаЗначений?
6 Max57
 
13.09.23
09:23
(5) На форме есть. Тип вот такой (ВнешняяОбработкаТабличнаяЧасть.ЗаполнитьПробегИТопливоПоСреднемуПоТопливу.ТЧПЛ).
7 Saari
 
13.09.23
10:57
ПредыдущаяСтрока = Неопределено;
Для Каждого СтрТЧ Из Объект.ТЧПЛ Цикл
  Если НЕ ПредыдущаяСтрока = Неопределено Тогда
    СтрТЧ.СпидометрВыезда = ПредыдущаяСтрока.СпидометрВозвращения;        
  КонецЕсли;
  СтрТЧ.СпидометрВозвращения = СтрТЧ.СпидометрВыезда + СтрТЧ.ПробегПоGPS;
  
  ПредыдущаяСтрока = СтрТЧ;
КонецЦикла;
8 Max57
 
13.09.23
11:08
(7) Спасибо
9 AlexeyKh
 
13.09.23
11:13
или так попробуйте

Для Каждого СтрТЧ Из Объект.ТЧПЛ Цикл
    Если СтрТЧ.НомерСтроки > 1 Тогда
        СтрТЧ.СпидометрВыезда = Объект.ТЧПЛ[СтрТЧ.НомерСтроки - 1].СпидометрВозвращения;
    Иначе    
        СтрТЧ.СпидометрВыезда = 0;
    КонецЕсли;
    СтрТЧ.СпидометрВозвращения = СтрТЧ.СпидометрВыезда + СтрТЧ.ПробегПоGPS;
КонецЦикла;
Ошибка? Это не ошибка, это системная функция.