Имя: Пароль:
1C
1С v8
Объединить таблицы значений.
0 lg2marvel
 
11.10.18
16:20
Еще раз всем привет.
Есть 2 таблицы значений: тз1 и тз2. В обоих есть колонка Регистратор

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


тз2 получаю запросом:
        ЗапросВозвраты = Новый Запрос(
        "ВЫБРАТЬ
        |    ВозвратТоваровПоставщику.Ссылка КАК Регистратор,
        |    ВозвратТоваровПоставщику.Склад КАК Склад,
        |    ВозвратТоваровПоставщикуТовары.Сумма КАК СуммаСНДС,
        |    ВозвратТоваровПоставщикуТовары.СуммаНДС КАК СуммаНДС,
        |    ЕСТЬNULL(СУММА(ВозвратТоваровПоставщикуТовары.Сумма), 0) - ЕСТЬNULL(СУММА(ВозвратТоваровПоставщикуТовары.СуммаНДС), 0) КАК СуммаБезНДС
        |ИЗ
        |    Документ.ВозвратТоваровПоставщику КАК ВозвратТоваровПоставщику
        |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВозвратТоваровПоставщику.Товары КАК ВозвратТоваровПоставщикуТовары
        |        ПО (ВозвратТоваровПоставщикуТовары.Ссылка = ВозвратТоваровПоставщику.Ссылка)
        |ГДЕ
        |    ВозвратТоваровПоставщику.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ) И КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ)
        |    И ВозвратТоваровПоставщику.Проведен = ИСТИНА
        |    И ВозвратТоваровПоставщику.Фирма = &Фирма
        |    И ВозвратТоваровПоставщику.Склад = &Склад
        |
        |СГРУППИРОВАТЬ ПО
        |    ВозвратТоваровПоставщику.Ссылка,
        |    ВозвратТоваровПоставщику.Склад,
        |    ВозвратТоваровПоставщикуТовары.Сумма,
        |    ВозвратТоваровПоставщикуТовары.СуммаНДС");

Из 2-х запросов надо оба результата соединить в одну таблицу значений:

ОписаниеСуммы = Новый ОписаниеТипов ("Число", Новый КвалификаторыЧисла(10, 2));
            Массив = Новый Массив;
            Массив.Добавить(Тип("ДокументСсылка.РасходнаяНакладная"));
            Массив.Добавить(Тип("ДокументСсылка.ВозвратТоваровПоставщику"));
            тз.Колонки.Добавить("Регистратор",Новый ОписаниеТипов(Массив));
            тз.Колонки.Добавить("СуммаСНДС",ОписаниеСуммы);
            тз.Колонки.Добавить("СуммаНДС",ОписаниеСуммы);
            тз.Колонки.Добавить("СуммаБезНДС",ОписаниеСуммы);
            тз = тз1.Скопировать(Отбор);
            Для Каждого стрТЗ из тз2 Цикл        //Надеюсь работает
                НоваСтрока = тз.Добавить();
                ЗаполнитьЗначенияСвойств(НоваСтрока,стрТЗ);                
            КонецЦикла;    
            ОткрытьЗначение(тз1); ОткрытьЗначение(тз2);ОткрытьЗначение(тз);

Но при выводе тз поле Регистратор заполняется только элементами из тз1, а вместо тз2 пусто, хотя с цифрами все ок
1 Buster007
 
11.10.18
16:21
объединить все
2 Cool_Profi
 
11.10.18
16:22
в отладчике что говорит?
Почмеу это в запросе не сделать?
3 Дмитрий
 
11.10.18
16:24
не группируешь по регистратору
4 lg2marvel
 
