8.х Запрос по переодическому РС. Свернуть записи по периодам.

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

  1. TopicStarter Overlay
    shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Доброго дня.

    Проще показать на примере. Имеем РС "ЦеныНоменклатуры", допустим в нем следующие записи (отобраные по какому-то одному типу цен):
    Период____Номенклатура__Цена
    01.01.10___Товар1________100
    05.01.10___Товар1________105
    06.01.10___Товар1________100
    05.02.10___Товар1________100
    07.02.10___Товар1________100
    09.02.10___Товар1________107
    01.02.10___Товар2________99
    05.02.10___Товар2________100
    07.02.10___Товар2________100
    и т.д.

    необходимо получить следующую выборку:
    ПериодНачало____ПериодКонец____Номенклатура__Цена
    01.01.1980_______04.01.2010_______Товар1________100
    05.01.2010_______05.01.2010_______Товар1________105
    06.01.2010_______08.02.2010_______Товар1________100
    09.02.2010_______31.12.3999_______Товар1________107
    01.01.1980_______31.01.2010_______Товар2________99
    01.02.2010_______31.12.3999_______Товар2________100

    Т.е. другими словами необходимо получить периоды действия цен. Коллеги, не могу сообразить как это провернуть в запросе, натолкните на мысль.
  2. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    На примере валют

    Код:
    ВЫБРАТЬ
    КурсыВалют.Период КАК ДействуетС,
    КурсыВалют.Валюта,
    КурсыВалют.Курс,
    МИНИМУМ(СледующиеКурсы.Период) КАК ДействуетПо
    ПОМЕСТИТЬ Курсы_
    ИЗ
    РегистрСведений.КурсыВалют КАК КурсыВалют
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК СледующиеКурсы
    ПО КурсыВалют.Валюта = СледующиеКурсы.Валюта
    И (СледующиеКурсы.Период > КурсыВалют.Период)
    ГДЕ
    КурсыВалют.Валюта = &ВыбВалюта
    
    СГРУППИРОВАТЬ ПО
    КурсыВалют.Период,
    КурсыВалют.Валюта,
    КурсыВалют.Курс;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    Курсы_.ДействуетС КАК ДействуетС,
    Курсы_.Валюта,
    Курсы_.Курс,
    Курсы_.ДействуетПо КАК ДействуетПо
    ИЗ
    Курсы_ КАК Курсы_
    
    УПОРЯДОЧИТЬ ПО
    ДействуетС,
    ДействуетПо
    
  3. TopicStarter Overlay
    shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    uza, благодарю!

    Код:
    "ВЫБРАТЬ
    ЦеныНоменклатуры.Период КАК ПериодНачало,
    МИНИМУМ(ЦеныНоменклатурыКопия.Период) КАК ПериодКонец,
    ЦеныНоменклатуры.Номенклатура,
    ЦеныНоменклатуры.Цена
    ПОМЕСТИТЬ ПредварительнаяВыборка
    ИЗ
    РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатурыКопия
    ПО ЦеныНоменклатуры.Номенклатура = ЦеныНоменклатурыКопия.Номенклатура
    И ЦеныНоменклатуры.ЕдиницаИзмерения = ЦеныНоменклатурыКопия.ЕдиницаИзмерения
    И ЦеныНоменклатуры.ХарактеристикаНоменклатуры = ЦеныНоменклатурыКопия.ХарактеристикаНоменклатуры
    И ЦеныНоменклатуры.Валюта = ЦеныНоменклатурыКопия.Валюта
    И ЦеныНоменклатуры.ТипЦен = ЦеныНоменклатурыКопия.ТипЦен
    И ЦеныНоменклатуры.Период < ЦеныНоменклатурыКопия.Период
    ГДЕ
    ЦеныНоменклатуры.ТипЦен = &ТипЦен
    </span>
    СГРУППИРОВАТЬ ПО
    ЦеныНоменклатуры.Период,
    ЦеныНоменклатуры.Номенклатура,
    ЦеныНоменклатуры.Цена;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    ЦеныПоПериодам.ПериодНачало КАК ПериодНачало,
    КОНЕЦПЕРИОДА(ЕСТЬNULL(ДОБАВИТЬКДАТЕ(ЦеныПоПериодам.ПериодКонец, ДЕНЬ, -1), ДАТАВРЕМЯ(3999, 12, 31)), ДЕНЬ) КАК ПериодКонец,
    ЦеныПоПериодам.Номенклатура КАК Номенклатура,
    ЦеныПоПериодам.Цена
    ИЗ
    ПредварительнаяВыборка КАК ЦеныПоПериодам
    
    УПОРЯДОЧИТЬ ПО
    Номенклатура,
    ПериодНачало
    АВТОУПОРЯДОЧИВАНИЕ"
    
    </FONT></FONT></pre>
Похожие темы
  1. Snickbw
    Ответов:
    1
    Просмотров:
    772
  2. Franc333_2008
    Ответов:
    15
    Просмотров:
    1.568
  3. Gulnaz
    Ответов:
    8
    Просмотров:
    1.645
  4. desintegrer
    Ответов:
    11
    Просмотров:
    811
  5. midavp
    Ответов:
    4
    Просмотров:
    906
Загрузка...

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