8.х Запрос из регистра сведений. Вывод с диапазоном дат

Тема в разделе "Система компоновки данных (СКД)", создана пользователем AmoZ, 14 июл 2017.

  1. TopicStarter Overlay
    AmoZ
    Offline

    AmoZ Опытный в 1С

    Регистрация:
    25 дек 2008
    Сообщения:
    131
    Симпатии:
    0
    Баллы:
    26
    Есть периодический регистр сведений. Измерения - Номенклатура, Ресурсы - Какой-то справочник.
    Нужно запрос получить таблицу с диапазоном дат.
    У примеру записи:
    01.01.2017 - Каша манная - Производитель1
    06.06.2017 - Каша манная - Производитель2
    01.07.2017 - Каша манная - Производитель3

    На выходе:
    01.01.0001 - 01.01.2017 - Каша манная - NULL
    01.01.2017 - 06.06.2017 - Каша манная - Производитель1
    06.06.2017 - 01.07.2017 - Каша манная - Производитель2

    Никак не соображу, как запросом это реализовать?
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    8.870
    Симпатии:
    918
    Баллы:
    204
    Нумерацию строк результата с помощью левого соединения делать умеете?
  3. TopicStarter Overlay
    AmoZ
    Offline

    AmoZ Опытный в 1С

    Регистрация:
    25 дек 2008
    Сообщения:
    131
    Симпатии:
    0
    Баллы:
    26
    Никогда не делал, но представляю.
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    8.870
    Симпатии:
    918
    Баллы:
    204
    Что-то меня не в ту степь понесло с нумерацией :)
    Забыли про нее, все проще.

    В первом приближении таблицу периодов можно получить левым соединением:
    Код:
    Выбрать
    Т1.период КАК НачалоПериода,
    МИНИМУМ(ЕСТЬNULL(ВТ_ИзмененияУсловий1.Период, &КонПериода)) КАК КонецПериода,
    Т1.Номенклатура,
    Т1.Контрагент
    Из
    Таблица КАК Т1
    Левое Соединение Таблица КАК
    Т2 ПО Т1.Период < Т2.период
    И Т1.Номенклатура = Т2.Номенклатура
    И Т1.Контрагент = Т2.Контрагент
    Сгруппировать ПО
    Т1.Номенклатура,
    Т1.Контрагент
    
    Для получение первой строки нужна табличка начальных значений вида:

    Код:
    Выбрать
    &ПустаяДата,
    Т1.Номенклатура,
    &ПустойКонтрагент
    ИЗ Таблица КАК Т1
    Сгрупиировать ПО
    Т1.Номенклатура
    
    AmoZ нравится это.

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