11.10.18
16:29
(3) ну я же не могу написать так:

        "ВЫБРАТЬ
        |    ВозвратТоваровПоставщику.Ссылка КАК Регистратор,
        |    ВозвратТоваровПоставщику.Склад КАК Склад,
        |    ВозвратТоваровПоставщикуТовары.Сумма КАК СуммаСНДС,
        |    ВозвратТоваровПоставщикуТовары.СуммаНДС КАК СуммаНДС,
        |    ЕСТЬNULL(СУММА(ВозвратТоваровПоставщикуТовары.Сумма), 0) - ЕСТЬNULL(СУММА(ВозвратТоваровПоставщикуТовары.СуммаНДС), 0) КАК СуммаБезНДС
        |ИЗ
        |    Документ.ВозвратТоваровПоставщику КАК ВозвратТоваровПоставщику
        |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВозвратТоваровПоставщику.Товары КАК ВозвратТоваровПоставщикуТовары
        |        ПО (ВозвратТоваровПоставщикуТовары.Ссылка = ВозвратТоваровПоставщику.Ссылка)
        |ГДЕ
        |    ВозвратТоваровПоставщику.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ) И КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ)
        |    И ВозвратТоваровПоставщику.Проведен = ИСТИНА
        |    И ВозвратТоваровПоставщику.Фирма = &Фирма
        |    И ВозвратТоваровПоставщику.Склад = &Склад
        |
        |СГРУППИРОВАТЬ ПО
        |    Регистратор,
        |    ВозвратТоваровПоставщику.Склад,
        |    ВозвратТоваровПоставщикуТовары.Сумма,
        |    ВозвратТоваровПоставщикуТовары.СуммаНДС");

(2) Видимо придется, что-то казалось что циклом проще
5 Cool_Profi
 
11.10.18
16:32
(4) Кто тебе мешает твои оба запроса объеднить через ОБЪЕДИНИТЬ ВСЕ?
6 lg2marvel
 
11.10.18
16:33
(5) Они в разных функциях, если делать через ОБЪЕДИНИТЬ ВСЕ  то надо писать отдальный запрос то будет не красиво
7 evorle145
 
11.10.18
16:38
(4) почему так не можешь написать?

Кстати, группировка у тебя странная, ты суммируешь по СуммаБезНДС, но при этом по полям СуммаНДС и суммаСНДС группируешь, хотя по логике надо суммировать.
8 Cool_Profi
 
11.10.18
16:39
(6) Некарсиво на потолке спать - одеяло свалится и трусы видно будет.
А запросы пихай в МВТ и наслжадайся
9 lg2marvel
 
11.10.18
16:41
(7) Ругается, Регистратор не обнаружено.

Да с суммами там действительно странная группировка - результат издевательств над запросом
10 lg2marvel
 
11.10.18
16:42
Как правильно запрос к тз сделать?

            Запрос = Новый Запрос(
            "ВЫБРАТЬ
            |    Регистратор,
            |    ВидОперации,
            |    СуммаСНДС,
            |   СуммаНДС,
            |   СуммаБезНДС
            |ИЗ
            |    тз1
            |ОБЪЕДИНИТЬ ВСЕ
            |ВЫБРАТЬ    
            |    Регистратор,
            |    ВидОперации,
            |    СуммаСНДС,
            |   СуммаНДС,
            |   СуммаБезНДС
            |ИЗ
            |    тз2");
так судя по всему нельзя? (ну да ругается тз1 не найдена)
11 Cool_Profi
 
11.10.18
16:45
Запрос = Новый Запрос;
текст1 =
        "ВЫБРАТЬ
        |    ПродажиОбороты.Регистратор КАК Регистратор,
        |    ПродажиОбороты.ВидОперации КАК ВидОперации,
        |    ПродажиОбороты.Склад КАК Склад,
        |    ПродажиОбороты.СуммаОборот КАК СуммаСНДС,
        |    ПродажиОбороты.СуммаНДСОборот КАК СуммаНДС,
        |    ПродажиОбороты.СуммаОборот - ПродажиОбороты.СуммаНДСОборот КАК СуммаБезНДС
|поместить вт1
        |ИЗ
        |    РегистрНакопления.Продажи.Обороты(
        |            НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ),
        |            КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ),
        |            Регистратор,
        |            Склад.Ссылка = &Склад
        |                И Фирма.Ссылка = &Фирма) КАК ПродажиОбороты
        |
        |СГРУППИРОВАТЬ ПО
        |    ПродажиОбороты.ВидОперации,
        |    ПродажиОбороты.СуммаОборот,
        |    ПродажиОбороты.СуммаНДСОборот,
        |    ПродажиОбороты.Склад,
        |    ПродажиОбороты.Регистратор");
