Есть периодический РС, два измерения - производитель и видНоменклатуры. И ещё один ресурс.
Регистр соответственно определяет на каждый момент времени соответствие измерений этому ресурсу.
Требуется выбрать запросом, без виртуальной таблицы, данные в таком виде:

ДатаНачала | ДатаОкончания | Произв | Вид | Реквизит

Ну т.е. период действия каждого ресурса. Это вроде достаточно типовая задача, но что-то не соображу, как вычислить даты.
Т.е. например:
1 апреля 20:00 - красный
2 апреля 15:00 - желтый
3 апреля 13:00 - красный
3 апреля 18:00 - синий

должно быть:
01.04 20:00 - 02.04 14:59:59 - красный
02.04 15:00 - 03.04 12:59:59 - желтый
03.04 13:00 - 03.04 17:59:59 - красный
03.04 18:00 - ... - синий
---
Примерно таким запросом

```1c
    ВЫБРАТЬ
    ДАТАВРЕМЯ(2022, 4, 1) КАК Период,
    "П1" КАК Производитель,
    "В1" КАК ВидНоменклатуры,
    "красный" КАК Цвет
    ПОМЕСТИТЬ Данные

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ДАТАВРЕМЯ(2022, 4, 2),
    "П1",
    "В1",
    "желтый"

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ДАТАВРЕМЯ(2022, 4, 3),
    "П1",
    "В1",
    "красный"

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ДАТАВРЕМЯ(2022, 4, 4),
    "П1",
    "В1",
    "синий"
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    Данные.Период КАК Период,
    Данные.Производитель КАК Производитель,
    Данные.ВидНоменклатуры КАК ВидНоменклатуры,
    МИНИМУМ(Данные1.Период) КАК ПериодСледующий
    ПОМЕСТИТЬ ПериодыСледующие
    ИЗ
    Данные КАК Данные
    ЛЕВОЕ СОЕДИНЕНИЕ Данные КАК Данные1
    ПО Данные.Производитель = Данные1.Производитель
    И Данные.ВидНоменклатуры = Данные1.ВидНоменклатуры
    И Данные.Период < Данные1.Период

    СГРУППИРОВАТЬ ПО
    Данные.Период,
    Данные.Производитель,
    Данные.ВидНоменклатуры
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    Данные.Период КАК Период1,
    ВЫБОР
    КОГДА ПериодыСледующие.ПериодСледующий ЕСТЬ НЕ NULL
    ТОГДА ДОБАВИТЬКДАТЕ(ПериодыСледующие.ПериодСледующий, СЕКУНДА, -1)
    ИНАЧЕ NULL
    КОНЕЦ КАК Период2,
    Данные.Производитель КАК Производитель,
    Данные.ВидНоменклатуры КАК ВидНоменклатуры,
    Данные.Цвет КАК Цвет
    ИЗ
    Данные КАК Данные
    ЛЕВОЕ СОЕДИНЕНИЕ ПериодыСледующие КАК ПериодыСледующие
    ПО Данные.Период = ПериодыСледующие.Период
    И Данные.Производитель = ПериодыСледующие.Производитель
    И Данные.ВидНоменклатуры = ПериодыСледующие.ВидНоменклатуры
```
---
Примерно таким запросом

