Отчет по двум запросам , Сформировать отчет по двум запросам
2 страниц
< 1 2
09.11.17, 14:53
Оратор
Группа: Местный
Сообщений: 312
Из: Бердянск
Спасибо сказали: 110 раз
Рейтинг: 0
код Запрос3 = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС3(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |ДатаДок = Документ.НачисленияУдержанияСписком.ДатаДок; |Расчет = Документ.НачисленияУдержанияСписком.Расчет; |НомерДок = Документ.НачисленияУдержанияСписком.НомерДок; |Величина = Документ.НачисленияУдержанияСписком.Величина; |СкидкаКДоходамДляСтраховыхВзносов = Документ.НачисленияУдержанияСписком.СкидкаКДоходамДляСтраховыхВзносов; |Функция СкидкаКДоходамДляСтраховыхВзносовСумма = Сумма(СкидкаКДоходамДляСтраховыхВзносов-СкидкаКДоходамДляСтраховыхВзносов+Число(Величина)); |Группировка ДатаДок без упорядочивания; |Группировка Расчет; |Группировка НомерДок; |Условие(Расчет = ВыбРасчет); |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос3.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; ТабОбщ = СоздатьОбъект("ТаблицаЗначений"); Запрос3.Выгрузить(ТабОбщ,0,1); //0 - значения групп и функций;//1 - итоги по группировкам выводить сверху Запрос1 = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС1(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |ДатаДок1 = Документ.НачисленияУдержанияСписком.ДатаДок; |Расчет1 = Документ.НачисленияУдержанияСписком.Расчет; |НомерДок1 = Документ.НачисленияУдержанияСписком.НомерДок; |Величина1 = Документ.НачисленияУдержанияСписком.Величина; |СкидкаКДоходамДляСтраховыхВзносов1 = Документ.НачисленияУдержанияСписком.СкидкаКДоходамДляСтраховыхВзносов; |Функция СкидкаКДоходамДляСтраховыхВзносовСумма1 = Сумма(СкидкаКДоходамДляСтраховыхВзносов1-СкидкаКДоходамДляСтраховыхВзносов1+Число(Величина1)); |Группировка ДатаДок1 без упорядочивания; |Группировка Расчет1; |Группировка НомерДок1; |Условие(Расчет1 = ВыбРасчет1); |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос1.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; ТабОбщ.НоваяКолонка("Расчет1");// ТабОбщ.НоваяКолонка("СкидкаКДоходамДляСтраховыхВзносов1","Число"); Пока Запрос1.Группировка(1) = 1 Цикл ДатаДок1 = Запрос1.ДатаДок1; ТабОбщ.НоваяСтрока(); ТабОбщ.ДатаДок = ДатаДок1; ТабОбщ.СкидкаКДоходамДляСтраховыхВзносов1 = Запрос1.СкидкаКДоходамДляСтраховыхВзносов1; Пока Запрос1.Группировка(2) = 1 Цикл Расчет1 = Запрос1.Расчет1; ТабОбщ.НоваяСтрока(); ТабОбщ.ДатаДок = ДатаДок1; ТабОбщ.Расчет1 = Расчет1; ТабОбщ.СкидкаКДоходамДляСтраховыхВзносов1 = Запрос1.СкидкаКДоходамДляСтраховыхВзносов1; Пока Запрос1.Группировка(3) = 1 Цикл ТабОбщ.НоваяСтрока(); ТабОбщ.ДатаДок = ДатаДок1; ТабОбщ.НомерДок = Запрос1.НомерДок1; ТабОбщ.Расчет1 = Расчет1; ТабОбщ.СкидкаКДоходамДляСтраховыхВзносов1 = Запрос1.СкидкаКДоходамДляСтраховыхВзносов1; КонецЦикла; КонецЦикла; КонецЦикла; ТабОбщ.Свернуть("ДатаДок,НомерДок,Расчет,Расчет1","СкидкаКДоходамДляСтраховыхВзносов,СкидкаКДоходамДляСтраховыхВзносов1"); ТабОбщ.Сортировать("ДатаДок,НомерДок"); Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); Таб.ВывестиСекцию("Заголовок"); ТабОбщ.ВыбратьСтроки(); Пока ТабОбщ.ПолучитьСтроку() Цикл Таб.ВывестиСекцию("Строка"); КонецЦикла; Таб.Показать("Сформировать", "");
а строка таблицы
<ТабОбщ.ДатаДок>|<ТабОбщ.НомерДок>|<ТабОбщ.Расчет>|<ТабОбщ.СкидкаКДоходамДляСтраховыхВзносов>| |<ТабОбщ.ДатаДок>|<ТабОбщ.НомерДок>|<ТабОбщ.Расчет1>|<ТабОбщ.СкидкаКДоходамДляСтраховыхВзносов1>|
Сообщение отредактировал nysysimara - 09.11.17, 15:08
09.11.17, 15:03
Общительный
Группа: Пользователи
Сообщений: 18
Спасибо сказали: 0 раз
Рейтинг: 0
nysysimara @ Сегодня, 15:53
,
Пока ТабОбщ.ПолучитьСтроку() <<?>>Цикл
{C:\USERS\FIN\DESKTOP\ГТОВО2.ERT(88)}: Выражение должно иметь логический тип
09.11.17, 15:49
Оратор
Группа: Местный
Сообщений: 312
Из: Бердянск
Спасибо сказали: 110 раз
Рейтинг: 0
ranis @ Сегодня, 15:31
,
взамен
ТабОбщ.Сортировать("ДатаДок,НомерДок");
так
ТабОбщ.Сортировать("ДатаДок,НомерДок,Расчет,Расчет1");
взамен кода ТабОбщ.НоваяКолонка("СкидкаКДоходамДляСтраховыхВзносов1","Число"); Пока Запрос1.Группировка(1) = 1 Цикл ДатаДок1 = Запрос1.ДатаДок1; ТабОбщ.НоваяСтрока(); ТабОбщ.ДатаДок = ДатаДок1; ТабОбщ.СкидкаКДоходамДляСтраховыхВзносов1 = Запрос1.СкидкаКДоходамДляСтраховыхВзносов1; Пока Запрос1.Группировка(2) = 1 Цикл Расчет1 = Запрос1.Расчет1; ТабОбщ.НоваяСтрока(); ТабОбщ.ДатаДок = ДатаДок1; ТабОбщ.Расчет1 = Расчет1; ТабОбщ.СкидкаКДоходамДляСтраховыхВзносов1 = Запрос1.СкидкаКДоходамДляСтраховыхВзносов1; Пока Запрос1.Группировка(3) = 1 Цикл ТабОбщ.НоваяСтрока(); ТабОбщ.ДатаДок = ДатаДок1; ТабОбщ.НомерДок = Запрос1.НомерДок1; ТабОбщ.Расчет1 = Расчет1; ТабОбщ.СкидкаКДоходамДляСтраховыхВзносов1 = Запрос1.СкидкаКДоходамДляСтраховыхВзносов1; КонецЦикла; КонецЦикла; КонецЦикла; ТабОбщ.Свернуть("ДатаДок,НомерДок,Расчет,Расчет1","СкидкаКДоходамДляСтраховыхВзносов,СкидкаКДоходамДляСтраховыхВзносов1");
этот ТабОбщ.НоваяКолонка("СкидкаКДоходамДляСтраховыхВзносовСумма1","Число"); Пока Запрос1.Группировка(1) = 1 Цикл ДатаДок1 = Запрос1.ДатаДок1; ТабОбщ.НоваяСтрока(); ТабОбщ.ДатаДок = ДатаДок1; ТабОбщ.ССкидкаКДоходамДляСтраховыхВзносовСумма1 = Запрос1.СкидкаКДоходамДляСтраховыхВзносовСумма1; Пока Запрос1.Группировка(2) = 1 Цикл Расчет1 = Запрос1.Расчет1; ТабОбщ.НоваяСтрока(); ТабОбщ.ДатаДок = ДатаДок1; ТабОбщ.Расчет1 = Расчет1; ТабОбщ.СкидкаКДоходамДляСтраховыхВзносовСумма1 = Запрос1.СкидкаКДоходамДляСтраховыхВзносовСумма1; Пока Запрос1.Группировка(3) = 1 Цикл ТабОбщ.НоваяСтрока(); ТабОбщ.ДатаДок = ДатаДок1; ТабОбщ.НомерДок = Запрос1.НомерДок1; ТабОбщ.Расчет1 = Расчет1; ТабОбщ.СкидкаКДоходамДляСтраховыхВзносовСумма1 = Запрос1.СкидкаКДоходамДляСтраховыхВзносовСумма1; КонецЦикла; КонецЦикла; КонецЦикла; ТабОбщ.Свернуть("ДатаДок,НомерДок,Расчет,Расчет1","СкидкаКДоходамДляСтраховыхВзносовСумма,СкидкаКДоходамДляСтраховыхВзносовСумма1");
и в таблице заменить
ТабОбщ.СкидкаКДоходамДляСтраховыхВзносов на ТабОбщ.СкидкаКДоходамДляСтраховыхВзносовСумма
ТабОбщ.СкидкаКДоходамДляСтраховыхВзносов1 на ТабОбщ.СкидкаКДоходамДляСтраховыхВзносовСумма1
09.11.17, 15:55
Общительный
Группа: Пользователи
Сообщений: 18
Спасибо сказали: 0 раз
Рейтинг: 0
nysysimara @ Сегодня, 16:49
,
в группировке у меня похоже проблема
logist @ Сегодня, 16:53
,
Я не поднял тему, а просто указал, что проблема не решена. И заранее прошу прощения за ошибки, я не знаю всех правил
10.11.17, 9:11
Общительный
Группа: Пользователи
Сообщений: 18
Спасибо сказали: 0 раз
Рейтинг: 0
salton @ Сегодня, 9:07
,
Это для итого по всему документу?
nysysimara @ Вчера, 16:49
,
Огромное спасибо за помощь
. Теперь я хоть что-то представляю. Задача решена, чуть чуть подкорректировал
И всем остальным, выражаю огромную благодарность
10.11.17, 11:31
Говорящий
Группа: Пользователи
Сообщений: 92
Из: Полтава
Спасибо сказали: 24 раз
Рейтинг: 0
Цитата(ranis @ 10.11.17, 9:11)
salton @ Сегодня, 9:07 , Это для итого по всему документу?
Для "итого по всему документу" (если Вы имеете ввиду Документ.НачисленияУдержанияСписком) есть в запросе
Функция СкидкаКДоходамДляСтраховыхВзносовСумма
, а метод ТабОбщ.Итог("СкидкаКДоходамДляСтраховыхВзносовСумма") вернет вам итог по колонке ТабОбщ.СкидкаКДоходамДляСтраховыхВзносовСумма, который Вы потом сможете поместить в конце табличного документа.
К примеру
СуммаСкидкаКДоходамДляСтраховыхВзносовСумма = ТабОбщ.Итог("СкидкаКДоходамДляСтраховыхВзносовСумма");
Потом в табличном документе создаете секцию "Подвал" и под колонкой "Сумма" помещаете
СуммаСкидкаКДоходамДляСтраховыхВзносовСумма
как выражение.
В коде сначала прошлись по группировкам, а после
ТабОбщ.Свернуть("ДатаДок,НомерДок,Расчет,Расчет1","СкидкаКДоходамДляСтраховыхВзносовСумма,СкидкаКДоходамДляСтраховыхВзносовСумма1");
ставим
СуммаСкидкаКДоходамДляСтраховыхВзносовСумма = ТабОбщ.Итог("СкидкаКДоходамДляСтраховыхВзносовСумма");
и потом уже
Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); Таб.ВывестиСекцию("Заголовок"); ТабОбщ.ВыбратьСтроки(); Пока ТабОбщ.ПолучитьСтроку() Цикл Таб.ВывестиСекцию("Строка"); КонецЦикла; Таб.ВывестиСекцию("Подвал"); Таб.Показать("Сформировать", "");
Не нашли ответа на свой вопрос?
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!