запрос.Текст = текст1;
Запрос.менеджерВнутреннихТаблиц = Новый МенеджерВнутреннихТаблиц;

Запрос.Установитьпараметры....

Запрос.Выполнить();

Запрос.Текст = "тут второй запрос с помещением в вт2");
Запрос.Выполнить();

И дальше объединять.
12 lg2marvel
 
11.10.18
16:54
(11) Спасибо, попробую
13 lg2marvel
 
11.10.18
17:26
Спасибо, что-то не сросрось с МВТ,
сделал так:

            Запрос = Новый Запрос;
            текст1 =
            "ВЫБРАТЬ
            |    ПродажиОбороты.Регистратор КАК Регистратор,
            |    ПродажиОбороты.ВидОперации КАК ВидОперации,
            |    ПродажиОбороты.Склад КАК Склад,
            |    ПродажиОбороты.СуммаОборот КАК СуммаСНДС,
            |    ПродажиОбороты.СуммаНДСОборот КАК СуммаНДС,
            |    ПродажиОбороты.СуммаОборот - ПродажиОбороты.СуммаНДСОборот КАК СуммаБезНДС
            |ИЗ
            |    РегистрНакопления.Продажи.Обороты(
            |            НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ),
            |            КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ),
            |            Регистратор,
            |            Склад.Ссылка = &Склад
            |                И Фирма.Ссылка = &Фирма) КАК ПродажиОбороты
            |
            |СГРУППИРОВАТЬ ПО
            |    ПродажиОбороты.ВидОперации,
            |    ПродажиОбороты.СуммаОборот,
            |    ПродажиОбороты.СуммаНДСОборот,
            |    ПродажиОбороты.Склад,
            |    ПродажиОбороты.Регистратор
            |
            |ОБЪЕДИНИТЬ ВСЕ
            |
            |ВЫБРАТЬ
            |    ВозвратТоваровПоставщику.Ссылка,
            |    NULL,
            |    ВозвратТоваровПоставщику.Склад,
            |    СУММА(ВозвратТоваровПоставщикуТовары.Сумма),
            |    СУММА(ВозвратТоваровПоставщикуТовары.СуммаНДС),
            |    ЕСТЬNULL(СУММА(ВозвратТоваровПоставщикуТовары.Сумма), 0) - ЕСТЬNULL(СУММА(ВозвратТоваровПоставщикуТовары.СуммаНДС), 0)
            |ИЗ
            |    Документ.ВозвратТоваровПоставщику КАК ВозвратТоваровПоставщику
            |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВозвратТоваровПоставщику.Товары КАК ВозвратТоваровПоставщикуТовары
            |        ПО (ВозвратТоваровПоставщикуТовары.Ссылка = ВозвратТоваровПоставщику.Ссылка)
            |ГДЕ
            |    ВозвратТоваровПоставщику.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ) И КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ)
            |    И ВозвратТоваровПоставщику.Проведен = ИСТИНА
            |    И ВозвратТоваровПоставщику.Фирма = &Фирма
            |    И ВозвратТоваровПоставщику.Склад = &Склад
            |
            |СГРУППИРОВАТЬ ПО
            |    ВозвратТоваровПоставщику.Ссылка,
            |    ВозвратТоваровПоставщику.Склад";
    //        Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
            Запрос.Текст = текст1;
            Запрос.УстановитьПараметр("Фирма", Фирма);
            Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
            Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
            Запрос.УстановитьПараметр("Склад", Расшифровка.Склад);            
            тз = Запрос.Выполнить().Выгрузить();
Независимо от того, куда вы едете — это в гору и против ветра!