Всем привет.
Выручайте, голова уже перестала думать. Есть табличка с графиком работы сотрудников (см.рисунок) в течении дня по разному интервалу времени. Можно ли запросом, либо как то еще получить таблицу с интервалами-пересечениями по времени между сотрудниками? (см.рисунок). Время в табличке может быть не округлено до часа.
---
Я данные из таблицы значений беру. Вот такой запрос получился.

```1c
    ВЫБРАТЬ
    ТЗ.НачСмены КАК НачСмены,
    ТЗ.КонСмены КАК КонСмены,
    ТЗ.Сотрудник КАК Сотрудник
    ПОМЕСТИТЬ ВТ_ТабЗнач
    ИЗ
    &ТабЗнач КАК ТЗ
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ТЗ.НачСмены КАК Период
    ПОМЕСТИТЬ ВТ_Периоды
    ИЗ
    ВТ_ТабЗнач КАК ТЗ

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    ТЗ.КонСмены
    ИЗ
    ВТ_ТабЗнач КАК ТЗ
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_Периоды.Период КАК ПериодНач,
    МИНИМУМ(ВТ_ПериодыКон.Период) КАК ПериодКон
    ПОМЕСТИТЬ ВТ_Интервалы
    ИЗ
    ВТ_Периоды КАК ВТ_Периоды
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Периоды КАК ВТ_ПериодыКон
    ПО (ИСТИНА)
    ГДЕ
    ВТ_Периоды.Период < ВТ_ПериодыКон.Период

    СГРУППИРОВАТЬ ПО
    ВТ_Периоды.Период
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_Интервалы.ПериодНач КАК ПериодНач,
    ВТ_Интервалы.ПериодКон КАК ПериодКон,
    ТЗ.Сотрудник КАК Сотрудник
    ИЗ
    ВТ_Интервалы КАК ВТ_Интервалы
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ТабЗнач КАК ТЗ
    ПО (ДОБАВИТЬКДАТЕ(ВТ_Интервалы.ПериодНач, СЕКУНДА, 1) МЕЖДУ ТЗ.НачСмены И ТЗ.КонСмены
    ИЛИ ДОБАВИТЬКДАТЕ(ВТ_Интервалы.ПериодКон, СЕКУНДА, -1) МЕЖДУ ТЗ.НачСмены И ТЗ.КонСмены)

    УПОРЯДОЧИТЬ ПО
    ПериодНач
    ИТОГИ ПО
    ПериодНач
```
---
Задач решается в два этапа.
1. Получить таблицу периодов. Для этого дата начала и дата окончания в одну колонку через объединение и свернуть. Далее полученную таблицу саму с собой соединить и получить периоды.
2. К полученной таблице прицепить исходную таблицу по пересечению периодов. Результат сформировать с колонкой ФИО в строчку в СКД.
---
Ок. Через объединение сделал в одну колонку и свернул.

"Далее полученную таблицу саму с собой соединить и получить периоды." - получаются одинаковые периоды. С 10 до 10, с 11 до 11 (((( Может я как то не так понял?
---
так, первый варик сделал. Ща буду пункт 2 реализовывать.
---
Тоже попробовал сделать запрос. Чтобы получить результат, как в таблице из шапки, пришлось периоды смещать на секунду. Иначе пересекаются гораздо больше значений
---
у меня вторая часть так и не получается, циклами наколхозил но все равно остаются лишние периоды, если получилось - какой запрос в итоге по второй части? секунды как раз не имеют смысла
---
Спасибо огромное за помощь. 2 пункт так и не понял как запросом сделать, по пересечению времени первый раз столкнулся.
---
Я данные из таблицы значений беру. Вот такой запрос получился.

```1c
    ВЫБРАТЬ
    ТЗ.НачСмены КАК НачСмены,
    ТЗ.КонСмены КАК КонСмены,
    ТЗ.Сотрудник КАК Сотрудник
    ПОМЕСТИТЬ ВТ_ТабЗнач
    ИЗ
    &ТабЗнач КАК ТЗ
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ТЗ.НачСмены КАК Период
    ПОМЕСТИТЬ ВТ_Периоды
    ИЗ
    ВТ_ТабЗнач КАК ТЗ

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    ТЗ.КонСмены
    ИЗ
    ВТ_ТабЗнач КАК ТЗ
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_Периоды.Период КАК ПериодНач,
    МИНИМУМ(ВТ_ПериодыКон.Период) КАК ПериодКон
    ПОМЕСТИТЬ ВТ_Интервалы
    ИЗ
    ВТ_Периоды КАК ВТ_Периоды
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Периоды КАК ВТ_ПериодыКон
    ПО (ИСТИНА)
    ГДЕ
    ВТ_Периоды.Период < ВТ_ПериодыКон.Период

    СГРУППИРОВАТЬ ПО
    ВТ_Периоды.Период
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_Интервалы.ПериодНач КАК ПериодНач,
    ВТ_Интервалы.ПериодКон КАК ПериодКон,
    ТЗ.Сотрудник КАК Сотрудник
    ИЗ
    ВТ_Интервалы КАК ВТ_Интервалы
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ТабЗнач КАК ТЗ
    ПО (ДОБАВИТЬКДАТЕ(ВТ_Интервалы.ПериодНач, СЕКУНДА, 1) МЕЖДУ ТЗ.НачСмены И ТЗ.КонСмены
    ИЛИ ДОБАВИТЬКДАТЕ(ВТ_Интервалы.ПериодКон, СЕКУНДА, -1) МЕЖДУ ТЗ.НачСмены И ТЗ.КонСмены)

    УПОРЯДОЧИТЬ ПО
    ПериодНач
    ИТОГИ ПО
    ПериодНач
```
---
Огромное спасибо. Всю голову себе сломал. Я теперь должник)))))
---
Это Said-We благодари. Я по его алгоритму делал.