![]() |
![]() |
![]() |
|
Объединить два запроса | ☑ | ||
---|---|---|---|---|
0
evgen2020
09.07.14
✎
12:50
|
Всем привет!Нужна помощь,сделал отчет который формирует доходы за введеный год и за предыдущий год ,но нужно что бы на выходе в одном столбце были данные за введенный год а во втором столбце за предыдущий год
Если ВидГраждан = Перечисления.РЦ_ВидГраждан.дляГражданРБ Тогда Валюта=Константы.РЦ_НациональнаяВалюта.Получить(); //Выбор макета ТД = Новый ТабличныйДокумент; Макет = Отчеты.АнализДоходов.ПолучитьМакет("АнализДоходов"); ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ТД.Вывести(ОбластьШапка); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьЗаголовок.Параметры.Вид = ЭтаФорма.ВидГраждан; ОбластьЗаголовок.Параметры.Валюта = Валюта; ОбластьЗаголовок.Параметры.Год = Формат(ЭтаФорма.Год, " ДФ=yyyy"); ОбластьЗаголовок.Параметры.Год2 = Формат(ЭтаФорма.Год-1, " ДФ=yyyy"); ТД.Вывести(ОбластьЗаголовок); ОбластьГруппа = Макет.ПолучитьОбласть("Группа"); ОбластьИтого = Макет.ПолучитьОбласть("Итого"); //Заполнение табличной части ЗапросТаблица = Новый Запрос(); ЗапросТаблица.Текст = "ВЫБРАТЬ | ВложенныйЗапрос.Отделение, | СУММА(ВложенныйЗапрос.СуммаОборот) КАК СуммаОборот | ИЗ | (ВЫБРАТЬ | РЦ_ОказанныеУслугиОбороты.Отделение КАК Отделение, | ЕСТЬNULL(РЦ_ОказанныеУслугиОбороты.СуммаОборот, 0)КАК СуммаОборот | ИЗ | РегистрНакопления.РЦ_ОказанныеУслуги.Обороты(&ДатаС, &ДатаПо,, ВидГраждан = &ВидГраждан) КАК РЦ_ОказанныеУслугиОбороты | | ОБЪЕДИНИТЬ ВСЕ |ВЫБРАТЬ | РЦ_ИспользованныеДопМатериалыОбороты.Отделение, | ЕСТЬNULL(РЦ_ИспользованныеДопМатериалыОбороты.СуммаОборот, 0) | ИЗ | РегистрНакопления.РЦ_ИспользованныеДопМатериалы.Обороты(&ДатаС,&ДатаПо , , ВидГраждан = &ВидГраждан) КАК РЦ_ИспользованныеДопМатериалыОбороты) КАК ВложенныйЗапрос |СГРУППИРОВАТЬ ПО | ВложенныйЗапрос.Отделение"; ЗапросТаблица.УстановитьПараметр("ДатаС",НачалоГода(Год)); ЗапросТаблица.УстановитьПараметр("ДатаПо",КонецГода(Год)); Если ВидГраждан=Перечисления.РЦ_ВидГраждан.дляГражданРБ тогда ЗапросТаблица.УстановитьПараметр("ВидГраждан",Перечисления.РЦ_ВидГраждан.дляГражданРБ); КонецЕсли; // РезультатТаблица = ЗапросТаблица.Выполнить().Выгрузить(); Для каждого СтрокаТаблица Из РезультатТаблица Цикл ОбластьГруппа.Параметры.Наименование = СтрокаТаблица.Отделение; ОбластьГруппа.Параметры.Сумма = СтрокаТаблица.СуммаОборот; ТД.Вывести(ОбластьГруппа); КонецЦикла; ////ВТОРОЙ ЗАПРОС |
|||
1
Maxus43
09.07.14
✎
12:51
|
в чем проблем то?
|
|||
2
evgen2020
09.07.14
✎
12:52
|
Всем привет!Нужна помощь,сделал отчет который формирует доходы за введеный год и за предыдущий год ,но нужно что бы на выходе в одном столбце были данные за введенный год а во втором столбце за предыдущий год
Если ВидГраждан = Перечисления.РЦ_ВидГраждан.дляГражданРБ Тогда Валюта=Константы.РЦ_НациональнаяВалюта.Получить(); //Выбор макета ТД = Новый ТабличныйДокумент; Макет = Отчеты.АнализДоходов.ПолучитьМакет("АнализДоходов"); ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ТД.Вывести(ОбластьШапка); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьЗаголовок.Параметры.Вид = ЭтаФорма.ВидГраждан; ОбластьЗаголовок.Параметры.Валюта = Валюта; ОбластьЗаголовок.Параметры.Год = Формат(ЭтаФорма.Год, " ДФ=yyyy"); ОбластьЗаголовок.Параметры.Год2 = Формат(ЭтаФорма.Год-1, " ДФ=yyyy"); ТД.Вывести(ОбластьЗаголовок); ОбластьГруппа = Макет.ПолучитьОбласть("Группа"); ОбластьИтого = Макет.ПолучитьОбласть("Итого"); //Заполнение табличной части ЗапросТаблица = Новый Запрос(); ЗапросТаблица.Текст = "ВЫБРАТЬ | ВложенныйЗапрос.Отделение, | СУММА(ВложенныйЗапрос.СуммаОборот) КАК СуммаОборот | ИЗ | (ВЫБРАТЬ | РЦ_ОказанныеУслугиОбороты.Отделение КАК Отделение, | ЕСТЬNULL(РЦ_ОказанныеУслугиОбороты.СуммаОборот, 0)КАК СуммаОборот | ИЗ | РегистрНакопления.РЦ_ОказанныеУслуги.Обороты(&ДатаС, &ДатаПо,, ВидГраждан = &ВидГраждан) КАК РЦ_ОказанныеУслугиОбороты | | ОБЪЕДИНИТЬ ВСЕ |ВЫБРАТЬ | РЦ_ИспользованныеДопМатериалыОбороты.Отделение, | ЕСТЬNULL(РЦ_ИспользованныеДопМатериалыОбороты.СуммаОборот, 0) | ИЗ | РегистрНакопления.РЦ_ИспользованныеДопМатериалы.Обороты(&ДатаС,&ДатаПо , , ВидГраждан = &ВидГраждан) КАК РЦ_ИспользованныеДопМатериалыОбороты) КАК ВложенныйЗапрос |СГРУППИРОВАТЬ ПО | ВложенныйЗапрос.Отделение"; ЗапросТаблица.УстановитьПараметр("ДатаС",НачалоГода(Год)); ЗапросТаблица.УстановитьПараметр("ДатаПо",КонецГода(Год)); Если ВидГраждан=Перечисления.РЦ_ВидГраждан.дляГражданРБ тогда ЗапросТаблица.УстановитьПараметр("ВидГраждан",Перечисления.РЦ_ВидГраждан.дляГражданРБ); КонецЕсли; // РезультатТаблица = ЗапросТаблица.Выполнить().Выгрузить(); Для каждого СтрокаТаблица Из РезультатТаблица Цикл ОбластьГруппа.Параметры.Наименование = СтрокаТаблица.Отделение; ОбластьГруппа.Параметры.Сумма = СтрокаТаблица.СуммаОборот; ТД.Вывести(ОбластьГруппа); КонецЦикла; ////ВТОРОЙ ЗАПРОС ЗапросТаблица = Новый Запрос(); ЗапросТаблица.Текст = "ВЫБРАТЬ | ВложенныйЗапрос.Отделение, | СУММА(ВложенныйЗапрос.СуммаОборот) КАК СуммаОборот | ИЗ | (ВЫБРАТЬ | РЦ_ОказанныеУслугиОбороты.Отделение КАК Отделение, | ЕСТЬNULL(РЦ_ОказанныеУслугиОбороты.СуммаОборот, 0)КАК СуммаОборот | ИЗ | РегистрНакопления.РЦ_ОказанныеУслуги.Обороты(&ДатаС, &ДатаПо,, ВидГраждан = &ВидГраждан) КАК РЦ_ОказанныеУслугиОбороты | | ОБЪЕДИНИТЬ ВСЕ |ВЫБРАТЬ | РЦ_ИспользованныеДопМатериалыОбороты.Отделение, | ЕСТЬNULL(РЦ_ИспользованныеДопМатериалыОбороты.СуммаОборот, 0) | ИЗ | РегистрНакопления.РЦ_ИспользованныеДопМатериалы.Обороты(&ДатаС,&ДатаПо , , ВидГраждан = &ВидГраждан) КАК РЦ_ИспользованныеДопМатериалыОбороты) КАК ВложенныйЗапрос |СГРУППИРОВАТЬ ПО | ВложенныйЗапрос.Отделение"; ЗапросТаблица.УстановитьПараметр("ДатаС",НачалоГода(Год-1)); ЗапросТаблица.УстановитьПараметр("ДатаПо",КонецГода(Год-1)); Если ВидГраждан=Перечисления.РЦ_ВидГраждан.дляГражданРБ тогда ЗапросТаблица.УстановитьПараметр("ВидГраждан",Перечисления.РЦ_ВидГраждан.дляГражданРБ); КонецЕсли; РезультатТаблица = ЗапросТаблица.Выполнить().Выгрузить(); Для каждого СтрокаТаблица Из РезультатТаблица Цикл ОбластьГруппа.Параметры.Наименование = СтрокаТаблица.Отделение; ОбластьГруппа.Параметры.Сумма2 = СтрокаТаблица.СуммаОборот; ТД.Вывести(ОбластьГруппа); КонецЦикла; |
|||
3
evgen2020
09.07.14
✎
12:58
|
я новичок в1с ,надо чтобы обединилось без повторов. если надо могу скинуть как внешнюю с макетом и формой чтобы понятнее было
|
|||
4
Maxus43
09.07.14
✎
12:59
|
Один запрос делай, просто суммы по периодам выводи в разные поля запроса
|
|||
5
Maxus43
09.07.14
✎
13:03
|
переделывать твой не буду, а как пример:
ВЫБРАТЬ ВложенныйЗапрос.БанковскийСчетКасса, СУММА(ВложенныйЗапрос.СуммаСегодня) КАК СуммаСегодня, СУММА(ВложенныйЗапрос.СуммаЗавтра) КАК СуммаЗавтра ИЗ (ВЫБРАТЬ ДенежныеСредстваОбороты.БанковскийСчетКасса КАК БанковскийСчетКасса, ДенежныеСредстваОбороты.СуммаОборот КАК СуммаСегодня, 0 КАК СуммаЗавтра ИЗ РегистрНакопления.ДенежныеСредства.Обороты(&НачСегодня, &КонСегодня, , ) КАК ДенежныеСредстваОбороты ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ДенежныеСредстваОбороты.БанковскийСчетКасса, 0, ДенежныеСредстваОбороты.СуммаОборот ИЗ РегистрНакопления.ДенежныеСредства.Обороты(&НачЗавтра, &КонЗавтра, , ) КАК ДенежныеСредстваОбороты) КАК ВложенныйЗапрос СГРУППИРОВАТЬ ПО ВложенныйЗапрос.БанковскийСчетКасса |
|||
6
Ненавижу 1С
гуру
09.07.14
✎
13:06
|
(5) дарю проще
ВЫБРАТЬ ПродажиОбороты.Контрагент, СУММА(ВЫБОР КОГДА ПродажиОбороты.Период = &ПрошлыйГод ТОГДА ПродажиОбороты.СтоимостьОборот ИНАЧЕ 0 КОНЕЦ) КАК ПрошлаяПродажа, СУММА(ВЫБОР КОГДА ПродажиОбороты.Период = &ТекущийГод ТОГДА ПродажиОбороты.СтоимостьОборот ИНАЧЕ 0 КОНЕЦ) КАК ТекущаяПродажа ИЗ РегистрНакопления.Продажи.Обороты(, , Год, ) КАК ПродажиОбороты СГРУППИРОВАТЬ ПО ПродажиОбороты.Контрагент |
|||
7
evgen2020
09.07.14
✎
13:17
|
у меня в каждом запросе по два регистра. Я чтото совсем запутался
|
|||
8
evgen2020
09.07.14
✎
15:23
|
Сделал как сказали но на выходе пустая таблица
"ВЫБРАТЬ | РЦ_ОказанныеУслугиОбороты.Отделение КАК Отделение , | СУММА(ВЫБОР | КОГДА РЦ_ОказанныеУслугиОбороты.Период = &ПрошлыйГод | ТОГДА ЕСТЬNULL(РЦ_ОказанныеУслугиОбороты.СуммаОборот, 0) | ИНАЧЕ 0 | КОНЕЦ) КАК СтарыеОбороты, | СУММА(ВЫБОР | КОГДА РЦ_ОказанныеУслугиОбороты.Период = &ТекущийГод | ТОГДА ЕСТЬNULL(РЦ_ОказанныеУслугиОбороты.СуммаОборот, 0) | ИНАЧЕ 0 | КОНЕЦ) КАК НовыеОбороты |ИЗ | РегистрНакопления.РЦ_ОказанныеУслуги.Обороты(, ,Год, ВидГраждан = &ВидГраждан) КАК РЦ_ОказанныеУслугиОбороты |СГРУППИРОВАТЬ ПО | РЦ_ОказанныеУслугиОбороты.Отделение "; ЗапросТаблица.УстановитьПараметр("ТекущийГод",Год(Год)); ЗапросТаблица.УстановитьПараметр("ПрошлыйГод",Год(Год)-1); |
|||
9
evgen2020
09.07.14
✎
15:24
|
таблица отчета
|
|||
10
Maxus43
09.07.14
✎
15:34
|
параметры неправильные.
тогда уж пиши так КОГДА ГОД(РЦ_ОказанныеУслугиОбороты.Период) = &ТекущийГод |
|||
11
evgen2020
09.07.14
✎
15:49
|
Спасибо большое работает,но надо добавить еще один регистр.
В запросе должно участвовать два регистра. сумма из одного и второго должна складываться а отделения не дублироваться РЦ_ОказанныеУслугиОбороты.Отделение КАК Отделение ЕСТЬNULL(РЦ_ОказанныеУслугиОбороты.СуммаОборот, 0) РЦ_ИспользованныеДопМатериалыОбороты.Отделение ЕСТЬNULL(РЦ_ИспользованныеДопМатериалыОбороты.СуммаОборот, 0) |
|||
12
Maxus43
09.07.14
✎
15:55
|
Добавить ещё регистр - точно так же, подцепляй к этому через ОБЪЕДЕНИТЬ ВСЁ.
чтоб не дублировалось - всё это суй во вложенный запрос, потом группируй. |
|||
13
evgen2020
09.07.14
✎
16:24
|
Сделал вот так ругается
{Отчет.АнализДоходов.Форма.ФормаОтчета.Форма(90)}: Ошибка при вызове метода контекста (Выполнить) РезультатТаблица = ЗапросТаблица.Выполнить().Выгрузить(); по причине: {(7, 2)}: Поле не входит в группу "РЦ_ОказанныеУслугиОбороты.Отделение" <<?>>РЦ_ОказанныеУслугиОбороты.Отделение КАК Отделение , "ВЫБРАТЬ | ВложенныйЗапрос.Отделение, | СУММА(ВложенныйЗапрос.СуммаОборот) КАК СтарыеОбороты, | СУММА(ВложенныйЗапрос.СуммаОборот) КАК НовыеОбороты | ИЗ |( ВЫБРАТЬ | РЦ_ОказанныеУслугиОбороты.Отделение КАК Отделение , | СУММА(ВЫБОР | КОГДА ГОД(РЦ_ОказанныеУслугиОбороты.Период) = &ПрошлыйГод | ТОГДА ЕСТЬNULL(РЦ_ОказанныеУслугиОбороты.СуммаОборот, 0) | ИНАЧЕ 0 | КОНЕЦ) КАК СтарыеОбороты, | СУММА(ВЫБОР | КОГДА ГОД( РЦ_ОказанныеУслугиОбороты.Период) = &ТекущийГод | ТОГДА ЕСТЬNULL(РЦ_ОказанныеУслугиОбороты.СуммаОборот, 0) | ИНАЧЕ 0 | КОНЕЦ) КАК НовыеОбороты |ИЗ | РегистрНакопления.РЦ_ОказанныеУслуги.Обороты(, ,Год, ВидГраждан = &ВидГраждан) КАК РЦ_ОказанныеУслугиОбороты | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | | РЦ_ИспользованныеДопМатериалыОбороты.Отделение, | СУММА(ВЫБОР | КОГДА ГОД(РЦ_ИспользованныеДопМатериалыОбороты.Период) = &ПрошлыйГод | ТОГДА ЕСТЬNULL(РЦ_ИспользованныеДопМатериалыОбороты.СуммаОборот, 0) | ИНАЧЕ 0 | КОНЕЦ) КАК СтарыеОбороты, | СУММА(ВЫБОР | КОГДА ГОД(РЦ_ИспользованныеДопМатериалыОбороты.Период) = &ТекущийГод | ТОГДА ЕСТЬNULL(РЦ_ИспользованныеДопМатериалыОбороты.СуммаОборот, 0) | ИНАЧЕ 0 | КОНЕЦ) КАК НовыеОбороты | ИЗ | РегистрНакопления.РЦ_ИспользованныеДопМатериалы.Обороты(, ,Год , ВидГраждан = &ВидГраждан) КАК РЦ_ИспользованныеДопМатериалыОбороты ) КАК ВложенныйЗапрос | |СГРУППИРОВАТЬ ПО | ВложенныйЗапрос.Отделение"; |
|||
14
Maxus43
09.07.14
✎
16:27
|
конструктором делай, чото где-то ошибся
|
|||
15
evgen2020
09.07.14
✎
18:28
|
Всем спасибо.Сделал все работает
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |