Прайс-лист с фактическими ценами

Новая тема
1С v7.7 Бух.учет.
Мне нужно получить прайс-лист на материалы, но чтоб цены были фактическими, а не учетными. Чтоб получить цены на определенную дату, использую бух.итоги и сумму делю на кол-во. Подскажите, плз, как быть, если на указанную дату по данному материалу итогов нет (кол-во=0), но цену при этом знать нужно
> 1С v7.7 Бух.учет.
> Мне нужно получить прайс-лист на материалы, но чтоб цены были

У материалов нет цены. Увы...
но эти цены можно ведь рассчитать, как БИ10.СКД("С")/БИ10.СКД("К"). Или я не права?
БИ10.СКД("С")/БИ10.СКД("К") - так это и будет "учетная цена". А точнее, средняя балансовая стоимость одной единицы отдельно взятого объекта. Что вы подразумевайте под фактической ценой?
Да, простите, именно учетную цену мне и нужно знать. На текущую дату я рассчитываю бухитоги и получаю эти цены. Когда сальдо ненулевое всё нормально, но мне нужно получать цены и того материала, которого сейчас нет на складе
Так все верно. Если по данным учета нет ничего, что выводить то? У вас проблема получается не в программировании, а в постановке задачи. Что за цену вы собираетесь выводить в том случае, когда материала нет? Среднюю по всем прошедшим поступлениям? Цену, которая была в последнем поступлении? Цену, которая была в первом поступлении? Экстраполировать цену по имеющимся поступлениям? Максимальную или минимальную цену по всем поступлениям?
В общем, проблема в том, чтобы определиться с тем что мы хотим вообще. Определиться нужно и реализовывать. А как быть с материалами, которые в справочнике есть, но никогда не покупались? Тоже думайте
нужна цена последнего поступления. Если материал в справочнике есть, но никогда не покупался, то его цена нас просто не интересует
"А просто чисто случайно, это не задача из экзамена на 1С:Специалиста 7.7 Бух.учет? Что то такое похожее было у меня когда сдавал ;)!"
нет, это не из экзамена. Эти цены мне нужны для составления отчетов управленческого учета
"Ну вот,значит так и нужно делать. К сожалению, в 1С (7.7) нет возможности гибко и удобно обратиться к бухгалтерским итогам по указанным фильтрам и определить момент последнего движения, мало того, для выборки бухитогов нет возможности указать направление перебора результата. Поэтому придется изворачиваться как можем. Сейчас меня осудят любители оптимальных алгоритмов и станут говорить, что то, что я напишу, работает долго, криво и неправильно, но просто пусть предложат свой алгоритм в таком случае, может я тоже поучусь.
Итак, делаем:
НужнаяДата=ТекущаяДата();
НачалоВремен=Дата("01.01.1980");
СчетаУчета10=СоздатьОбъект("СписокЗначений");

ПланСчетов = СоздатьОбъект("Счет");
ПланСчетов.ИспользоватьРодителя(СчетПоКоду(10));
ПланСчетов.ВыбратьСчета();
Пока ПланСчетов.ПолучитьСчет() = 1 Цикл
Если (Найти(ПланСчетов.Код, "10.7") = 1) ИЛИ (Найти(ПланСчетов.Код, "10.11") = 1) Тогда
Продолжить;
КонецЕсли;
СчетаУчета10.ДобавитьЗначение(ПланСчетов.ТекущийСчет());
КонецЦикла;

БухИтоги=СоздатьОбъект("БухгалтерскиеИтоги");
БухИтоги.ИспользоватьСубконто(ВидыСубконто.Материалы,,1);
БухИтоги.ВыполнитьЗапрос(НужнаяДата,НужнаяДата,СчетаУчета10,,,,,5);
БухПоставка=СоздатьОбъект("БухгалтерскиеИтоги");

Материалы=СоздатьОбъект("Справочник.Материалы");
Материалы.ВыбратьЭлементы(0);
Пока Материалы.ПолучитьЭлемент(1)=1 Цикл
Если Материалы.ЭтоГруппа()=0 Тогда
ТекМатериал=Материалы.ТекущийЭлемент();
Стоимость=0;
Количество=0;
НуженПоиск=0;
Если БухИтоги.ПолучитьСубконто(1,,ТекМатериал)=1 Тогда
Количество=БухИтоги.СКД("К");
Если Количество=0 Тогда
НуженПоискПоследнейПоставки=1;
Иначе
Стоимость=БухИтоги.СКД("С");
КонецЕсли;
Иначе
НуженПоиск=1;
КонецЕсли;
Если НуженПоиск=1 Тогда
//ищем последнее списание и именно по нему определяем последнюю учетную стоимость, которая была когда то
НомерПопытки=0;
Пока 1=1 Цикл
НомерПопытки=НомерПопытки+1;
Если НомерПопытки=1 Тогда
НачДата=НачМесяца(НужнаяДата);
КонДата=НужнаяДата;
ИначеЕсли НомерПопытки<=3 Тогда
КонДата=НачДата-1;
НачДата=НачМесяца(КонДата);
ИначеЕсли НомерПопытки<=6 Тогда
КонДата=НачДата-1;
НачДата=ДобавитьМесяц(НачМесяца(КонДата),-2);
ИначеЕсли НомерПопытки=7 Тогда
КонДата=НачДата-1;
НачДата=НачалоВремен;
Иначе
Прервать;
КонецЕсли;

БухПоставка.ИспользоватьСубконто(ВидыСубконто.Материалы,ТекМатериал,2);
БухПоставка.ВыполнитьЗапрос(НачДата,КонДата,СчетаУчета10,,,2,"Операция",5);
Если БухПоставка.ВыбратьПериоды(,2)=1 Тогда
Пока БухПоставка.ПолучитьПериод()=1 Цикл
СуммаПоОперации=БухПоставка.КО("С");
КоличествоПоОперации=БухПоставка.КО("К");
КонецЦикла;
Стоимость=СуммаПоОперации;
Количество=КоличествоПоОперации;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;

Если Количество>0 Тогда
Сообщить(Строка(ТекМатериал)+", количество = "+Строка(Количество)+", сумма = "+СокрЛП(Формат(Стоимость,"Ч15.2.'"))+", учетная цена = "+СокрЛП(Формат(Окр(Стоимость/Количество,2),"Ч15.2.'")));
КонецЕсли;
КонецЕсли;
КонецЦикла;
"
Читают тему
(гостей: 1)

Быстрый переход