```1c
    ВЫБРАТЬ
    ДАТАВРЕМЯ(2022, 4, 1) КАК Период,
    "П1" КАК Производитель,
    "В1" КАК ВидНоменклатуры,
    "красный" КАК Цвет
    ПОМЕСТИТЬ Данные

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ДАТАВРЕМЯ(2022, 4, 2),
    "П1",
    "В1",
    "желтый"

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ДАТАВРЕМЯ(2022, 4, 3),
    "П1",
    "В1",
    "красный"

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ДАТАВРЕМЯ(2022, 4, 4),
    "П1",
    "В1",
    "синий"
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    Данные.Период КАК Период,
    Данные.Производитель КАК Производитель,
    Данные.ВидНоменклатуры КАК ВидНоменклатуры,
    МИНИМУМ(Данные1.Период) КАК ПериодСледующий
    ПОМЕСТИТЬ ПериодыСледующие
    ИЗ
    Данные КАК Данные
    ЛЕВОЕ СОЕДИНЕНИЕ Данные КАК Данные1
    ПО Данные.Производитель = Данные1.Производитель
    И Данные.ВидНоменклатуры = Данные1.ВидНоменклатуры
    И Данные.Период < Данные1.Период

    СГРУППИРОВАТЬ ПО
    Данные.Период,
    Данные.Производитель,
    Данные.ВидНоменклатуры
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    Данные.Период КАК Период1,
    ВЫБОР
    КОГДА ПериодыСледующие.ПериодСледующий ЕСТЬ НЕ NULL
    ТОГДА ДОБАВИТЬКДАТЕ(ПериодыСледующие.ПериодСледующий, СЕКУНДА, -1)
    ИНАЧЕ NULL
    КОНЕЦ КАК Период2,
    Данные.Производитель КАК Производитель,
    Данные.ВидНоменклатуры КАК ВидНоменклатуры,
    Данные.Цвет КАК Цвет
    ИЗ
    Данные КАК Данные
    ЛЕВОЕ СОЕДИНЕНИЕ ПериодыСледующие КАК ПериодыСледующие
    ПО Данные.Период = ПериодыСледующие.Период
    И Данные.Производитель = ПериодыСледующие.Производитель
    И Данные.ВидНоменклатуры = ПериодыСледующие.ВидНоменклатуры
```
---
спасибо
---
Добрый вечер

```1c
    ВЫБРАТЬ
    Сведения1.Период КАК ДатаНачала,
    МИНИМУМ(ЕСТЬNULL(ДОБАВИТЬКДАТЕ(Сведения2.Период, СЕКУНДА, -1), ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))) КАК ДатаОкончания,
    Сведения1.Производитель КАК Производитель,
    Сведения1.ВидНоменклатуры КАК ВидНоменклатуры,
    Сведения1.Ресурс КАК Ресурс
    ИЗ
    РегистрСведений.СведенияОВидеНоменклатуры КАК Сведения1
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СведенияОВидеНоменклатуры КАК Сведения2
    ПО Сведения1.Производитель = Сведения2.Производитель
    И Сведения1.ВидНоменклатуры = Сведения2.ВидНоменклатуры
    И Сведения1.Период < Сведения2.Период

    СГРУППИРОВАТЬ ПО
    Сведения1.Период,
    Сведения1.Производитель,
    Сведения1.ВидНоменклатуры,
    Сведения1.Ресурс
```

P.S.
Не сразу увидел сообщение выше...
Суть в соединении таблицы с собой, но чтобы период у строки из другой таблицы был больше. С последующей группировкой и выбором минимального периода из подходящих.
---
в вашем варианте почему-то не выводит последнюю строку. Дату окончания для предыдущей из неё вычисляет, но саму строка не выводится.
---
если, совсем не выводится последняя строка, то такое возможно только при внутреннем соединении.
Т.к. таблица одна и та же, то при левом соединении последняя строка регистра всегда должна присутствовать в результате)
В подтверждение прикрепил скриншот с данными и результатом запроса.
Только еще сортировку добавил по дате начала.
---
```1c
    ВЫБРАТЬ
    ДАТАВРЕМЯ(2022, 4, 4) КАК Период,
    "П1" КАК Производитель,
    "В1" КАК ВидНоменклатуры,
    "синий" КАК Цвет
    ПОМЕСТИТЬ Данные

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ДАТАВРЕМЯ(2022, 4, 1),
    "П1",
    "В1",
    "красный"

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ДАТАВРЕМЯ(2022, 4, 2),
    "П1",
    "В1",
    "желтый"

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ДАТАВРЕМЯ(2022, 4, 3),
    "П1",
    "В1",
    "красный"
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ ПЕРВЫЕ 999
    Данные.Период КАК Период,
    Данные.Производитель,
    Данные.ВидНоменклатуры,
    Данные.Цвет,
    АВТОНОМЕРЗАПИСИ() КАК Порядок
    ПОМЕСТИТЬ м1
    ИЗ
    Данные КАК Данные

    УПОРЯДОЧИТЬ ПО
    Период
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    м1.Период,
    м1.Производитель,
    м1.ВидНоменклатуры,
    м1.Цвет,
    м1.Порядок,
    м11.Период КАК Период1
    ИЗ
    м1 КАК м1
    ЛЕВОЕ СОЕДИНЕНИЕ м1 КАК м11
    ПО (м1.Порядок = м11.Порядок -1)
```