РеестрДокументов
16.09.2008
15:14
#1
"ТиС 9.2 релиз 947
В отчете РеестрДокументов у меня выводится список номенклатуры
из табличной части. Хотелось бы вывести себестоимость
каждой номенклатурной позиции из регистра партий.
В модуле написал следующее:
Пока Док.ПолучитьДокумент()=1 Цикл
Если Док.Вид()="Реализация" Тогда
Если РегПартии.ВыбратьДвиженияДокумента(Док)=1 Тогда
Пока РегПартии.ПолучитьДвижение()=1 Цикл
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку()=1 Цикл
СебестоимостьНДС=РегПартии.СуммаРуб;
СебестоимостьБезНДС=РегПартии.СуммаБезНДС;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЕсли;
Но не получается:(
"
В отчете РеестрДокументов у меня выводится список номенклатуры
из табличной части. Хотелось бы вывести себестоимость
каждой номенклатурной позиции из регистра партий.
В модуле написал следующее:
Пока Док.ПолучитьДокумент()=1 Цикл
Если Док.Вид()="Реализация" Тогда
Если РегПартии.ВыбратьДвиженияДокумента(Док)=1 Тогда
Пока РегПартии.ПолучитьДвижение()=1 Цикл
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку()=1 Цикл
СебестоимостьНДС=РегПартии.СуммаРуб;
СебестоимостьБезНДС=РегПартии.СуммаБезНДС;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЕсли;
Но не получается:(
"
16.09.2008
16:21
#3
Все равно не получается. Если в табличной части несколько позиций, отчет выдает по всем позициям одну и ту же цифру - себестоимость последней позиции.
16.09.2008
16:36
#4
"Само собой, у вас алгоритм так написан.
Вы привели только кусок алгоритма, я ж не знаю что там еще есть, кроме того что вы написали. Из него сразу видно, что он не работал бы из за отсутствия разыменования ссылки (чего мы уже поправили) и теперь осталось поработать над логикой, а то в самом деле у вас строки перебираются (зачем то) и в итоге в переменных оказывается значение последнего прохода по циклу, короче, надо примерно так:
Пока Док.ПолучитьДокумент()=1 Цикл
Если Док.Вид()="Реализация" Тогда
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку()=1 Цикл
СебестоимостьСНДС=0;
СебестоимостьБезНДС=0;
Если РегПартии.ВыбратьДвиженияДокумента(Док.ТекущийДокумент())=1 Тогда
Пока РегПартии.ПолучитьДвижение()=1 Цикл
Если РегПартии.НомерСтроки()=Док.НомерСтроки Тогда
СебестоимостьСНДС=СебестоимостьСНДС+РегПартии.СуммаРуб;
СебестоимостьБезНДС=СебестоимостьБезНДС+РегПартии.СуммаБезНДС;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Таб.ВывестиСекцию("СтрочкаСведений");
КонецЦикла;
КонецЕсли;
КонецЦикла;
работать будет, но вообще, алгоритм некрасивый :)"
Пока Док.ПолучитьДокумент()=1 Цикл
Если Док.Вид()="Реализация" Тогда
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку()=1 Цикл
СебестоимостьСНДС=0;
СебестоимостьБезНДС=0;
Если РегПартии.ВыбратьДвиженияДокумента(Док.ТекущийДокумент())=1 Тогда
Пока РегПартии.ПолучитьДвижение()=1 Цикл
Если РегПартии.НомерСтроки()=Док.НомерСтроки Тогда
СебестоимостьСНДС=СебестоимостьСНДС+РегПартии.СуммаРуб;
СебестоимостьБезНДС=СебестоимостьБезНДС+РегПартии.СуммаБезНДС;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Таб.ВывестиСекцию("СтрочкаСведений");
КонецЦикла;
КонецЕсли;
КонецЦикла;
работать будет, но вообще, алгоритм некрасивый :)"
17.09.2008
12:23
#5
а не проще написать запросом?
по какому регистру нужнен отчет, по ПартииОтданные?
по какому регистру нужнен отчет, по ПартииОтданные?
17.09.2008
15:21
#6
В принципе, да. Я проблему решил способом похожим на тот, что предложил Thorvardr, но только еще менее красивым - с большим количеством циклов и условий.
1C 7.7 ЗИК изменение значения реквизита документаПосле обновления ТиС не правильно формируются проводки по возврату от покупателя
Читают тему
(гостей: 1)