8.х Подскажите как правильно объединить результаты двух запросов?

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем kittybello, 22 апр 2015.

  1. TopicStarter Overlay
    kittybello
    Offline

    kittybello Опытный в 1С

    Регистрация:
    2 апр 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    Подскажите)

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

    Можно ли это записать как то в одном запросе? пробовала разобраться с ВТ не вышло(
    Последнее редактирование модератором: 22 апр 2015
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Читайте про вложенные запросы.
    И код оформляйте тегами, устал за вами править...
  3. TopicStarter Overlay
    kittybello
    Offline

    kittybello Опытный в 1С

    Регистрация:
    2 апр 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    хорошо
  4. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    В подробности не вдавался. Не знаю какие данные выводятся. Имейте это в виду.
    Код:
    ВЫБРАТЬ
        ВЫБОР
            КОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт1 ССЫЛКА Справочник.Номенклатура
                ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт1
            КОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт2 ССЫЛКА Справочник.Номенклатура
                ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт2
            КОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт3 ССЫЛКА Справочник.Номенклатура
                ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт3
            ИНАЧЕ ХозрасчетныйДвиженияССубконто.СубконтоКт1
        КОНЕЦ КАК Номенклатура
    ПОМЕСТИТЬ ВТ_СписокНоменклатуры
    ИЗ
        РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(&НачалоПериода, &КонецПериода, Организация = &Организация, , ) КАК ХозрасчетныйДвиженияССубконто
    ГДЕ
        ХозрасчетныйДвиженияССубконто.СчетДт = &СчетДт
        И ХозрасчетныйДвиженияССубконто.СчетКт = &СчетКт
    
    СГРУППИРОВАТЬ ПО
        ВЫБОР
            КОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт1 ССЫЛКА Справочник.Номенклатура
                ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт1
            КОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт2 ССЫЛКА Справочник.Номенклатура
                ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт2
            КОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт3 ССЫЛКА Справочник.Номенклатура
                ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт3
            ИНАЧЕ ХозрасчетныйДвиженияССубконто.СубконтоКт1
        КОНЕЦ
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ОстаткиИОбороты.Счет,
        ОстаткиИОбороты.Субконто1 КАК Номенклатура,
        ОстаткиИОбороты.СуммаНачальныйОстатокДт,
        ОстаткиИОбороты.СуммаНачальныйОстатокКт,
        ОстаткиИОбороты.СуммаОборотДт,
        ОстаткиИОбороты.СуммаОборотКт,
        ОстаткиИОбороты.СуммаКонечныйОстатокДт,
        ОстаткиИОбороты.СуммаКонечныйОстатокКт
    ИЗ
        РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
                &НачалоПериода,
                &КонецПериода,
                Авто,
                ,
                Счет = &Счет,
                ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура),
                Организация = &Организация
                    И Субконто1 В
                        (ВЫБРАТЬ
                            ВТ_СписокНоменклатуры.Номенклатура
                        ИЗ
                            ВТ_СписокНоменклатуры КАК ВТ_СписокНоменклатуры)) КАК ОстаткиИОбороты
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    УНИЧТОЖИТЬ ВТ_СписокНоменклатуры
  5. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Или возможно даже так:
    Код:
    ВЫБРАТЬ
        ОстаткиИОбороты.Счет,
        ОстаткиИОбороты.Субконто1.Код КАК Номенклатура,
        ОстаткиИОбороты.СуммаНачальныйОстатокДт,
        ОстаткиИОбороты.СуммаНачальныйОстатокКт,
        ОстаткиИОбороты.СуммаОборотДт,
        ОстаткиИОбороты.СуммаОборотКт,
        ОстаткиИОбороты.СуммаКонечныйОстатокДт,
        ОстаткиИОбороты.СуммаКонечныйОстатокКт
    ИЗ
        РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто, , Счет = &Счет, ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура), Организация = &Организация) КАК ОстаткиИОбороты
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачалоПериода, &КонецПериода, , СчетДт = &СчетДт, , СчетКт = &СчетКт, ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура), Организация = &Организация) КАК ХозрасчетныйОборотыДтКт
            ПО ОстаткиИОбороты.Субконто1 = ХозрасчетныйОборотыДтКт.СубконтоКт1
    
    alexburn и kittybello нравится это.
  6. TopicStarter Overlay
    kittybello
    Offline

    kittybello Опытный в 1С

    Регистрация:
    2 апр 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    Спасибо, за ответы , оба запроса работают).
    Отдельное спасибо shurikvz , запрос выполняется очень быстро:)
    --- Объединение сообщений, 22 апр 2015 ---
    :(Только что заметила, суммы удвоились(
    Последнее редактирование: 22 апр 2015
  7. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    В каком из вариантов?
    Отдельно выведите ОстаткиИОбороты без соединения? Там есть задвоение?
  8. TopicStarter Overlay
    kittybello
    Offline

    kittybello Опытный в 1С

    Регистрация:
    2 апр 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    в обоих, если отдельно, то суммы правильные
  9. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    как так?
    А так:
    Код:
    ВЫБРАТЬ
        ОстаткиИОбороты.Счет,
        ОстаткиИОбороты.Субконто1.Код КАК Номенклатура,
        ОстаткиИОбороты.СуммаНачальныйОстатокДт,
        ОстаткиИОбороты.СуммаНачальныйОстатокКт,
        ОстаткиИОбороты.СуммаОборотДт,
        ОстаткиИОбороты.СуммаОборотКт,
        ОстаткиИОбороты.СуммаКонечныйОстатокДт,
        ОстаткиИОбороты.СуммаКонечныйОстатокКт
    ИЗ
        РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто, , Счет = &Счет, ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура), Организация = &Организация) КАК ОстаткиИОбороты
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
                ХозрасчетныйОборотыДтКт.СубконтоКт1 КАК СубконтоКт1
            ИЗ
                РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачалоПериода, &КонецПериода, , СчетДт = &СчетДт, , СчетКт = &СчетКт, ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура), Организация = &Организация) КАК ХозрасчетныйОборотыДтКт) КАК ХозрасчетныйОборотыДтКт
            ПО ОстаткиИОбороты.Субконто1 = ХозрасчетныйОборотыДтКт.СубконтоКт1
    
    ?
  10. TopicStarter Overlay
    kittybello
    Offline

    kittybello Опытный в 1С

    Регистрация:
    2 апр 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    :(минутку..
    оказывается, бухгалтера вычитают из каждой суммы по номенклатуре еще и движение м/у Кт=Дт=Счет....
    как же только это учесть то? (
    Последнее редактирование: 22 апр 2015
  11. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    о_О. По мне так запросы одинаковые.
    Ок. Какие счета там у вас, значения дайте.
  12. TopicStarter Overlay
    kittybello
    Offline

    kittybello Опытный в 1С

    Регистрация:
    2 апр 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    [​IMG]
    Счет=СчетКт= 1521, Счет Дт=104 ,
    по ОСВ 5119,88, а для бухгалтера правильно 2559,94 =Об Дт=ОБ Кт

    Не везде есть такие движения, "внутренние"
  13. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Ой, это украинские счета.
    1521 - это что? "Товары на складах" или "Основные средства"?
    104 - это вероятно "Основные средства в организации"
    631 - это вероятно "Расчеты с поставщиками".

    А что надо увидеть в отчете?
  14. TopicStarter Overlay
    kittybello
    Offline

    kittybello Опытный в 1С

    Регистрация:
    2 апр 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    1521 Приобретение ОС. 104 Машины и оборудование, 631 Расчеты с отечественными поставщиками, на месте 631 могут быть и другие счета....
    Суть в том, что ОСВ по счету 1521 показывает всю номенклатуру по счетам 104. 105, 106, ....109 (все они ОС), неоходимо отобрать только ту номенклатуру ( остатки и обороты) , которые относятся к 104 счету ( или к 105, или 106....)
  15. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Эм. Ну постановку задачи то приблизительно понял (хотя фраза
    несколько не понятна).

    Просто пока не совсем понял, а как ваш запрос в текущем виде в этом поможет?
    Ну отобрали вы номенклатуру в первой части запроса (По Дт 104 - Кт 1521). Ок, у вас есть список номенклатуры.
    И потом второй частью запроса вы получаете просто обороты по этому списку номенклатуры. А какой смысл был отбирать эту номенклатуру в принципе?
  16. TopicStarter Overlay
    kittybello
    Offline

    kittybello Опытный в 1С

    Регистрация:
    2 апр 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    -Bag-это нужно для заполнения отчета ПСИ, сейчас бухгалтер делает это вручную, это занимает много времени
  17. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Подождите, еще раз: вам просто нужно убрать внутренние обороты по счету и оставить все остальное или нет? (я имею ввиду проводку Дт 1521 - Кт 1521 на скрине)?
  18. TopicStarter Overlay
    kittybello
    Offline

    kittybello Опытный в 1С

    Регистрация:
    2 апр 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
  19. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Ну смотрите, обороты по счету без внутренних покажет такой запрос:
    Код:
    ВЫБРАТЬ
        ХозрасчетныйОбороты.Счет КАК Счет,
        ХозрасчетныйОбороты.Субконто1.Код КАК Номенклатура,
        ХозрасчетныйОбороты.СуммаОборотДт КАК СуммаОборотДт,
        ХозрасчетныйОбороты.СуммаОборотКт КАК СуммаОборотКт
    ИЗ
        РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Авто, Счет = &Счет, ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура), Организация = &Организация, КорСчет <> &Счет, ) КАК ХозрасчетныйОбороты
    
    (сч = 1521)
    --- Объединение сообщений, 22 апр 2015 ---
    Если с остатками то наверно как-то так:
    Код:
    ВЫБРАТЬ
        ХозрасчетныйОбороты.Счет КАК Счет,
        ХозрасчетныйОбороты.Субконто1.Код КАК Номенклатура,
        ХозрасчетныйОбороты.СуммаОборотДт КАК СуммаОборотДт,
        ХозрасчетныйОбороты.СуммаОборотКт КАК СуммаОборотКт,
        ХозрасчетныйОстатки.СуммаОстатокДт,
        ХозрасчетныйОстатки.СуммаОстатокКт
    ИЗ
        РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Авто, Счет = &Счет, ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура), Организация = &Организация, КорСчет <> &Счет, ) КАК ХозрасчетныйОбороты
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(&КонецПериода, Счет = &Счет, ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура), Организация = &Организация) КАК ХозрасчетныйОстатки
            ПО ХозрасчетныйОбороты.Счет = ХозрасчетныйОстатки.Счет
                И ХозрасчетныйОбороты.Организация = ХозрасчетныйОстатки.Организация
                И ХозрасчетныйОбороты.Субконто1 = ХозрасчетныйОстатки.Субконто1
    
  20. TopicStarter Overlay
    kittybello
    Offline

    kittybello Опытный в 1С

    Регистрация:
    2 апр 2015
    Сообщения:
    80
    Симпатии:
    0
    Баллы:
    26
    запрос , конечно, верный (Вы-мой кумир), однако цель так и не достигнута, я увидела что есть какое-то "неуловимое условие", при котором в одном случае эти обороты не учитываются, а в другом, почему-то, очень даже учитываются. Завтра , планирую выяснить у бухгалтера, есть ли этому внятное объяснение. И если у Вас будет время , я Вас побеспокою:rolleyes:

Поделиться этой страницей