8.х Помогите с запросом.

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем X-Man, 28 фев 2015.

  1. TopicStarter Overlay
    X-Man
    Offline

    X-Man Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    428
    Симпатии:
    3
    Баллы:
    29
    Здравствуйте. Прошу помочь с написанием запроса к регистрам сведений. Ситуация следующая: есть 2 периодических регистра сведений(период-сутки):
    1) ЦеныУслуг:
    -Номенклатура(Измерение)
    -ТипЦены(Измерение)
    -Цена(Ресурс)

    2)СпособыРасчетаСтоимостиУслуг:
    -Номенклатура(Измерение)
    -СпособРасчета(Ресурс)

    Мне нужно выбрать из первого регистра(ЦеныУслуг) записи в определенном интервале и левым соединением присоединить записи второго регистра с актуальным на момент значением ресурса СпособРасчета То есть, вроде как напрашивается срез последних по второму регистру, но для каждой записи параметр среза Период будет свой(равный значению периода записи левой таблицы ЦеныУслуг). Думал попробовать использовать в качестве правой таблицы основную таблицу регистра СпособыРасчетаСтоимостиУслуг с условием связи ЦеныУслуг.Номенклатура = СпособыРасчетаСтоимостиУслуг.Номенклатура И ЦеныУслуг.Период >= СпособыРасчетаСтоимостиУслуг.Период, но тогда возникает вопрос, как сделать так, чтобы в соединении участвовали не все записи второго регистра, а только первые найденные (с наибольшим периодом, меньшим или равным периоду регистра1) ???

    Заранее прошу сильно не бить, я семерочник, в восьмерке новичок:(
    Благодарю всех откликнувшихся.
  2. TopicStarter Overlay
    X-Man
    Offline

    X-Man Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    428
    Симпатии:
    3
    Баллы:
    29
    Неужели одним запросом никак?
  3. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Это называется динамический срез последних. Уже обсуждалось не раз.
    X-Man нравится это.
  4. TopicStarter Overlay
    X-Man
    Offline

    X-Man Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    428
    Симпатии:
    3
    Баллы:
    29
    Спасибо. А можно ссылку на ветку?
  5. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
  6. TopicStarter Overlay
    X-Man
    Offline

    X-Man Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    428
    Симпатии:
    3
    Баллы:
    29
    nomad_irk, спасибо, вроде разобрался.
    Сделал так:

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

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