Имя: Пароль:
1C
 
Объединить два запроса в ТЗ
,
0 Радужный_пони
 
26.11.14
11:47
Добрый день! Может мой вопрос покажется вам слишком легким,но у меня он вызвал затруднения. Проблема такая: Мне необходимо было две таблицы значений,объединить в третью.Я это сделал,но данные выводятся  не красиво.

ТЗ1= Новый ТаблицаЗначений;
     ТабДок= Новый ТабличныйДокумент;
     Макет= ПолучитьМакет("Макет1");
     Шапка= Макет.ПолучитьОбласть("Шапка");
     ТабДок.Вывести(Шапка);
     СтрокаОтчета= Макет.ПолучитьОбласть("ДоходыРасходы");

    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ТиповойОбороты.Субконто3 КАК Подразделения,
        |    ТиповойОбороты.Субконто1 КАК СтатьиДоходов,
        |    ТиповойОбороты.СуммаОборотКт КАК СуммаДохода
        |ИЗ
        |    РегистрБухгалтерии.Типовой.Обороты(&НачалоПериода, &КонецПериода, , Счет В (&СчетДох), , Организация = &Организация, , ) КАК ТиповойОбороты
        |ИТОГИ
        |    СУММА(СуммаДохода)
        |ПО
        |    ОБЩИЕ,
        |    Подразделения";

    Запрос.УстановитьПараметр("ВыбСчетРасх", ПланыСчетов.Типовой.НайтиПоКоду("7010"));
    Запрос.УстановитьПараметр("ВыбСчетРасх", ПланыСчетов.Типовой.НайтиПоКоду("7210"));
    Запрос.УстановитьПараметр("КонецПериода", КонецДня(КонецПериода));
    Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
    Запрос.УстановитьПараметр("Организация", Справочники.Организации.НайтиПоКоду("000000001"));
    Запрос.УстановитьПараметр("Счет7010", ПланыСчетов.Типовой.НайтиПоКоду("7010"));
    Запрос.УстановитьПараметр("СчетДох",  ПланыСчетов.Типовой.НайтиПоКоду("6010"));

    Результат1 = Запрос.Выполнить();
    ТЗ1= Результат1.Выгрузить();

    Запрос2 = Новый Запрос;
    Запрос2.Текст =
        "ВЫБРАТЬ
        |    ВЫБОР
        |        КОГДА ТиповойОбороты.Счет = &Счет7010
        |            ТОГДА ТиповойОбороты.Субконто3
        |        ИНАЧЕ ТиповойОбороты.Субконто2
        |    КОНЕЦ КАК Подразделения,
        |    ТиповойОбороты.Субконто1 КАК СтатьиРасходов,
        |    ТиповойОбороты.СуммаОборотДт КАК СуммаРасхода
        |ИЗ
        |    РегистрБухгалтерии.Типовой.Обороты(, , , Счет В (&ВыбСчетРасх), , , , ) КАК ТиповойОбороты
        |ИТОГИ
        |    СУММА(СуммаРасхода)
        |ПО
        |    Подразделения";

    Запрос2.УстановитьПараметр("ВыбСчетРасх", ПланыСчетов.Типовой.НайтиПоКоду("7010"));
    Запрос2.УстановитьПараметр("ВыбСчетРасх", ПланыСчетов.Типовой.НайтиПоКоду("7010"));
    Запрос2.УстановитьПараметр("КонецПериода", КонецДня(КонецПериода));
    Запрос2.УстановитьПараметр("НачалоПериода", НачалоПериода);
    Запрос2.УстановитьПараметр("Организация", Справочники.Организации.НайтиПоКоду("000000001"));
    Запрос2.УстановитьПараметр("Счет7010", ПланыСчетов.Типовой.НайтиПоКоду("7010"));
    Запрос2.УстановитьПараметр("СчетДох", ПланыСчетов.Типовой.НайтиПоКоду("6010"));
    
    Результат2 = Запрос2.Выполнить();
    ТЗ2=Результат2.Выгрузить();
    
    ТЗ3= Новый ТаблицаЗначений;
    ТЗ3=ТЗ1.Скопировать();
    ТЗ3.Колонки.Добавить("СтатьиРасходов");
    ТЗ3.Колонки.Добавить("СуммаРасхода");
        
        
    Для Каждого Строка ИЗ ТЗ2 Цикл
        Стр = ТЗ3.Добавить();
        Стр.Подразделения= Строка.Подразделения;
        Стр.СтатьиРасходов= Строка.СтатьиРасходов;
        Стр.СуммаРасхода= Строка.СуммаРасхода;
        
        
    КонецЦикла;
    
    Возврат ТЗ3;

http://s019.radikal.ru/i624/1411/bc/c3f8a84e7864.jpg

Получается Сначала выводится ТЗ1,а потом ТЗ2,а нужно одновременно. Подскажите что делать? Может есть способ как это дело объединить?
1 Радужный_пони
 
26.11.14
11:48
2 Господин ПЖ
 
26.11.14
11:48
>Может есть способ как это дело объединить?

можно. причем сразу в запросе
3 Euguln
 
26.11.14
11:48
Один запрос и ОБЪЕДИНИТЬ
4 busy1
 
26.11.14
11:49
5 mehfk
 
26.11.14
11:49
UNION ALL
6 busy1
 
26.11.14
11:49
Собственно говоря, у Вас нет решающего слова ОБЪЕДИНИТЬ ВСЕ
7 Господин ПЖ
 
26.11.14
11:49
ОБЪЕДИНИТЬ ВСЕ

тогда уж
8 Радужный_пони
 
26.11.14
11:50
делал,не получается потом это все выглядит вот так
http://s019.radikal.ru/i621/1411/ac/8f6ff14f568d.jpg
9 Господин ПЖ
 
26.11.14
11:50
>Собственно говоря, у Вас нет решающего слова ОБЪЕДИНИТЬ ВСЕ

человеку нужна походу некая шахматка... "а нужно одновременно"
10 Радужный_пони
 
26.11.14
11:51
Может возможно это объединить не в запросе?
11 Ёпрст
 
26.11.14
11:53
(0) используй полное соединение в тексте запроса.
12 Радужный_пони
 
26.11.14
11:53
Что ни у кого нет идей на этот счет?
13 Ёпрст
 
26.11.14
11:54
заместо юниона
14 busy1
 
26.11.14
11:54
Попробуйте прочитать информацию по ссылкам, это важно. Получите минимальный ликбез, потом используя консоль запросов попробуйте сделать запрос с словом ОБЪЕДИНИТЬ ВСЕ. Так то готового решения Вам тут не предоставят. Но если Вам будет спокойнее объединить это можно и в запросе и с помощью ТЗ. (11) будет не очень красиво.
15 an-korot
 
26.11.14
11:55
1 - сделать 1 запрос через объеденить
2 - после 2 запроса добавить 2 колонки в 1 таблицу и туда добавить новыестроки из 2 запроса, свернуть таблицу по окончании.
16 busy1
 
26.11.14
11:56
(15) +1
17 Радужный_пони
 
26.11.14
11:59
Делал через Объединить и Объединить ВСЕ,опять же криво получается,поэтому пришлось делать два разных запроса,в две разные ТЗ и потом их "смешивать" в третью ТЗ
18 busy1
 
26.11.14
12:02
я пас.
19 Радужный_пони
 
26.11.14
12:03
Ладно,буду искать иные пути решения) Спасибо всем за участие)
20 Господин ПЖ
 
26.11.14
12:03
(17) тебе вредно программировать
21 Радужный_пони
 
26.11.14
12:05
(20) да я пока только учусь))