|
Проблема с запросом. | ☑ | ||
---|---|---|---|---|
0
antihacker
10.04.18
✎
14:22
|
Всем привет ! Вот запрос
Макет = Документы.ИзмененияПланаФинансированияПоРасходам.ПолучитьМакет("Приложение33"); ТабДок = Новый ТабличныйДокумент; ТабДок.АвтоМасштаб = Истина; ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; //Шапка отчета ШапкаОтчета = Макет.ПолучитьОбласть("Шапка"); ШапкаОтчета.Параметры.ВидБюджета = ЭтотОбъект.ОрганизацияГУ.ВидБюджета; ШапкаОтчета.Параметры.НомерПриложении = "Приложение 33"; ШапкаОтчета.Параметры.Организация = ЭтотОбъект.ОрганизацияГУ; ШапкаОтчета.Параметры.ВидБюджета = ЭтотОбъект.ОрганизацияГУ.ВидБюджета; ТабДок.Вывести(ШапкаОтчета); //ДатаЗаголовок отчета ДатаЗаголовок = Макет.ПолучитьОбласть("ДатаЗаголовок"); ДатаЗаголовок.Параметры.ДатаСправки = ТекущаяДата(); ТабДок.Вывести(ДатаЗаголовок); //Уровень детализации Подпрограмма Специфика Если ЭтотОбъект.УровеньДетализации = "Программа" Тогда вхПоПрограмме = Истина; вхПоПодпрограмме = Ложь; вхПоСпецифике = Ложь; //ЗаголовокКБКПрограмма отчета ЗаголовокКБКПрограмма = Макет.ПолучитьОбласть("ЗаголовокКБКПрограмма"); ТабДок.Вывести(ЗаголовокКБКПрограмма); //Строки СтрокаПР = Макет.ПолучитьОбласть("СтрокаПР"); //Поля для итог ПоляДляИтог = "ПР"; ИначеЕсли ЭтотОбъект.УровеньДетализации = "Подпрограмма" Тогда вхПоПрограмме = Истина; вхПоПодпрограмме = Истина; вхПоСпецифике = Ложь; //ЗаголовокКБКПодпрограмма отчета ЗаголовокКБКПрограмма = Макет.ПолучитьОбласть("ЗаголовокКБКПодпрограмма"); ТабДок.Вывести(ЗаголовокКБКПрограмма); //Строки СтрокаПР = Макет.ПолучитьОбласть("СтрокаППР"); //Поля для итог ПоляДляИтог = "ПР,ППР"; ИначеЕсли ЭтотОбъект.УровеньДетализации = "Специфика" Тогда вхПоПрограмме = Истина; вхПоПодпрограмме = Истина; вхПоСпецифике = Истина; //ЗаголовокКБКСП отчета ЗаголовокКБКПрограмма = Макет.ПолучитьОбласть("ЗаголовокКБКСП"); ТабДок.Вывести(ЗаголовокКБКПрограмма); //Строки СтрокаПР = Макет.ПолучитьОбласть("СтрокаСП"); //Поля для итог ПоляДляИтог = "ПР,ППР,СП"; КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Данные.ФКР.Администратор.ФункциональнаяГруппа КАК ФГ, | Данные.ФКР.Администратор КАК АБП, | Данные.Организация КАК Организация, | ВЫБОР | КОГДА &вхПоПрограмме | ТОГДА Данные.ФКР.ПрограммыРасходов | ИНАЧЕ NULL | КОНЕЦ КАК ПР, | ВЫБОР | КОГДА &вхПоПодпрограмме | ТОГДА Данные.ФКР.Подпрограмма | ИНАЧЕ NULL | КОНЕЦ КАК ППР, | ВЫБОР | КОГДА &вхПоСпецифике | ТОГДА Данные.ЭКР | ИНАЧЕ NULL | КОНЕЦ КАК СП, | СУММА(Данные.СуммаГод) КАК СуммаГод, | СУММА(Данные.Январь) КАК Январь, | СУММА(Данные.Февраль) КАК Февраль, | СУММА(Данные.Март) КАК Март, | СУММА(Данные.Апрель) КАК Апрель, | СУММА(Данные.Май) КАК Май, | СУММА(Данные.Июнь) КАК Июнь, | СУММА(Данные.Июль) КАК Июль, | СУММА(Данные.Август) КАК Август, | СУММА(Данные.Сентябрь) КАК Сентябрь, | СУММА(Данные.Октябрь) КАК Октябрь, | СУММА(Данные.Ноябрь) КАК Ноябрь, | СУММА(Данные.Декабрь) КАК Декабрь | ИЗ | Документ.ИзмененияПланаФинансированияПоРасходам.ТЧРасходыПоОбязательствам КАК Данные | ГДЕ | Данные.Ссылка = &вхСсылка | И Данные.Организация = &вхОрганизация | И ( Данные.Январь <> 0 | ИЛИ Данные.Февраль <> 0 | ИЛИ Данные.Март <> 0 | ИЛИ Данные.Апрель <> 0 | ИЛИ Данные.Май <> 0 | ИЛИ Данные.Июнь <> 0 | ИЛИ Данные.Июль <> 0 | ИЛИ Данные.Август <> 0 | ИЛИ Данные.Сентябрь <> 0 | ИЛИ Данные.Октябрь <> 0 | ИЛИ Данные.Ноябрь <> 0 | ИЛИ Данные.Декабрь <> 0) | СГРУППИРОВАТЬ ПО | Данные.ФКР.Администратор.ФункциональнаяГруппа, | Данные.ФКР.Администратор, | Данные.Организация, //| Данные.ФКР.ПрограммыРасходов, //| Данные.ФКР.Подпрограмма, //| Данные.ЭКР, //| | ВЫБОР | КОГДА &вхПоПрограмме | ТОГДА Данные.ФКР.ПрограммыРасходов | ИНАЧЕ NULL | КОНЕЦ, | | ВЫБОР | КОГДА &вхПоПодпрограмме | ТОГДА Данные.ФКР.Подпрограмма | ИНАЧЕ NULL | КОНЕЦ, | | ВЫБОР | КОГДА &вхПоСпецифике | ТОГДА Данные.ЭКР | ИНАЧЕ NULL | КОНЕЦ | УПОРЯДОЧИТЬ ПО | Организация, | ФГ, | АБП, | ПР, | ППР, | СП | ИТОГИ | СУММА(СуммаГод), | СУММА(Январь), | СУММА(Февраль), | СУММА(Март), | СУММА(Апрель), | СУММА(Май), | СУММА(Июнь), | СУММА(Июль), | СУММА(Август), | СУММА(Сентябрь), | СУММА(Октябрь), | СУММА(Ноябрь), | СУММА(Декабрь) | ПО | ОБЩИЕ, | Организация, | ФГ,АБП,"+ПоляДляИтог+""; //| АБП,ПР,ППР,СП"; //| ПР, //| ППР //| "; Запрос.Параметры.Вставить("вхСсылка" , ЭтотОбъект.ТекДокумент); Запрос.Параметры.Вставить("вхОрганизация" , ЭтотОбъект.ОрганизацияГУ); Запрос.Параметры.Вставить("вхПоПрограмме" ,вхПоПрограмме); Запрос.Параметры.Вставить("вхПоПодпрограмме" ,вхПоПодпрограмме); Запрос.Параметры.Вставить("вхПоСпецифике" ,вхПоСпецифике); //Строка по программе ИтогоПоПрограмме = Макет.ПолучитьОбласть("ИтогоПоПрограмме"); //БюджетополучательПР БюджетополучательПР = Макет.ПолучитьОбласть("БюджетополучательПР"); //ИтогоПоСправке ИтогоПоСправке = Макет.ПолучитьОбласть("ИтогоПоСправке"); ОбщийРезВыборки2 = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ОбщийРезВыборки2.Следующий() Цикл ИтогоПоСправке.Параметры.Заполнить(ОбщийРезВыборки2); ОбщийРезВыборки1 = ОбщийРезВыборки2.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ОбщийРезВыборки1.Следующий() Цикл БюджетополучательПР.Параметры.Заполнить(ОбщийРезВыборки1); ОбщийРезВыборки = ОбщийРезВыборки1.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ОбщийРезВыборки.Следующий() Цикл СтрокаПР.Параметры.Заполнить(ОбщийРезВыборки); ИтогоПоПрограмме.Параметры.Заполнить(ОбщийРезВыборки); СтрокаПР.Параметры.Заполнить(ОбщийРезВыборки); СтрокаПР.Параметры.Наименование = ОбщийРезВыборки.ФГ.Наименование; СтрокаПР.Параметры.ФГ = ОбщийРезВыборки.ФГ.Код; СтрокаПР.Параметры.АБП = ""; СтрокаПР.Параметры.КодГУ = ""; СтрокаПР.Параметры.ПР = ""; попытка СтрокаПР.Параметры.ППР = ""; исключение конецпопытки; попытка СтрокаПР.Параметры.СП = ""; исключение конецпопытки; ТабДок.Вывести(СтрокаПР); ВыборкаПоУчреждению = ОбщийРезВыборки.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаПоУчреждению.Следующий() Цикл //сообщить(ВыборкаПоУчреждению.ФГ); //сообщить(ВыборкаПоУчреждению.Январь); СтрокаПР.Параметры.Заполнить(ВыборкаПоУчреждению); СтрокаПР.Параметры.Наименование = ВыборкаПоУчреждению.АБП.НаименованиеАдминистратора; СтрокаПР.Параметры.ФГ = ""; СтрокаПР.Параметры.АБП = ВыборкаПоУчреждению.АБП.КодАдминистратораБюджетныхПрограмм; СтрокаПР.Параметры.КодГУ = ""; СтрокаПР.Параметры.ПР = ""; попытка СтрокаПР.Параметры.ППР = ""; исключение конецпопытки; попытка СтрокаПР.Параметры.СП = ""; исключение конецпопытки; ТабДок.Вывести(СтрокаПР); Выборка0 = ВыборкаПоУчреждению.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока Выборка0.Следующий() Цикл СтрокаПР.Параметры.Заполнить(Выборка0); СтрокаПР.Параметры.Наименование = Выборка0.Организация.Наименование; СтрокаПР.Параметры.ФГ = ""; СтрокаПР.Параметры.АБП = ""; СтрокаПР.Параметры.КодГУ = Выборка0.Организация.КодУчреждения; СтрокаПР.Параметры.ПР = ""; попытка СтрокаПР.Параметры.ППР = ""; исключение конецпопытки; попытка СтрокаПР.Параметры.СП = ""; исключение конецпопытки; ТабДок.Вывести(СтрокаПР); Выборка1 = Выборка0.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока Выборка1.Следующий() Цикл СтрокаПР.Параметры.Заполнить(Выборка1); СтрокаПР.Параметры.Наименование = Выборка1.ПР.НаименованиеПрограммы; СтрокаПР.Параметры.ФГ = ""; СтрокаПР.Параметры.АБП = ""; СтрокаПР.Параметры.КодГУ = ""; СтрокаПР.Параметры.ПР = Выборка1.ПР.КодПрограммы; попытка СтрокаПР.Параметры.ППР = ""; исключение конецпопытки; попытка СтрокаПР.Параметры.СП = ""; исключение конецпопытки; ТабДок.Вывести(СтрокаПР); Выборка2 = Выборка1.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока Выборка2.Следующий() Цикл СтрокаПР.Параметры.Заполнить(Выборка2); Если Выборка2.ППР.НаименованиеПодпрограммы = "" Тогда НаименованиеПодпрограммы = Выборка2.ППР.Наименование; КодПодпрограммы = "000"; Иначе НаименованиеПодпрограммы = Выборка2.ППР.НаименованиеПодпрограммы; КодПодпрограммы = Выборка2.ППР.КодПодпрограммы; КонецЕсли; СтрокаПР.Параметры.Наименование = НаименованиеПодпрограммы; СтрокаПР.Параметры.ФГ = ""; СтрокаПР.Параметры.АБП = ""; СтрокаПР.Параметры.КодГУ = ""; СтрокаПР.Параметры.ПР = ""; СтрокаПР.Параметры.ППР = КодПодпрограммы; попытка СтрокаПР.Параметры.СП = ""; исключение конецпопытки; ТабДок.Вывести(СтрокаПР); Выборка3 = Выборка2.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); //сообщить("111"); Пока Выборка3.Следующий() Цикл //сообщить("222222"); СтрокаПР.Параметры.Заполнить(Выборка3); СтрокаПР.Параметры.Наименование = Выборка3.СП.Наименование; СтрокаПР.Параметры.ФГ = ""; СтрокаПР.Параметры.АБП = ""; СтрокаПР.Параметры.КодГУ = ""; СтрокаПР.Параметры.ПР = ""; СтрокаПР.Параметры.ППР = ""; СтрокаПР.Параметры.СП = Выборка3.СП.Код; ТабДок.Вывести(СтрокаПР); КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; ТабДок.Вывести(ИтогоПоПрограмме); КонецЦикла; ТабДок.Вывести(БюджетополучательПР); КонецЦикла; ТабДок.Вывести(ИтогоПоСправке); КонецЦикла; Возврат ТабДок; Когда срабатывает условие ПоляДляИтог = "ПР,ППР,СП" , то почему то, данные удваиваются ? Где косяк ? |
|||
1
antihacker
10.04.18
✎
14:26
|
такое ощущение что не может сгруппировать по ППР. Хотя запрос проверилв консоле. Все нормально.
|
|||
2
tesseract
10.04.18
✎
16:49
|
(1) По null суммирование и не проходит. Используй Значение(ЧегоТамУтебя.ПустаяССылка)
|
|||
3
antihacker
11.04.18
✎
06:05
|
Тема закрыта !
Надо было так Выборка2 = Выборка1.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"ППР"); И Выборка3 = Выборка2.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,,"ВСЕ"); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |