7.7 ТИС для Украины Отчет по скидкам
Показывать по
10
20
40
сообщений
- 1
- 2
04.12.2009
11:39
#1
"Почемуто значение цены берет с рабочей даты, а я вроде как указываю по дате документа Цены.ИспользоватьДату(Док.ДатаДок)
Помогите разобраться
Процедура Сформировать()
СуммаОбщПоДок=0;
СуммаОбщПоСпр=0;
РазницаОбщ=0;
Таблица=СоздатьОбъект("Таблица");
Таблица.ИсходнаяТаблица("Отчет");
Док=СоздатьОбъект("Документ");
Док.ИспользоватьЖурнал("РасходныеНакладные");
Док.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода);
ПечКонтрагент="По контрагенту "+ВыбКонтрагенты.ПолнНаименование;
Таблица.ВывестиСекцию("шапка");
Пока Док.ПолучитьДокумент()=1 Цикл
Если Док.Контрагент=ВыбКонтрагенты Тогда
номердок= Док.НомерДок;
Док.ВыбратьСтроки();
СуммаПоДок=0;
СуммаПоСправочнику=0;
Пока Док.ПолучитьСтроку()=1 Цикл
Цены=СоздатьОбъект("Справочник.Цены");
Цены.ИспользоватьДату(Док.ДатаДок);
Цены.ИспользоватьВладельца(Док.Товар.ТекущийЭлемент());
ТипЦены= Док.КатегорияЦен;
Цены.НайтиПоРеквизиту("КатегорияЦены",ТипЦены,0);
СуммаПоСправочнику=СуммаПоСправочнику+(Док.Количество*Цены.цена);
СуммаПоДок=СуммаПоДок+(Док.Количество*Док.ЦенаСНДС);
Разница=СуммаПоСправочнику-СуммаПоДок;
РазницаПроц=Окр(СуммаПоСправочнику/СуммаПоДок*100-100,2,1);
КонецЦикла;
СуммаОбщПоДок=СуммаОбщПоДок+СуммаПоДок;
СуммаОбщПоСпр=СуммаОбщПоСпр+СуммаПоСправочнику;
РазницаОбщ=РазницаОбщ+Разница;
Таблица.ВывестиСекцию("Документ");
КонецЕсли;
КонецЦикла;
РазницаОбщПроц=Окр(СуммаОбщПоСпр/СуммаОбщПоДок*100-100,2,1);
Таблица.ВывестиСекцию("Итоги");
Таблица.Показать("Отчет");
КонецПроцедуры
"
Помогите разобраться
Процедура Сформировать()
СуммаОбщПоДок=0;
СуммаОбщПоСпр=0;
РазницаОбщ=0;
Таблица=СоздатьОбъект("Таблица");
Таблица.ИсходнаяТаблица("Отчет");
Док=СоздатьОбъект("Документ");
Док.ИспользоватьЖурнал("РасходныеНакладные");
Док.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода);
ПечКонтрагент="По контрагенту "+ВыбКонтрагенты.ПолнНаименование;
Таблица.ВывестиСекцию("шапка");
Пока Док.ПолучитьДокумент()=1 Цикл
Если Док.Контрагент=ВыбКонтрагенты Тогда
номердок= Док.НомерДок;
Док.ВыбратьСтроки();
СуммаПоДок=0;
СуммаПоСправочнику=0;
Пока Док.ПолучитьСтроку()=1 Цикл
Цены=СоздатьОбъект("Справочник.Цены");
Цены.ИспользоватьДату(Док.ДатаДок);
Цены.ИспользоватьВладельца(Док.Товар.ТекущийЭлемент());
ТипЦены= Док.КатегорияЦен;
Цены.НайтиПоРеквизиту("КатегорияЦены",ТипЦены,0);
СуммаПоСправочнику=СуммаПоСправочнику+(Док.Количество*Цены.цена);
СуммаПоДок=СуммаПоДок+(Док.Количество*Док.ЦенаСНДС);
Разница=СуммаПоСправочнику-СуммаПоДок;
РазницаПроц=Окр(СуммаПоСправочнику/СуммаПоДок*100-100,2,1);
КонецЦикла;
СуммаОбщПоДок=СуммаОбщПоДок+СуммаПоДок;
СуммаОбщПоСпр=СуммаОбщПоСпр+СуммаПоСправочнику;
РазницаОбщ=РазницаОбщ+Разница;
Таблица.ВывестиСекцию("Документ");
КонецЕсли;
КонецЦикла;
РазницаОбщПроц=Окр(СуммаОбщПоСпр/СуммаОбщПоДок*100-100,2,1);
Таблица.ВывестиСекцию("Итоги");
Таблица.Показать("Отчет");
КонецПроцедуры
"
04.12.2009
13:16
#4
"За "Цены=СоздатьОбъект("Справочник.Цены")" внутри цикла "Пока Док.ПолучитьСтроку()=1 Цикл" пожизненный эцих с гвоздями 
В общем, надо так:
Процедура Сформировать()
СуммаОбщПоДок=0;
СуммаОбщПоСпр=0;
РазницаОбщ=0;
Таблица=СоздатьОбъект("Таблица");
Таблица.ИсходнаяТаблица("Отчет");
Цены=СоздатьОбъект("Справочник.Цены");
Док=СоздатьОбъект("Документ");
Док.ИспользоватьЖурнал("РасходныеНакладные");
Док.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода);
ПечКонтрагент="По контрагенту "+ВыбКонтрагенты.ПолнНаименование;
Таблица.ВывестиСекцию("Шапка");
Пока Док.ПолучитьДокумент()=1 Цикл
Если Док.Контрагент=ВыбКонтрагенты Тогда
номердок = Док.НомерДок;
Док.ВыбратьСтроки();
СуммаПоДок=0;
СуммаПоСправочнику=0;
Пока Док.ПолучитьСтроку()=1 Цикл
СуммаПоСправочникуПоСтроке=0;
Цены.ИспользоватьВладельца(Док.Товар);
Если Цены.НайтиПоРеквизиту("КатегорияЦены",Док.КатегорияЦен,0)=1 Тогда
СуммаПоСправочникуПоСтроке=(Док.Количество*Цены.Цена.Получить(Док.ДатаДок));
КонецЕсли;
СуммаПоСправочнику=СуммаПоСправочнику+СуммаПоСправочникуПоСт роке;
СуммаПоДок=СуммаПоДок+(Док.Количество*Док.ЦенаСНДС);
Разница=СуммаПоСправочнику-СуммаПоДок;
РазницаПроц=Окр(СуммаПоСправочнику/СуммаПоДок*100-100,2,1);
КонецЦикла;
СуммаОбщПоДок=СуммаОбщПоДок+СуммаПоДок;
СуммаОбщПоСпр=СуммаОбщПоСпр+СуммаПоСправочнику;
РазницаОбщ=РазницаОбщ+Разница;
Таблица.ВывестиСекцию("Документ");
КонецЕсли;
КонецЦикла;
РазницаОбщПроц=Окр(СуммаОбщПоСпр/СуммаОбщПоДок*100-100,2,1);
Таблица.ВывестиСекцию("Итоги");
Таблица.Показать("Отчет");
КонецПроцедуры
"
В общем, надо так:
Процедура Сформировать()
СуммаОбщПоДок=0;
СуммаОбщПоСпр=0;
РазницаОбщ=0;
Таблица=СоздатьОбъект("Таблица");
Таблица.ИсходнаяТаблица("Отчет");
Цены=СоздатьОбъект("Справочник.Цены");
Док=СоздатьОбъект("Документ");
Док.ИспользоватьЖурнал("РасходныеНакладные");
Док.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода);
ПечКонтрагент="По контрагенту "+ВыбКонтрагенты.ПолнНаименование;
Таблица.ВывестиСекцию("Шапка");
Пока Док.ПолучитьДокумент()=1 Цикл
Если Док.Контрагент=ВыбКонтрагенты Тогда
номердок = Док.НомерДок;
Док.ВыбратьСтроки();
СуммаПоДок=0;
СуммаПоСправочнику=0;
Пока Док.ПолучитьСтроку()=1 Цикл
СуммаПоСправочникуПоСтроке=0;
Цены.ИспользоватьВладельца(Док.Товар);
Если Цены.НайтиПоРеквизиту("КатегорияЦены",Док.КатегорияЦен,0)=1 Тогда
СуммаПоСправочникуПоСтроке=(Док.Количество*Цены.Цена.Получить(Док.ДатаДок));
КонецЕсли;
СуммаПоСправочнику=СуммаПоСправочнику+СуммаПоСправочникуПоСт
СуммаПоДок=СуммаПоДок+(Док.Количество*Док.ЦенаСНДС);
Разница=СуммаПоСправочнику-СуммаПоДок;
РазницаПроц=Окр(СуммаПоСправочнику/СуммаПоДок*100-100,2,1);
КонецЦикла;
СуммаОбщПоДок=СуммаОбщПоДок+СуммаПоДок;
СуммаОбщПоСпр=СуммаОбщПоСпр+СуммаПоСправочнику;
РазницаОбщ=РазницаОбщ+Разница;
Таблица.ВывестиСекцию("Документ");
КонецЕсли;
КонецЦикла;
РазницаОбщПроц=Окр(СуммаОбщПоСпр/СуммаОбщПоДок*100-100,2,1);
Таблица.ВывестиСекцию("Итоги");
Таблица.Показать("Отчет");
КонецПроцедуры
"
04.12.2009
13:26
#5
на счет "За "Цены=СоздатьОбъект("Справочник.Цены")" внутри цикла "Пока Док.ПолучитьСтроку()=1 Цикл" пожизненный эцих с гвоздями :)", полностью согласен (невнимательность)
а переменные я описывал чтобы самому было понятней(в процессе разработки)
По вашему коду вобще какаета фигня получилась
а чем собственно отличается ИспользоватьДату от Получить?
а переменные я описывал чтобы самому было понятней(в процессе разработки)
По вашему коду вобще какаета фигня получилась
а чем собственно отличается ИспользоватьДату от Получить?
04.12.2009
13:31
#6
Вы переменную в начале цыкла установили СуммаПоСправочникуПоСтроке=0 , поэтому ее значение равнялось последней позиции в списке
я исправил, получилось тоже что и у меня
я исправил, получилось тоже что и у меня
04.12.2009
13:37
#7
> СуммаПоСправочникуПоСтроке=0 , поэтому ее значение равнялось последней позиции в списке я исправил
Не исправляйте, смотрите еще разок что там у меня написано.
Кстати, а это нормально, что у вас СуммаПоСправочнику идет внутри цикла перебора строк? У вас же не по отдельной позции разницы считаются, а вообще как то накопительно...
Не исправляйте, смотрите еще разок что там у меня написано.
Кстати, а это нормально, что у вас СуммаПоСправочнику идет внутри цикла перебора строк? У вас же не по отдельной позции разницы считаются, а вообще как то накопительно...
04.12.2009
13:53
#8
"Вроде бы я понял что вы задумали, попробуйте вот такой вариант:
Процедура Сформировать()
СуммаОбщПоДок=0;
СуммаОбщПоСпр=0;
РазницаОбщ=0;
Таблица=СоздатьОбъект("Таблица");
Таблица.ИсходнаяТаблица("Отчет");
Цены=СоздатьОбъект("Справочник.Цены");
Док=СоздатьОбъект("Документ");
Док.ИспользоватьЖурнал("РасходныеНакладные");
Док.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода);
ПечКонтрагент="По контрагенту "+ВыбКонтрагенты.ПолнНаименование;
Таблица.ВывестиСекцию("Шапка");
Пока Док.ПолучитьДокумент()=1 Цикл
Если Док.Контрагент=ВыбКонтрагенты Тогда
номердок = Док.НомерДок;
Док.ВыбратьСтроки();
СуммаПоДок=0;
СуммаПоСправочнику=0;
Пока Док.ПолучитьСтроку()=1 Цикл
Цены.ИспользоватьВладельца(Док.Товар);
Если Цены.НайтиПоРеквизиту("КатегорияЦены",Док.КатегорияЦен,0)=1 Тогда
СуммаПоСправочнику=СуммаПоСправочнику+(Док.Количество*Цены.Цена.Получить(Док.ДатаДок));
КонецЕсли;
СуммаПоДок=СуммаПоДок+(Док.Количество*Док.ЦенаСНДС); //а в документе нет реквизита "Сумма"?
КонецЦикла;
СуммаОбщПоДок=СуммаОбщПоДок+СуммаПоДок;
СуммаОбщПоСпр=СуммаОбщПоСпр+СуммаПоСправочнику;
Разница=СуммаПоСправочнику-СуммаПоДок;
РазницаОбщ=РазницаОбщ+Разница;
Таблица.ВывестиСекцию("Документ");
КонецЕсли;
КонецЦикла;
РазницаОбщПроц=Окр(СуммаОбщПоСпр/СуммаОбщПоДок*100-100,2,1);
Таблица.ВывестиСекцию("Итоги");
Таблица.Показать("Отчет");
КонецПроцедуры
"
Процедура Сформировать()
СуммаОбщПоДок=0;
СуммаОбщПоСпр=0;
РазницаОбщ=0;
Таблица=СоздатьОбъект("Таблица");
Таблица.ИсходнаяТаблица("Отчет");
Цены=СоздатьОбъект("Справочник.Цены");
Док=СоздатьОбъект("Документ");
Док.ИспользоватьЖурнал("РасходныеНакладные");
Док.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода);
ПечКонтрагент="По контрагенту "+ВыбКонтрагенты.ПолнНаименование;
Таблица.ВывестиСекцию("Шапка");
Пока Док.ПолучитьДокумент()=1 Цикл
Если Док.Контрагент=ВыбКонтрагенты Тогда
номердок = Док.НомерДок;
Док.ВыбратьСтроки();
СуммаПоДок=0;
СуммаПоСправочнику=0;
Пока Док.ПолучитьСтроку()=1 Цикл
Цены.ИспользоватьВладельца(Док.Товар);
Если Цены.НайтиПоРеквизиту("КатегорияЦены",Док.КатегорияЦен,0)=1 Тогда
СуммаПоСправочнику=СуммаПоСправочнику+(Док.Количество*Цены.Цена.Получить(Док.ДатаДок));
КонецЕсли;
СуммаПоДок=СуммаПоДок+(Док.Количество*Док.ЦенаСНДС); //а в документе нет реквизита "Сумма"?
КонецЦикла;
СуммаОбщПоДок=СуммаОбщПоДок+СуммаПоДок;
СуммаОбщПоСпр=СуммаОбщПоСпр+СуммаПоСправочнику;
Разница=СуммаПоСправочнику-СуммаПоДок;
РазницаОбщ=РазницаОбщ+Разница;
Таблица.ВывестиСекцию("Документ");
КонецЕсли;
КонецЦикла;
РазницаОбщПроц=Окр(СуммаОбщПоСпр/СуммаОбщПоДок*100-100,2,1);
Таблица.ВывестиСекцию("Итоги");
Таблица.Показать("Отчет");
КонецПроцедуры
"
- 1
- 2
Читают тему
(гостей: 1)