"Ну вот,значит так и нужно делать. К сожалению, в 1С (7.7) нет возможности гибко и удобно обратиться к бухгалтерским итогам по указанным фильтрам и определить момент последнего движения, мало того, для выборки бухитогов нет возможности указать направление перебора результата. Поэтому придется изворачиваться как можем. Сейчас меня осудят любители оптимальных алгоритмов и станут говорить, что то, что я напишу, работает долго, криво и неправильно, но просто пусть предложат свой алгоритм в таком случае, может я тоже поучусь.<br>Итак, делаем:<br> НужнаяДата=ТекущаяДата();<br> НачалоВремен=Дата("01.01.1980");<br> СчетаУчета10=СоздатьОбъект("СписокЗначений");<br> <br> ПланСчетов = СоздатьОбъект("Счет");<br> ПланСчетов.ИспользоватьРодителя(СчетПоКоду(10));<br> ПланСчетов.ВыбратьСчета();<br> Пока ПланСчетов.ПолучитьСчет() = 1 Цикл<br> Если (Найти(ПланСчетов.Код, "10.7") = 1) ИЛИ (Найти(ПланСчетов.Код, "10.11") = 1) Тогда<br> Продолжить;<br> КонецЕсли;<br> СчетаУчета10.ДобавитьЗначение(ПланСчетов.ТекущийСчет());<br> КонецЦикла;<br> <br> БухИтоги=СоздатьОбъект("БухгалтерскиеИтоги");<br> БухИтоги.ИспользоватьСубконто(ВидыСубконто.Материалы,,1);<br> БухИтоги.ВыполнитьЗапрос(НужнаяДата,НужнаяДата,СчетаУчета10,,,,,5);<br> БухПоставка=СоздатьОбъект("БухгалтерскиеИтоги");<br> <br> Материалы=СоздатьОбъект("Справочник.Материалы");<br> Материалы.ВыбратьЭлементы(0);<br> Пока Материалы.ПолучитьЭлемент(1)=1 Цикл<br> Если Материалы.ЭтоГруппа()=0 Тогда<br> ТекМатериал=Материалы.ТекущийЭлемент();<br> Стоимость=0;<br> Количество=0;<br> НуженПоиск=0;<br> Если БухИтоги.ПолучитьСубконто(1,,ТекМатериал)=1 Тогда<br> Количество=БухИтоги.СКД("К");<br> Если Количество=0 Тогда<br> НуженПоискПоследнейПоставки=1;<br> Иначе<br> Стоимость=БухИтоги.СКД("С"); <br> КонецЕсли;<br> Иначе<br> НуженПоиск=1;<br> КонецЕсли;<br> Если НуженПоиск=1 Тогда<br> //ищем последнее списание и именно по нему определяем последнюю учетную стоимость, которая была когда то<br> НомерПопытки=0;<br> Пока 1=1 Цикл<br> НомерПопытки=НомерПопытки+1;<br> Если НомерПопытки=1 Тогда<br> НачДата=НачМесяца(НужнаяДата);<br> КонДата=НужнаяДата;<br> ИначеЕсли НомерПопытки<=3 Тогда<br> КонДата=НачДата-1;<br> НачДата=НачМесяца(КонДата);<br> ИначеЕсли НомерПопытки<=6 Тогда<br> КонДата=НачДата-1;<br> НачДата=ДобавитьМесяц(НачМесяца(КонДата),-2);<br> ИначеЕсли НомерПопытки=7 Тогда<br> КонДата=НачДата-1;<br> НачДата=НачалоВремен;<br> Иначе<br> Прервать;<br> КонецЕсли;<br> <br> БухПоставка.ИспользоватьСубконто(ВидыСубконто.Материалы,ТекМатериал,2);<br> БухПоставка.ВыполнитьЗапрос(НачДата,КонДата,СчетаУчета10,,,2,"Операция",5);<br> Если БухПоставка.ВыбратьПериоды(,2)=1 Тогда<br> Пока БухПоставка.ПолучитьПериод()=1 Цикл<br> СуммаПоОперации=БухПоставка.КО("С");<br> КоличествоПоОперации=БухПоставка.КО("К");<br> КонецЦикла;<br> Стоимость=СуммаПоОперации;<br> Количество=КоличествоПоОперации;<br> Прервать;<br> КонецЕсли;<br> КонецЦикла;<br> КонецЕсли;<br> <br> Если Количество>0 Тогда<br> Сообщить(Строка(ТекМатериал)+", количество = "+Строка(Количество)+", сумма = "+СокрЛП(Формат(Стоимость,"Ч15.2.'"))+", учетная цена = "+СокрЛП(Формат(Окр(Стоимость/Количество,2),"Ч15.2.'")));<br> КонецЕсли;<br> КонецЕсли;<br> КонецЦикла;<br>"