Перебор строк в цикле

1. Dimkis 13.08.12 08:08 Сейчас в теме
Как в 8-ке обратиться к предыдущей строке в цикле?
Код 7.7:
	ВыбратьСтроки();
	Пока ПолучитьСтроку()>0 Цикл
		Если НомерСтроки=1 Тогда
			ТекущееСальдо=СуммаРасход-СуммаПриход;
			ТекущееСальдо_=ТекущееСальдо;
			Дата_=ДатаДокумента;
		Иначе	
			ТекущееСальдо=ТекущееСальдо_+СуммаРасход-СуммаПриход;
			ТекущееСальдо_=ТекущееСальдо;
			Кол_во_Дней[НомерСтроки-1]=ДатаДокумента-Дата_;
			Дата_=ДатаДокумента;              
		КонецЕсли;
Показать


код 8.2:
	Для каждого СтрокаТЧ Из ТЧ Цикл
		Если СтрокаТЧ.НомерСтроки = 1 Тогда
			СтрокаТЧ.ТекущееСальдо = СтрокаТЧ.СуммаРасход - СтрокаТЧ.СуммаПриход;
			ТекущееСальдо_=СтрокаТЧ.ТекущееСальдо;
			Дата_=СтрокаТЧ.ДатаДокумента;			
		Иначе 
			СтрокаТЧ.ТекущееСальдо=ТекущееСальдо_+СтрокаТЧ.СуммаРасход-СтрокаТЧ.СуммаПриход;
			ТекущееСальдо_=СтрокаТЧ.ТекущееСальдо;
			СтрокаТЧ.Кол_во_Дней = (СтрокаТЧ.ДатаДокумента-Дата_)/(24*60*60);//    ???????????????
			Дата_=СтрокаТЧ.ДатаДокумента;
		КонецЕсли;
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. pantera_rrr 13.08.12 08:19 Сейчас в теме
НомерСтроки = СтрокаТЧ.номерСтроки;
СтрокаТЧ[номерстроки-2] = ....
5. alexbur 28 13.08.12 09:15 Сейчас в теме
(2) pantera_rrr, Что такое СтрокаТЧ[номерстроки-2]? Может таки ТЧ[номерстроки-2]?
8. pantera_rrr 13.08.12 09:58 Сейчас в теме
(5) alexbur,
ну да)) не к строке же по индексу обращаемся, а к строке табличной части. но вроде и так разобрались)
3. famnam 21 13.08.12 08:20 Сейчас в теме
как вариант
ТекИндекс = ТЧ.Индекс(СтрокаТЧ);
Кол_во_Дней = (СтрокаТЧ.ДатаДокумента - ТЧ[Индекс - 1].ДатаДокумента);
4. Dimkis 13.08.12 08:21 Сейчас в теме
Не правильно сформулировал вопрос. Как присвоить значение предыдущей строке в цикле
6. Dimkis 13.08.12 09:27 Сейчас в теме
	        НомерСтроки = СтрокаТЧ.номерСтроки;
			ТЧ[номерстроки-2]=(СтрокаТЧ.ДатаДокумента-Дата_)/(24*60*60);


ошибка: Индексированное значение доступно только для чтения
ТЧ[номерстроки-2]=(СтрокаТЧ.ДатаДокумента-Дата_)/(24*60*60);
7. famnam 21 13.08.12 09:48 Сейчас в теме
(6) вы забыли указать поле, которому присваиваете значение
ТЧ[номерстроки - 2].ДатаДокумента
9. Светлый ум 427 10.03.23 07:42 Сейчас в теме
В регламентированных отчета нужно так (ПТД.Области["***"].Значение):
ПТД_Транспорт.Области["П000010001001_2"].Значение  = П000010001001_2_Пп_5_7_1;


Иначе будет ошибка:
Индексированное значение доступно только для чтения
10. Said-We 10.03.23 10:46 Сейчас в теме
(1) А если так:

ТекущееСальдо_= 0;
Дата_=Дата(1,1,1);

Для Каждого СтрокаТЧ Из ТЧ Цикл

ТекущееСальдо_=ТекущееСальдо+СтрокаТЧ.СуммаРасход-СтрокаТЧ.СуммаПриход;

СтрокаТЧ.ТекущееСальдо = ТекущееСальдо_;
СтрокаТЧ.Кол_во_Дней = ?(СтрокаТЧ.НомерСтроки = 1, 0, СтрокаТЧ.ДатаДокумента-Дата_)/(24*60*60);// ???????????????

Дата_=СтрокаТЧ.ДатаДокумента;

КонецЦикла;
Показать
12. user1863362 10.03.23 12:38 Сейчас в теме
(10)
если так
А представьте, что это в запросе... =)
13. Said-We 16.03.23 13:37 Сейчас в теме
(12)
А представьте, что это в запросе... =)


В SQL запросе такая задача вообще просто решается. Есть же функции LEAD() и LAG(). Хочешь к следующей строке, хочешь к предыдущей.
В 1С такие задачи решаются только за счет соединения таблицы сама с собой и кучи кода.
11. DENSKR 16 10.03.23 11:12 Сейчас в теме
14. HanterVol 8 16.03.23 14:43 Сейчас в теме
ПредСтрока = НЕОПРЕДЕЛЕНО;
Для каждого СтрокаТЧ Из ТЧ Цикл 
	Если ПредСтрока = НЕОПРЕДЕЛЕНО Тогда
		СтрокаТЧ.ТекущееСальдо = СтрокаТЧ.СуммаРасход - СтрокаТЧ.СуммаПриход;
		ТекущееСальдо_=СтрокаТЧ.ТекущееСальдо;
		Дата_=СтрокаТЧ.ДатаДокумента;            
	Иначе 
		СтрокаТЧ.ТекущееСальдо=ТекущееСальдо_+СтрокаТЧ.СуммаРасход-СтрокаТЧ.СуммаПриход;
		ТекущееСальдо_=СтрокаТЧ.ТекущееСальдо;
		ПредСтрока.Кол_во_Дней = (СтрокаТЧ.ДатаДокумента-Дата_)/(24*60*60);//    ???????????????
		Дата_ = СтрокаТЧ.ДатаДокумента;
	КонецЕсли; 
	ПредСтрока = СтрокаТЧ;
КонецЦикла;
Показать
15. Said-We 16.03.23 14:59 Сейчас в теме
(14) Ветка 2012 года. Зачем в (9) Светлый ум поднял её не понятно. И как он её нашел, тоже не понятно. Это надо было постараться.
Я даже не обратил внимание сначала что это ветка 2012 года, но в памяти как-то отметилось что код 8.2. Спасибо DENSKR подсказал, что ветка очень старая. :-)
Но это было уже после того как я написал. :-)
16. Светлый ум 427 17.03.23 04:28 Сейчас в теме
(15) молодца, очень познавательно
Оставьте свое сообщение

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