8.х Вопрос по пакетному запросу в СКД

Тема в разделе "Система компоновки данных (СКД)", создана пользователем golovina, 30 янв 2018.

  1. TopicStarter Overlay
    golovina
    Offline

    golovina Опытный в 1С

    Регистрация:
    13 авг 2015
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    Добрый день, коллеги!
    Платформа 8.3.10.2561, конфигурация Управление торговлей 11.1.10.103
    Подскажите пожалуйста не могу сообразить с запросом. Пишу следующий запрос в СКД:
    Код:
    ВЫБРАТЬ
        ТоварыНаСкладахОстатки.Номенклатура,
        ТоварыНаСкладахОстатки.ВНаличииОстаток
    ПОМЕСТИТЬ Остаток
    ИЗ
        РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ТоварыНаСкладахОбороты.ВНаличииПриход КАК ВНаличииПриход,
        ТоварыНаСкладахОбороты.ВНаличииРасход КАК ВНаличииРасход,
        ТоварыНаСкладахОбороты.Номенклатура
    ПОМЕСТИТЬ Обороты
    ИЗ
        РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода, &КонецПериода, , ) КАК ТоварыНаСкладахОбороты
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        Остаток.Номенклатура КАК Номенклатура,
        Остаток.ВНаличииОстаток КАК Остаток,
        ЕСТЬNULL(Обороты.ВНаличииПриход, 0) КАК Приход,
        ЕСТЬNULL(Обороты.ВНаличииРасход, 0) КАК Расход,
        ПоступлениеТоваровУслугТовары.Цена КАК Цена,
        ПоступлениеТоваровУслугТовары.Ссылка.Номер КАК Номер,
        ПоступлениеТоваровУслугТовары.Ссылка.Дата КАК Дата
    ИЗ
        Остаток КАК Остаток
            ЛЕВОЕ СОЕДИНЕНИЕ Обороты КАК Обороты
            ПО Остаток.Номенклатура = Обороты.Номенклатура
            ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
            ПО Остаток.Номенклатура = ПоступлениеТоваровУслугТовары.Номенклатура
    По текущему коды получаю номер, дату и цену по первому поступлению, а мне надо по последнему. Подскажите как переделать запрос. Заранее спасибо.
  2. TopicStarter Overlay
    golovina
    Offline

    golovina Опытный в 1С

    Регистрация:
    13 авг 2015
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    Вкратце вопрос в том как упорядочить таблицу ПоступлениеТоваровУслугТовары, которую я прикручиваю через левое соединение.
  3. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    8.880
    Симпатии:
    923
    Баллы:
    204
    Для начала вам нужно получить последние поступления по каждой номенклатуре.
    Для этого нужно узнать максимальный момент времени поступления номенклатуры, затем опять выполнить соединение с документами по полученному результату.

    В общем, запрос будет несколько длиннее...раза так в 3-4.
  4. TopicStarter Overlay
    golovina
    Offline

    golovina Опытный в 1С

    Регистрация:
    13 авг 2015
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    Максимальную дату поступления нахожу. В результате запрос выглядит так:

    Код:
    ВЫБРАТЬ
        ТоварыНаСкладахОстатки.Номенклатура,
        ТоварыНаСкладахОстатки.ВНаличииОстаток
    ПОМЕСТИТЬ Остаток
    ИЗ
        РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ТоварыНаСкладахОбороты.ВНаличииПриход КАК ВНаличииПриход,
        ТоварыНаСкладахОбороты.ВНаличииРасход КАК ВНаличииРасход,
        ТоварыНаСкладахОбороты.Номенклатура
    ПОМЕСТИТЬ Обороты
    ИЗ
        РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода, &КонецПериода, , ) КАК ТоварыНаСкладахОбороты
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        Остаток.Номенклатура КАК Номенклатура,
        Остаток.ВНаличииОстаток КАК Остаток,
        ЕСТЬNULL(Обороты.ВНаличииПриход, 0) КАК Приход,
        ЕСТЬNULL(Обороты.ВНаличииРасход, 0) КАК Расход,
        ВложенныйЗапрос.МаксимальнаяДатаПоступления КАК ДатаПоследнегоПоступления
    ИЗ
        Остаток КАК Остаток
            ЛЕВОЕ СОЕДИНЕНИЕ Обороты КАК Обороты  щ
            ПО Остаток.Номенклатура = Обороты.Номенклатура
          
            ЛЕВОЕ СОЕДИНЕНИЕ
                (ВЫБРАТЬ
                    ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
                    МАКСИМУМ(ПоступлениеТоваровУслугТовары.Ссылка.Дата) КАК МаксимальнаяДатаПоступления
                  ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
                  СГРУППИРОВАТЬ ПО Номенклатура   
                      ) КАК ВложенныйЗапрос
              ПО  Остаток.Номенклатура = ВложенныйЗапрос.Номенклатура
    Дальше делать ЛЕВОЕ СОЕДИНЕНИЕ внутри вложенного запроса? Пока мозг в такую конструкцию не строится...
    Последнее редактирование: 31 янв 2018
  5. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    8.880
    Симпатии:
    923
    Баллы:
    204
    Да, нужно левое соединение в пределах вложенного запроса.
    В одну и ту же дату может быть 100500 документов, какой из них вы будете считать нужным?
Похожие темы
  1. Ivan2014
    Ответов:
    17
    Просмотров:
    764
Загрузка...

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