|
Группировка по контрагентам. | ☑ | ||
---|---|---|---|---|
0
antihacker
18.05.16
✎
12:55
|
Всем привет ! Вот запрос. По идее он должен выводить должников по группам как они сидят в справочнике. Но почему то он просто показывает список контрагентов и все. Почему не показывает в иерархии груп ?
Макет=этотобъект.ПолучитьМакет("Макет"); Таб=новый табличныйдокумент; областьШапка=Макет.ПолучитьОбласть("Шапка"); областьшапка.Параметры.дата1=дата1; областьшапка.Параметры.ВыбКонтрагент=ВыбКонтрагент; таб.Вывести(ОбластьШапка); таб.НачатьАвтогруппировкуСтрок(); //сначала определим сумму задолженности запросДолг=Новый Запрос; запросДолг.Текст="ВЫБРАТЬ | СУММА(ТиповойОстатки.СуммаОстатокДт) КАК Долг, | СУММА(ТиповойОстатки.СуммаОстатокКт) КАК ДолгК, | ТиповойОстатки.Субконто1 КАК Контрагент |ИЗ | РегистрБухгалтерии.Типовой.Остатки( | &ДатаДолгов, | Счет В (&ВыбСчет), | , | Субконто1 В ИЕРАРХИИ (&ВыбКонтрагент) | И Организация В ИЕРАРХИИ (&ВыбОрганизация)) КАК ТиповойОстатки | |СГРУППИРОВАТЬ ПО | ТиповойОстатки.Субконто1 |ИТОГИ СУММА(Долг) ПО Контрагент"; ТиповойОстатки.Субконто1.Наименование"; ЗапросДолг.УстановитьПараметр("ДатаДолгов",конецДня(Дата1)); ЗапросДолг.УстановитьПараметр("ВыбСчет",СписокСчетов); ЗапросДолг.УстановитьПараметр("ВыбКонтрагент",ВыбКонтрагент); ЗапросДолг.УстановитьПараметр("ВыбОрганизация",ВыбОрганизация); результатЗ=запросДолг.Выполнить(); рез=результатЗ.Выгрузить(); ВыборкаЗ=результатЗ.Выбрать(обходрезультатазапроса.ПоГруппировкам,"Контрагент"); итСр1т3=0; итСр4т7=0; итСр8т14=0; итСрБ14=0; итСрБ21=0; итМинус=0; итбылаоплата=0; пока ВыборкаЗ.Следующий() цикл БылаОплата=0; //если выборказ.контрагент.этогруппа=истина тогда продолжить; конецесли; если ВыборкаЗ.долг>0 тогда запросдокреал=новый запрос; запросдокреал.Текст="ВЫБРАТЬ | РеализацияТоваровУслуг.Ссылка |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг |ГДЕ | РеализацияТоваровУслуг.Дата >= &Дата1 | И РеализацияТоваровУслуг.Дата <= &Дата2 | И РеализацияТоваровУслуг.Проведен = ИСТИНА | И РеализацияТоваровУслуг.Организация=&ВыбОрганизация | И РеализацияТоваровУслуг.Контрагент В ИЕРАРХИИ(&ВыбКонтрагент) | |УПОРЯДОЧИТЬ ПО | РеализацияТоваровУслуг.Дата УБЫВ"; запросдокреал.УстановитьПараметр("Дата1",Дата1-(150*24*60*60)); запросдокреал.УстановитьПараметр("Дата2",конецдня(Дата1)); запросдокреал.УстановитьПараметр("ВыбОрганизация",ВыбОрганизация); //если ВыборкаЗ.контрагент.этогруппа=истина тогда // запросдокреал.УстановитьПараметр("ВыбКонтрагент",выбконтрагент); //иначе запросдокреал.УстановитьПараметр("ВыбКонтрагент",выборкаЗ.контрагент); //конецесли; выборка=запросдокреал.Выполнить().Выбрать(); тбДокОтгр=Новый таблицазначений; тбДокОтгр.Колонки.Добавить("ДокументОтгрузки"); тбДокОтгр.Колонки.Добавить("ДатаОтгрузки"); тбДокОтгр.Колонки.Добавить("СрокДолга"); тбДокОтгр.Колонки.Добавить("Ср1т3"); тбДокОтгр.Колонки.Добавить("Ср4т7"); тбДокОтгр.Колонки.Добавить("Ср8т14"); тбДокОтгр.Колонки.Добавить("СрБ14"); тбДокОтгр.Колонки.Добавить("СрБ21"); СумДолгИт=выборкаЗ.долг; пока выборка.Следующий() цикл если выборка.Ссылка.Проведен=Ложь тогда продолжить; конецесли; если выборка.Ссылка.СуммаДокумента<= СумДолгИт тогда заполнять=1; //////если выбэкспедитор<>справочники.ФизическиеЛица.ПустаяСсылка() тогда ////// //сообщить(выборка.ссылка.сделка); ////// если выборка.ссылка.сделка<>документы.ЗаказПокупателя.ПустаяСсылка() тогда ////// попытка ////// если выборка.ссылка.сделка.Экспедитор<>выбэкспедитор тогда ////// заполнять=0; ////// конецесли; ////// исключение ////// сообщить("Ошибка Экспедитора: "+строка(выборка.ссылка)); ////// заполнять=0; ////// конецпопытки; ////// конецесли; //////конецесли; ////// //////если ВыбТорговый<>справочники.ФизическиеЛица.ПустаяСсылка() тогда ////// если выборка.ссылка.сделка<>документы.ЗаказПокупателя.ПустаяСсылка() тогда ////// попытка ////// ////// если выборка.ссылка.сделка.ТорговыйАгент<>ВыбТорговый тогда ////// заполнять=0; ////// конецесли; ////// исключение ////// сообщить("Ошибка торгового: "+строка(выборка.ссылка)); ////// заполнять=0; ////// конецпопытки; ////// ////// конецесли; //////конецесли; ////// если заполнять=1 тогда новстр=тбДокОтгр.Добавить(); новстр.ДокументОтгрузки=выборка.Ссылка; если (началодня(дата1)-Началодня(выборка.ссылка.дата))/24/60/60-1>21 тогда новстр.СрБ21=выборка.Ссылка.СуммаДокумента; иначеесли (началодня(дата1)-Началодня(выборка.ссылка.дата))/24/60/60-1>=15 тогда новстр.СрБ14=выборка.Ссылка.СуммаДокумента; иначеесли (началодня(дата1)-Началодня(выборка.ссылка.дата))/24/60/60-1>=8 тогда новстр.Ср8т14=выборка.Ссылка.СуммаДокумента; иначеесли (началодня(дата1)-Началодня(выборка.ссылка.дата))/24/60/60-1>=4 тогда новстр.Ср4т7=выборка.Ссылка.СуммаДокумента; иначе новстр.Ср1т3=выборка.Ссылка.СуммаДокумента; конецесли; новстр.датаотгрузки=выборка.ссылка.дата; новстр.СрокДолга=(началодня(дата1)-началодня(выборка.ссылка.дата))/24/60/60-1; конецесли; СумДолгИт=СумДолгИт-Выборка.Ссылка.СуммаДокумента; иначе заполнять=1; ////если выбэкспедитор<>справочники.ФизическиеЛица.ПустаяСсылка() тогда //// если выборка.ссылка.сделка<>документы.ЗаказПокупателя.ПустаяСсылка() тогда //// попытка //// если выборка.ссылка.сделка.Экспедитор<>выбэкспедитор тогда //// заполнять=0; //// конецесли; //// исключение //// сообщить("Ошибка Экспедитора: "+строка(выборка.ссылка)); //// заполнять=0; //// конецпопытки; //// конецесли; ////конецесли; ////если ВыбТорговый<>справочники.ФизическиеЛица.ПустаяСсылка() тогда //// если выборка.ссылка.сделка<>документы.ЗаказПокупателя.ПустаяСсылка() тогда //// попытка //// если выборка.ссылка.сделка.ТорговыйАгент<>ВыбТорговый тогда //// заполнять=0; //// конецесли; //// исключение //// сообщить("Ошибка торгового: "+строка(выборка.ссылка)); //// заполнять=0; //// конецпопытки; //// конецесли; ////конецесли; если заполнять=1 тогда новстр=тбДокОтгр.Добавить(); новстр.ДокументОтгрузки=выборка.Ссылка; если (началодня(дата1)-Началодня(выборка.ссылка.дата))/24/60/60-1>21 тогда новстр.СрБ21=СумДолгИт; иначеесли (началодня(дата1)-Началодня(выборка.ссылка.дата))/24/60/60-1>=15 тогда новстр.СрБ14=СумДолгИт; иначеесли (началодня(дата1)-Началодня(выборка.ссылка.дата))/24/60/60-1>=8 тогда новстр.Ср8т14=СумДолгИт; иначеесли (началодня(дата1)-Началодня(выборка.ссылка.дата))/24/60/60-1>=4 тогда новстр.Ср4т7=СумДолгИт; иначе новстр.Ср1т3=СумДолгИт; конецесли; новстр.датаотгрузки=выборка.ссылка.дата; новстр.СрокДолга=(началодня(дата1)-началодня(выборка.ссылка.дата))/24/60/60-1; СумДолгИт=0; конецесли; конецесли; если СумДолгИт<=0 тогда прервать; конецесли; конеццикла; если сумДолгИт>0 тогда //нехватило накладных добавим строку заполнять=1; новстр=тбДокОтгр.Добавить(); новстр.ДокументОтгрузки="Долг свяше 150 дней"; новстр.СрБ21=СумДолгИт; СумДолгИт=0; конецесли; ///определим срок консигнации отборконс=новый структура; отборконс.Вставить("Контрагент",Выборказ.контрагент); тбконс=регистрысведений.Консигнация.СрезПоследних(дата1,отборКонс); срокконс=""; для каждого стрКонс из тбконс цикл срокконс=срокконс+" "+строка(стрконс.номенклатура)+"="+строка(стрконс.СрокКонсигнации)+"."; конеццикла; былаоплата=вернутьоплату(выборказ.контрагент); Регион=выборказ.контрагент.регион; если выборка.Количество()>0 тогда если (тбдокотгр.Итог("Ср1т3")+тбдокотгр.Итог("Ср4т7")+тбдокотгр.Итог("Ср8т14")+тбдокотгр.Итог("СрБ14")+тбдокотгр.Итог("СрБ21"))<>0 тогда областьДата=макет.ПолучитьОбласть("Дата"); областьдата.Параметры.Контрагент=выборказ.контрагент; областьдата.Параметры.Консигнац=срокконс; областьдата.Параметры.Ср1т3=тбдокотгр.Итог("Ср1т3"); областьдата.Параметры.Ср4т7=тбдокотгр.Итог("Ср4т7"); областьдата.Параметры.Ср8т14=тбдокотгр.Итог("Ср8т14"); областьдата.Параметры.СрБ14=тбдокотгр.Итог("СрБ14"); областьдата.Параметры.СрБ21=тбдокотгр.Итог("СрБ21"); областьдата.Параметры.общДолг=тбдокотгр.Итог("Ср1т3")+тбдокотгр.Итог("Ср4т7")+тбдокотгр.Итог("Ср8т14")+тбдокотгр.Итог("СрБ14")+тбдокотгр.Итог("СрБ21"); областьдата.Параметры.былаоплата=былаоплата; областьдата.Параметры.Регион=регион; таб.Вывести(ОбластьДата,выборказ.Уровень()); конецесли; иначе областьДата=макет.ПолучитьОбласть("Дата"); областьдата.Параметры.былаоплата=былаоплата; областьдата.Параметры.Регион=регион; областьдата.Параметры.Консигнац=срокконс; областьдата.Параметры.Контрагент=выборказ.контрагент; областьдата.Параметры.общДолг=выборкаЗ.долг; областьдата.Параметры.СрБ21=выборкаЗ.долг; таб.Вывести(ОбластьДата,выборказ.Уровень()); конецесли; итСр1т3=итСр1т3+тбдокотгр.Итог("Ср1т3"); итСр4т7=итСр4т7+тбдокотгр.Итог("Ср4т7"); итСр8т14=итСр8т14+тбдокотгр.Итог("Ср8т14"); итСрБ14=итСрБ14+тбдокотгр.Итог("СрБ14"); итСрБ21=итСрБ21+тбдокотгр.Итог("СрБ21"); тбдокотгр.Сортировать("ДатаОтгрузки"); если выборказ.контрагент.этогруппа=ложь тогда для каждого стрОтгрДок из тбДокОтгр цикл областьстрока=макет.ПолучитьОбласть("Строка"); областьСтрока.Параметры.Заполнить(стрОтгрДок); таб.Вывести(областьСтрока,выборказ.Уровень()+1); Конеццикла; конецесли; иначе областьДата=макет.ПолучитьОбласть("Дата"); Регион=выборказ.контрагент.регион; областьдата.Параметры.Регион=регион; областьдата.Параметры.Контрагент=выборказ.контрагент; областьдата.Параметры.общДолг=-1*выборкаЗ.долгК; итминус=итминус+(-1)*выборказ.ДолгК; таб.Вывести(ОбластьДата,выборказ.Уровень()); КонецЕсли; итбылаоплата=итбылаоплата+былаоплата; конеццикла; таб.ЗакончитьАвтогруппировкуСтрок(); область=макет.ПолучитьОбласть("Итого"); область.Параметры.итСр1т3=итСр1т3; область.Параметры.итСр4т7=итСр4т7; область.Параметры.итСр8т14=итСр8т14; область.Параметры.итСрБ14=итСрБ14; область.Параметры.итСрБ21=итСрБ21; область.Параметры.итОбщДолг=итСр1т3+итСр4т7+итСр8т14+итСрБ14+итСрБ21+итминус; область.Параметры.итБылаОплата=итБылаОплата; таб.ФиксацияСверху=8; таб.Вывести(область); таб.ТолькоПросмотр=Истина; таб.Показать(); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |