8.х Соединение таблиц в запросе

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем julia_nik, 10 фев 2016.

  1. TopicStarter Overlay
    julia_nik
    Offline

    julia_nik

    Регистрация:
    29 окт 2013
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    Всем добрый день!

    Помогите пожалуйста. Есть новый созданный регистр накопления по которому делаются движения из нескольких документов - накладная на отпуск, ПКО, платежка, возврат. Есть такое понятие для отчета как дата отгрузки по этой дате я так же получаю курсы валют. Так вот когда делаешь в виртуальное таблице запись по регистратору - тогда выходят не верные остатки на начало . А когда делаешь запись в РН по дате отгрузке - таблица разъезжается потому что в ПКО, платежке и возврате нет даты отгрузки она пустая. Дорогие профессионалы подскажите как быть.....
    --- Объединение сообщений, 10 фев 2016 ---
    Код:
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
        РасчетыЕвроОстаткиИОбороты.СуммаТенгеПриход,
        РасчетыЕвроОстаткиИОбороты.Контрагент,
        РасчетыЕвроОстаткиИОбороты.Договор,
        РасчетыЕвроОстаткиИОбороты.СуммаЕвроПриход,
        РасчетыЕвроОстаткиИОбороты.СуммаТенгеНачальныйОстаток,
        РасчетыЕвроОстаткиИОбороты.СуммаЕвроНачальныйОстаток,
        РасчетыЕвроОстаткиИОбороты.СуммаТенгеРасход,
        РасчетыЕвроОстаткиИОбороты.СуммаЕвроРасход,
        РасчетыЕвроОстаткиИОбороты.СуммаТенгеКонечныйОстаток,
        РасчетыЕвроОстаткиИОбороты.СуммаЕвроКонечныйОстаток,
        НАЧАЛОПЕРИОДА(РасчетыЕвроОстаткиИОбороты.ДатаОтгрузки, ДЕНЬ) КАК ДатаОтгрузки,
        ВЫБОР
            КОГДА РасчетыЕвроОстаткиИОбороты.СуммаТенгеКонечныйОстаток = 0
                ТОГДА РасчетыЕвроОстаткиИОбороты.СуммаЕвроПриход - (РасчетыЕвроОстаткиИОбороты.СуммаЕвроНачальныйОстаток + РасчетыЕвроОстаткиИОбороты.СуммаЕвроРасход)
            ИНАЧЕ 0
        КОНЕЦ КАК КурсоваяРазница
    ПОМЕСТИТЬ ВТ_ПТиУ
    ИЗ
        РегистрНакопления.РасчетыЕвро.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , ) КАК РасчетыЕвроОстаткиИОбороты
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        МАКСИМУМ(КурсыВалют.Период) КАК Период,
        КурсыВалют.Валюта,
        ВТ_ПТиУ.СуммаТенгеПриход,
        ВТ_ПТиУ.Контрагент,
        ВТ_ПТиУ.Договор,
        ВТ_ПТиУ.СуммаЕвроПриход,
        ВТ_ПТиУ.СуммаТенгеНачальныйОстаток,
        ВТ_ПТиУ.СуммаЕвроНачальныйОстаток,
        ВТ_ПТиУ.СуммаТенгеРасход,
        ВТ_ПТиУ.СуммаЕвроРасход,
        ВТ_ПТиУ.СуммаТенгеКонечныйОстаток,
        ВТ_ПТиУ.СуммаЕвроКонечныйОстаток,
        ВТ_ПТиУ.ДатаОтгрузки,
        ВТ_ПТиУ.КурсоваяРазница
    ПОМЕСТИТЬ ВТ_ЗаписиРегистра
    ИЗ
        ВТ_ПТиУ КАК ВТ_ПТиУ
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
            ПО (КурсыВалют.Валюта = &Валюта)
                И ВТ_ПТиУ.ДатаОтгрузки >= КурсыВалют.Период
    
    СГРУППИРОВАТЬ ПО
        КурсыВалют.Валюта,
        ВТ_ПТиУ.СуммаТенгеПриход,
        ВТ_ПТиУ.Контрагент,
        ВТ_ПТиУ.Договор,
        ВТ_ПТиУ.СуммаЕвроПриход,
        ВТ_ПТиУ.СуммаТенгеНачальныйОстаток,
        ВТ_ПТиУ.СуммаЕвроНачальныйОстаток,
        ВТ_ПТиУ.СуммаТенгеРасход,
        ВТ_ПТиУ.СуммаЕвроРасход,
        ВТ_ПТиУ.СуммаТенгеКонечныйОстаток,
        ВТ_ПТиУ.СуммаЕвроКонечныйОстаток,
        ВТ_ПТиУ.ДатаОтгрузки,
        ВТ_ПТиУ.КурсоваяРазница
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ВТ_ЗаписиРегистра.Контрагент КАК Контрагент,
        ВТ_ЗаписиРегистра.Договор,
        КурсыВалют.Курс КАК КурсОтгрузки,
        СУММА(ВТ_ЗаписиРегистра.СуммаТенгеНачальныйОстаток) КАК ЗадПокупНаНачалоТенге,
        СУММА(ВТ_ЗаписиРегистра.СуммаЕвроНачальныйОстаток) КАК ЗадПокупНаНачалоEUR,
        СУММА(ВТ_ЗаписиРегистра.СуммаЕвроПриход) КАК СуммаОтгрузкиEUR,
        СУММА(ВТ_ЗаписиРегистра.СуммаТенгеПриход) КАК СуммаОтгрузкиТенге,
        СУММА(ВТ_ЗаписиРегистра.СуммаТенгеРасход) КАК ОплаченоТенге,
        СУММА(ВТ_ЗаписиРегистра.СуммаЕвроРасход) КАК ОплаченоЕвро,
        СУММА(ВТ_ЗаписиРегистра.СуммаТенгеКонечныйОстаток) КАК ЗадПокупНаКонецТенге,
        СУММА(ВТ_ЗаписиРегистра.СуммаЕвроКонечныйОстаток) КАК ЗадПокупНаКонецEUR,
        ВТ_ЗаписиРегистра.КурсоваяРазница,
        ВТ_ЗаписиРегистра.ДатаОтгрузки
    ИЗ
        ВТ_ЗаписиРегистра КАК ВТ_ЗаписиРегистра
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
            ПО ВТ_ЗаписиРегистра.Валюта = КурсыВалют.Валюта
                И ВТ_ЗаписиРегистра.ДатаОтгрузки = КурсыВалют.Период
    
    СГРУППИРОВАТЬ ПО
        ВТ_ЗаписиРегистра.Договор,
        ВТ_ЗаписиРегистра.Контрагент,
        КурсыВалют.Курс,
        ВТ_ЗаписиРегистра.КурсоваяРазница,
        ВТ_ЗаписиРегистра.ДатаОтгрузки
    
    УПОРЯДОЧИТЬ ПО
        Контрагент
    --- Объединение сообщений, 10 фев 2016 ---
    Вот мой код, не судите строго :) Всем заранее спасибо!
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Получать остатки еще одним соединением таблиц.
  3. TopicStarter Overlay
    julia_nik
    Offline

    julia_nik

    Регистрация:
    29 окт 2013
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    А можно подробнее, я побывала через объединение не выходит все равно :(
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Текст запроса, как пробовали, покажите.
  5. TopicStarter Overlay
    julia_nik
    Offline

    julia_nik

    Регистрация:
    29 окт 2013
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    Код:
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
        РасчетыЕвроОстаткиИОбороты.СуммаТенгеПриход,
        РасчетыЕвроОстаткиИОбороты.Контрагент,
        РасчетыЕвроОстаткиИОбороты.Договор,
        РасчетыЕвроОстаткиИОбороты.СуммаЕвроПриход,
        РасчетыЕвроОстаткиИОбороты.СуммаТенгеНачальныйОстаток,
        РасчетыЕвроОстаткиИОбороты.СуммаЕвроНачальныйОстаток,
        РасчетыЕвроОстаткиИОбороты.СуммаТенгеРасход,
        РасчетыЕвроОстаткиИОбороты.СуммаЕвроРасход,
        РасчетыЕвроОстаткиИОбороты.СуммаТенгеКонечныйОстаток,
        РасчетыЕвроОстаткиИОбороты.СуммаЕвроКонечныйОстаток,
        НАЧАЛОПЕРИОДА(РасчетыЕвроОстаткиИОбороты.ДатаОтгрузки, ДЕНЬ) КАК ДатаОтгрузки,
        ВЫБОР
            КОГДА РасчетыЕвроОстаткиИОбороты.СуммаТенгеКонечныйОстаток = 0
                ТОГДА РасчетыЕвроОстаткиИОбороты.СуммаЕвроПриход - (РасчетыЕвроОстаткиИОбороты.СуммаЕвроНачальныйОстаток + РасчетыЕвроОстаткиИОбороты.СуммаЕвроРасход)
            ИНАЧЕ 0
        КОНЕЦ КАК КурсоваяРазница
    ПОМЕСТИТЬ ВТ_ПТиУ
    ИЗ
        РегистрНакопления.РасчетыЕвро.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , ) КАК РасчетыЕвроОстаткиИОбороты
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        РасчетыЕвроОстаткиИОбороты.СуммаТенгеПриход,
        РасчетыЕвроОстаткиИОбороты.Контрагент,
        РасчетыЕвроОстаткиИОбороты.Договор,
        РасчетыЕвроОстаткиИОбороты.СуммаЕвроПриход,
        РасчетыЕвроОстаткиИОбороты.СуммаТенгеНачальныйОстаток,
        РасчетыЕвроОстаткиИОбороты.СуммаЕвроНачальныйОстаток,
        РасчетыЕвроОстаткиИОбороты.СуммаТенгеРасход,
        РасчетыЕвроОстаткиИОбороты.СуммаЕвроРасход,
        РасчетыЕвроОстаткиИОбороты.СуммаТенгеКонечныйОстаток,
        РасчетыЕвроОстаткиИОбороты.СуммаЕвроКонечныйОстаток,
        0,
        0
    ИЗ
        РегистрНакопления.РасчетыЕвро.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , ) КАК РасчетыЕвроОстаткиИОбороты
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        МАКСИМУМ(КурсыВалют.Период) КАК Период,
        КурсыВалют.Валюта,
        ВТ_ПТиУ.СуммаТенгеПриход,
        ВТ_ПТиУ.Контрагент,
        ВТ_ПТиУ.Договор,
        ВТ_ПТиУ.СуммаЕвроПриход,
        ВТ_ПТиУ.СуммаТенгеНачальныйОстаток,
        ВТ_ПТиУ.СуммаЕвроНачальныйОстаток,
        ВТ_ПТиУ.СуммаТенгеРасход,
        ВТ_ПТиУ.СуммаЕвроРасход,
        ВТ_ПТиУ.СуммаТенгеКонечныйОстаток,
        ВТ_ПТиУ.СуммаЕвроКонечныйОстаток,
        ВТ_ПТиУ.ДатаОтгрузки,
        ВТ_ПТиУ.КурсоваяРазница
    ПОМЕСТИТЬ ВТ_ЗаписиРегистра
    ИЗ
        ВТ_ПТиУ КАК ВТ_ПТиУ
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
            ПО (КурсыВалют.Валюта = &Валюта)
                И ВТ_ПТиУ.ДатаОтгрузки >= КурсыВалют.Период
    
    СГРУППИРОВАТЬ ПО
        КурсыВалют.Валюта,
        ВТ_ПТиУ.СуммаТенгеПриход,
        ВТ_ПТиУ.Контрагент,
        ВТ_ПТиУ.Договор,
        ВТ_ПТиУ.СуммаЕвроПриход,
        ВТ_ПТиУ.СуммаТенгеНачальныйОстаток,
        ВТ_ПТиУ.СуммаЕвроНачальныйОстаток,
        ВТ_ПТиУ.СуммаТенгеРасход,
        ВТ_ПТиУ.СуммаЕвроРасход,
        ВТ_ПТиУ.СуммаТенгеКонечныйОстаток,
        ВТ_ПТиУ.СуммаЕвроКонечныйОстаток,
        ВТ_ПТиУ.ДатаОтгрузки,
        ВТ_ПТиУ.КурсоваяРазница
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ВТ_ЗаписиРегистра.Контрагент КАК Контрагент,
        ВТ_ЗаписиРегистра.Договор,
        КурсыВалют.Курс КАК КурсОтгрузки,
        СУММА(ВТ_ЗаписиРегистра.СуммаТенгеНачальныйОстаток) КАК ЗадПокупНаНачалоТенге,
        СУММА(ВТ_ЗаписиРегистра.СуммаЕвроНачальныйОстаток) КАК ЗадПокупНаНачалоEUR,
        СУММА(ВТ_ЗаписиРегистра.СуммаЕвроПриход) КАК СуммаОтгрузкиEUR,
        СУММА(ВТ_ЗаписиРегистра.СуммаТенгеПриход) КАК СуммаОтгрузкиТенге,
        СУММА(ВТ_ЗаписиРегистра.СуммаТенгеРасход) КАК ОплаченоТенге,
        СУММА(ВТ_ЗаписиРегистра.СуммаЕвроРасход) КАК ОплаченоЕвро,
        СУММА(ВТ_ЗаписиРегистра.СуммаТенгеКонечныйОстаток) КАК ЗадПокупНаКонецТенге,
        СУММА(ВТ_ЗаписиРегистра.СуммаЕвроКонечныйОстаток) КАК ЗадПокупНаКонецEUR,
        ВТ_ЗаписиРегистра.КурсоваяРазница,
        ВТ_ЗаписиРегистра.ДатаОтгрузки
    ИЗ
        ВТ_ЗаписиРегистра КАК ВТ_ЗаписиРегистра
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
            ПО ВТ_ЗаписиРегистра.Валюта = КурсыВалют.Валюта
                И ВТ_ЗаписиРегистра.ДатаОтгрузки = КурсыВалют.Период
    
    СГРУППИРОВАТЬ ПО
        ВТ_ЗаписиРегистра.Договор,
        ВТ_ЗаписиРегистра.Контрагент,
        КурсыВалют.Курс,
        ВТ_ЗаписиРегистра.КурсоваяРазница,
        ВТ_ЗаписиРегистра.ДатаОтгрузки
    
    УПОРЯДОЧИТЬ ПО
        Контрагент
    --- Объединение сообщений, 10 фев 2016 ---
    Еще хуже так выходит.
  6. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Вам остаток нужен на каждый день вашего периода? или как?
  7. TopicStarter Overlay
    julia_nik
    Offline

    julia_nik

    Регистрация:
    29 окт 2013
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    Остаток вообще нужен как период задает клиент.
  8. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Ну допустим я клиент у меня есть номенклатура
    я задаю период с 1 по 3 февраля. отгружалась номенклатура 1, 2, 3го
    остатки тут на какие дни надо 1, 2, 3 или только 1 и 3
  9. TopicStarter Overlay
    julia_nik
    Offline

    julia_nik

    Регистрация:
    29 окт 2013
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1
    Нач на 1 Кон на 3
  10. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Ну тогда Вам надо получить Обороты, сгрупировать их по датам отгрузки потом на эти даты откгрузки получить курсы
    Вы получаете в итоге таблицу с вашими номенклатурами и курсами на даты. а затем берете просто Остатки номенклатуры и таблицу где у Вас номенклатура соединяите левым соединением с остатками

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