|
8.2 БП Запрос по 76,05 счету | ☑ | ||
---|---|---|---|---|
0
ИУБиПовиц
22.04.14
✎
11:57
|
Добрый день. Есть такая проблема.Нужно получить запросом остаток по счету 76.05(Субконто подразделение, контрагент, договор, и док расчетов) развернутые по контрагентам, и договор с максимальной суммой задолжености. Причем получить так, что бы были итоги по тому краткосрочная задолженность это или нет(Срок действия в договоре старше 1 января 14).
Делаю так, все хорошо, но нет разделения итогов, по кратко и долгосрочной задолженности. Каким образом нужно модифицировать сей код? Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.Текст = "ВЫБРАТЬ | ОбщиеОстатки.Субконто1, | ОбщиеОстатки.Субконто2, | ОбщиеОстатки.СуммаОстаток КАК СуммаОстаток, | ОбщиеОстатки.Субконто1Наименование, | ОбщиеОстатки.ЭтоКраткосрочнаяЗадолженость КАК ЭтоКраткосрочнаяЗадолженость, | ОбщиеОстатки.СрокДействия, | ОбщиеОстатки.СуммаРазвернутыйОстатокДт |ПОМЕСТИТЬ ВыборкаПоОстаткам |ИЗ | (ВЫБРАТЬ | ХозрасчетныйОстатки.Субконто1 КАК Субконто1, | ХозрасчетныйОстатки.Субконто2 КАК Субконто2, | ХозрасчетныйОстатки.СуммаОстаток КАК СуммаОстаток, | ХозрасчетныйОстатки.Субконто1.Наименование КАК Субконто1Наименование, | ВЫБОР | КОГДА ПериодыДок.СрокДействия >= &ДатаКраткосрочных | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК ЭтоКраткосрочнаяЗадолженость, | ПериодыДок.СрокДействия КАК СрокДействия, | ХозрасчетныйОстатки.СуммаРазвернутыйОстатокДт КАК СуммаРазвернутыйОстатокДт | ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки( | &Дата, | Счет = &Счет7605, | , | Субконто1 = &Субконто1 | ИЛИ &ПоВсем) КАК ХозрасчетныйОстатки | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ХозрасчетныйОстаткиИОбороты.Субконто2 КАК ДоговорКонтрагента, | МАКСИМУМ(ХозрасчетныйОстаткиИОбороты.Регистратор.Дата) КАК СрокДействия | ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, &Дата, Регистратор, , Счет = &Счет7605, , ) КАК ХозрасчетныйОстаткиИОбороты | ГДЕ | ХозрасчетныйОстаткиИОбороты.Организация = &Организация | | СГРУППИРОВАТЬ ПО | ХозрасчетныйОстаткиИОбороты.Субконто2) КАК ПериодыДок | ПО ХозрасчетныйОстатки.Субконто2 = ПериодыДок.ДоговорКонтрагента | ГДЕ | ХозрасчетныйОстатки.Организация = &Организация | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | ХозрасчетныйОстатки.Субконто1, | ХозрасчетныйОстатки.Субконто2, | ХозрасчетныйОстатки.СуммаОстаток, | ХозрасчетныйОстатки.Субконто1.Наименование, | ВЫБОР | КОГДА ПериодыДок.СрокДействия >= &ДатаКраткосрочных | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ, | ПериодыДок.СрокДействия, | ХозрасчетныйОстатки.СуммаРазвернутыйОстатокДт | ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки( | &Дата, | Счет = &Счет60, | , | Субконто1 = &Субконто1 | ИЛИ &ПоВсем) КАК ХозрасчетныйОстатки | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ХозрасчетныйОстаткиИОбороты.Субконто2 КАК ДоговорКонтрагента, | МАКСИМУМ(ХозрасчетныйОстаткиИОбороты.Регистратор.Дата) КАК СрокДействия | ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, &Дата, Регистратор, , Счет = &Счет60, , ) КАК ХозрасчетныйОстаткиИОбороты | ГДЕ | ХозрасчетныйОстаткиИОбороты.Организация = &Организация | | СГРУППИРОВАТЬ ПО | ХозрасчетныйОстаткиИОбороты.Субконто2) КАК ПериодыДок | ПО ХозрасчетныйОстатки.Субконто2 = ПериодыДок.ДоговорКонтрагента | ГДЕ | ХозрасчетныйОстатки.Организация = &Организация) КАК ОбщиеОстатки"; Запрос.УстановитьПараметр("Дата", Новый Граница(КонецДня(ДатаОтчета),ВидГраницы.Включая)); Запрос.УстановитьПараметр("ДатаКраткосрочных", ДатаКраткосрочнойЗадолжености); Запрос.УстановитьПараметр("Счет7605",Счет76); Запрос.УстановитьПараметр("Счет60",Счет60); Запрос.УстановитьПараметр("Организация",Организация); Запрос.УстановитьПараметр("Субконто1",Справочники.Контрагенты.НайтиПоКоду("000002506")); Запрос.УстановитьПараметр("ПоВсем",Истина); ТабДокумент = Новый ТабличныйДокумент; макет = ПолучитьМакет("Макет"); Областьшапка = макет.ПолучитьОбласть("Шапка"); ТабДокумент.Вывести(Областьшапка); Запрос.Выполнить(); //Выборка по договорам Запрос.Текст = "ВЫБРАТЬ | ОстаткиСвернутые.Субконто1, | ОстаткиСвернутые.Субконто2, | ОстаткиСвернутые.СуммаОстаток КАК СуммаОстаток, | ОстаткиСвернутые.Субконто1Наименование КАК Субконто1Наименование, | ОстаткиСвернутые.ЭтоКраткосрочнаяЗадолженость КАК ЭтоКраткосрочнаяЗадолженость, | ОстаткиСвернутые.СрокДействия |ИЗ | (ВЫБРАТЬ | ВыборкаПоОстаткам.Субконто1 КАК Субконто1, | ВыборкаПоОстаткам.Субконто2 КАК Субконто2, | СУММА(ВыборкаПоОстаткам.СуммаОстаток) КАК СуммаОстаток, | ВыборкаПоОстаткам.Субконто1Наименование КАК Субконто1Наименование, | ВыборкаПоОстаткам.ЭтоКраткосрочнаяЗадолженость КАК ЭтоКраткосрочнаяЗадолженость, | ВыборкаПоОстаткам.СрокДействия КАК СрокДействия | ИЗ | ВыборкаПоОстаткам КАК ВыборкаПоОстаткам | | СГРУППИРОВАТЬ ПО | ВыборкаПоОстаткам.Субконто1Наименование, | ВыборкаПоОстаткам.Субконто1, | ВыборкаПоОстаткам.Субконто2, | ВыборкаПоОстаткам.ЭтоКраткосрочнаяЗадолженость, | ВыборкаПоОстаткам.СрокДействия) КАК ОстаткиСвернутые | |УПОРЯДОЧИТЬ ПО | Субконто1Наименование, | СуммаОстаток УБЫВ"; //Итоговая таблица ВыборкаПоДОговорам = Запрос.Выполнить().Выбрать(); Запрос.Текст = "ВЫБРАТЬ | ОстаткиСвернутые.Субконто1, | ОстаткиСвернутые.Субконто2, | ОстаткиСвернутые.СуммаОстаток КАК СуммаОстаток, | ОстаткиСвернутые.Субконто1Наименование КАК Субконто1Наименование, | ОстаткиСвернутые.ЭтоКраткосрочнаяЗадолженость КАК ЭтоКраткосрочнаяЗадолженость, | ОстаткиСвернутые.СрокДействия, | ОстаткиСвернутые.СуммаОстаток2 КАК СуммаОстаток2 |ИЗ | (ВЫБРАТЬ | ВыборкаПоОстаткам.Субконто1 КАК Субконто1, | """" КАК Субконто2, | СУММА(ВыборкаПоОстаткам.СуммаОстаток) КАК СуммаОстаток, | ВыборкаПоОстаткам.Субконто1Наименование КАК Субконто1Наименование, | ИСТИНА КАК ЭтоКраткосрочнаяЗадолженость, | """" КАК СрокДействия, | СУММА(ВыборкаПоОстаткам.СуммаРазвернутыйОстатокДт) КАК СуммаОстаток2 | ИЗ | ВыборкаПоОстаткам КАК ВыборкаПоОстаткам | | СГРУППИРОВАТЬ ПО | ВыборкаПоОстаткам.Субконто1Наименование, | ВыборкаПоОстаткам.Субконто1) КАК ОстаткиСвернутые |ГДЕ | ОстаткиСвернутые.СуммаОстаток > 0 | |УПОРЯДОЧИТЬ ПО | Субконто1Наименование |ИТОГИ | СУММА(СуммаОстаток), | СУММА(СуммаОстаток2) |ПО | ОБЩИЕ, | ЭтоКраткосрочнаяЗадолженость" ; Результат = Запрос.Выполнить(); //тзДат = СформироватьТЗССроками(Результат.Выгрузить().ВыгрузитьКолонку("Субконто2")); //тз = Результат.Выгрузить().ВыгрузитьКолонку("Субконто2"); ВыборкаОбщийИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); ВыборкаОбщийИтог.Следующий(); // Общий итог // Вставить обработку выборки ВыборкаОбщийИтог ВыборкаКраткосрочная = ВыборкаОбщийИтог.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"ЭтоКраткосрочнаяЗадолженость"); ном = 0; Пока ВыборкаКраткосрочная.Следующий() Цикл ном = ном+1; ОблСтрока = макет.ПолучитьОбласть("Строка"); ОблСтрока.Параметры.Заполнить(ВыборкаКраткосрочная); ОблСтрока.Параметры.Ном = Ном; ОблСтрока.Параметры.Наименование = ?(ВыборкаКраткосрочная.ЭтоКраткосрочнаяЗадолженость = Истина,"Краткосрочная","Долгосрочная"); ТабДокумент.Вывести(ОблСтрока); подном = 0; ВыборкаДетальныеЗаписи = ВыборкаКраткосрочная.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() цикл подном = подном+1; ОблСтрока = макет.ПолучитьОбласть("Строка"); ОблСтрока.Параметры.Заполнить(ВыборкаДетальныеЗаписи); ОблСтрока.Параметры.ном = "" + Ном + "." + подном; ОблСтрока.Параметры.Наименование = ВыборкаДетальныеЗаписи.Субконто1; Если ВыборкаПоДОговорам.НайтиСледующий(Новый Структура("Субконто1",ВыборкаДетальныеЗаписи.Субконто1)) тогда ОБлСтрока.Параметры.Заполнить(ВыборкаПоДОговорам); КонецЕсли; //массивНайденДата = тзДат.НайтиСтроки(Новый Структура("Контрагент,ДоговорКонтрагента",ВыборкаДетальныеЗаписи.Субконто1,ВыборкаДетальныеЗаписи.Субконто2)); //ОблСтрока.Параметры.СрокДействия = ВыборкаДетальныеЗаписи.Субконто2.ДатаПоследнейПоставки; //для каждого эл из массивНайденДата цикл // ОблСтрока.Параметры.СрокДействия = эл.СрокДействия ; //КонецЦикла; ТабДокумент.Вывести(ОблСтрока); КонецЦикла; КонецЦикла; облИтого = макет.ПолучитьОбласть("Итого"); облИтого.Параметры.Заполнить(ВыборкаОбщийИтог); ТабДокумент.Вывести(облИтого); УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент); |
|||
1
ИУБиПовиц
22.04.14
✎
12:19
|
пробую так делать, какие-то неведомые цифры появляются
//Выборка по договорам Запрос.Текст = "ВЫБРАТЬ | МАКСИМУМ(ОстаткиСвернутые.Субконто2) КАК Субконто2, | ОстаткиСвернутые.ЭтоКраткосрочнаяЗадолженость КАК ЭтоКраткосрочнаяЗадолженость, | ОстаткиСвернутые.Субконто1 |ПОМЕСТИТЬ ВыборкаДоговоры |ИЗ | (ВЫБРАТЬ | ВыборкаПоОстаткам.Субконто1 КАК Субконто1, | ВыборкаПоОстаткам.Субконто2 КАК Субконто2, | СУММА(ВыборкаПоОстаткам.СуммаОстаток) КАК СуммаОстаток, | ВыборкаПоОстаткам.Субконто1Наименование КАК Субконто1Наименование, | ВыборкаПоОстаткам.ЭтоКраткосрочнаяЗадолженость КАК ЭтоКраткосрочнаяЗадолженость, | ВыборкаПоОстаткам.СрокДействия КАК СрокДействия | ИЗ | ВыборкаПоОстаткам КАК ВыборкаПоОстаткам | | СГРУППИРОВАТЬ ПО | ВыборкаПоОстаткам.Субконто1Наименование, | ВыборкаПоОстаткам.Субконто1, | ВыборкаПоОстаткам.Субконто2, | ВыборкаПоОстаткам.ЭтоКраткосрочнаяЗадолженость, | ВыборкаПоОстаткам.СрокДействия) КАК ОстаткиСвернутые | |СГРУППИРОВАТЬ ПО | ОстаткиСвернутые.ЭтоКраткосрочнаяЗадолженость, | ОстаткиСвернутые.Субконто1"; //Итоговая таблица //ВыборкаПоДОговорам = Запрос.Выполнить().Выбрать(); Запрос.Выполнить(); Запрос.Текст = "ВЫБРАТЬ | ОстаткиСвернутые.Субконто1, | ОстаткиСвернутые.Субконто2, | ОстаткиСвернутые.СуммаОстаток КАК СуммаОстаток, | ОстаткиСвернутые.Субконто1Наименование КАК Субконто1Наименование, | ОстаткиСвернутые.ЭтоКраткосрочнаяЗадолженость КАК ЭтоКраткосрочнаяЗадолженость, | ОстаткиСвернутые.СрокДействия, | ОстаткиСвернутые.СуммаОстаток2 КАК СуммаОстаток2 |ИЗ | (ВЫБРАТЬ | ВыборкаПоОстаткам.Субконто1 КАК Субконто1, | ВыборкаДоговоры.Субконто2 КАК Субконто2, | СУММА(ВыборкаПоОстаткам.СуммаОстаток) КАК СуммаОстаток, | ВыборкаПоОстаткам.Субконто1Наименование КАК Субконто1Наименование, | ВыборкаДоговоры.ЭтоКраткосрочнаяЗадолженость КАК ЭтоКраткосрочнаяЗадолженость, | ВыборкаПоОстаткам.СрокДействия КАК СрокДействия, | СУММА(ВыборкаПоОстаткам.СуммаРазвернутыйОстатокДт) КАК СуммаОстаток2 | ИЗ | ВыборкаПоОстаткам КАК ВыборкаПоОстаткам | ЛЕВОЕ СОЕДИНЕНИЕ ВыборкаДоговоры КАК ВыборкаДоговоры | ПО ВыборкаПоОстаткам.Субконто1 = ВыборкаДоговоры.Субконто1 | | СГРУППИРОВАТЬ ПО | ВыборкаПоОстаткам.Субконто1Наименование, | ВыборкаПоОстаткам.Субконто1, | ВыборкаДоговоры.Субконто2, | ВыборкаДоговоры.ЭтоКраткосрочнаяЗадолженость, | ВыборкаПоОстаткам.СрокДействия) КАК ОстаткиСвернутые |ГДЕ | ОстаткиСвернутые.СуммаОстаток > 0 | |УПОРЯДОЧИТЬ ПО | Субконто1Наименование |ИТОГИ | СУММА(СуммаОстаток), | СУММА(СуммаОстаток2) |ПО | ОБЩИЕ, | ЭтоКраткосрочнаяЗадолженость" ; |
|||
2
hhhh
22.04.14
✎
12:56
|
ну вы же суммируете тупо остаток за разные периоды?
| СУММА(ВыборкаПоОстаткам.СуммаОстаток) КАК СуммаОстаток, | СУММА(ВыборкаПоОстаткам.СуммаРазвернутыйОстатокДт) КАК СуммаОстаток2 | ИЗ | ВыборкаПоОстаткам КАК ВыборкаПоОстаткам | ЛЕВОЕ СОЕДИНЕНИЕ ВыборкаДоговоры КАК ВыборкаДоговоры | ПО ВыборкаПоОстаткам.Субконто1 = ВыборкаДоговоры.Субконто1 | | СГРУППИРОВАТЬ ПО | ... | ВыборкаПоОстаткам.СрокДействия ну то есть изначально понятно что если сложить остатки за январь с остатками за февраль, то получится фигня. |
|||
3
ИУБиПовиц
22.04.14
✎
13:12
|
Ну вот например
Контрагент Иванов общий остаток 10000р из которых остаток по договору А = 15000 по ДТ остаток по договору Б = 5000 р по КТ у меня в отчете должно быть Иванов ДатаВозникновенияЗадолжености(последняя по 2 договорам) 10000 и последняя колонка Договор А(так как остаток больше). Как это запросом собрать, что то не пойму |
|||
4
ИУБиПовиц
22.04.14
✎
13:13
|
А если наоборот
остаток по А 5000 ДТ а по Б 15000 КТ то должен выводить нуль |
|||
5
hhhh
22.04.14
✎
13:20
|
вы вообще непонятно как писали запрос.
СуммаРазвернутыйОстатокКт - у вас даже и нет такого в принципе. личше взять типовой отчет кредиторская задолженность и немножко подрихтовать. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |