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

По теме из базы знаний
- Общие принципы формирования графика производства в новом решении "1С: ERP Управление предприятием 2.0"
- График производства по этапам. Часть 2
- 1С:Полиграфия 2. Модуль для 1С:ERP, 1С:КА и 1С:УТ
- Оптимизация времени. Возможен ли 4-часовой рабочий день?
- Финансовые метрики PV, NPV, IRR, XIRR, способы расчета
Найденные решения
Я данные из таблицы значений беру. Вот такой запрос получился.
ВЫБРАТЬ
ТЗ.НачСмены КАК НачСмены,
ТЗ.КонСмены КАК КонСмены,
ТЗ.Сотрудник КАК Сотрудник
ПОМЕСТИТЬ ВТ_ТабЗнач
ИЗ
&ТабЗнач КАК ТЗ
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ТЗ.НачСмены КАК Период
ПОМЕСТИТЬ ВТ_Периоды
ИЗ
ВТ_ТабЗнач КАК ТЗ
ОБЪЕДИНИТЬ
ВЫБРАТЬ
ТЗ.КонСмены
ИЗ
ВТ_ТабЗнач КАК ТЗ
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_Периоды.Период КАК ПериодНач,
МИНИМУМ(ВТ_ПериодыКон.Период) КАК ПериодКон
ПОМЕСТИТЬ ВТ_Интервалы
ИЗ
ВТ_Периоды КАК ВТ_Периоды
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Периоды КАК ВТ_ПериодыКон
ПО (ИСТИНА)
ГДЕ
ВТ_Периоды.Период < ВТ_ПериодыКон.Период
СГРУППИРОВАТЬ ПО
ВТ_Периоды.Период
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_Интервалы.ПериодНач КАК ПериодНач,
ВТ_Интервалы.ПериодКон КАК ПериодКон,
ТЗ.Сотрудник КАК Сотрудник
ИЗ
ВТ_Интервалы КАК ВТ_Интервалы
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ТабЗнач КАК ТЗ
ПО (ДОБАВИТЬКДАТЕ(ВТ_Интервалы.ПериодНач, СЕКУНДА, 1) МЕЖДУ ТЗ.НачСмены И ТЗ.КонСмены
ИЛИ ДОБАВИТЬКДАТЕ(ВТ_Интервалы.ПериодКон, СЕКУНДА, -1) МЕЖДУ ТЗ.НачСмены И ТЗ.КонСмены)
УПОРЯДОЧИТЬ ПО
ПериодНач
ИТОГИ ПО
ПериодНач
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Задач решается в два этапа.
1. Получить таблицу периодов. Для этого дата начала и дата окончания в одну колонку через объединение и свернуть. Далее полученную таблицу саму с собой соединить и получить периоды.
2. К полученной таблице прицепить исходную таблицу по пересечению периодов. Результат сформировать с колонкой ФИО в строчку в СКД.
1. Получить таблицу периодов. Для этого дата начала и дата окончания в одну колонку через объединение и свернуть. Далее полученную таблицу саму с собой соединить и получить периоды.
2. К полученной таблице прицепить исходную таблицу по пересечению периодов. Результат сформировать с колонкой ФИО в строчку в СКД.
Я данные из таблицы значений беру. Вот такой запрос получился.
ВЫБРАТЬ
ТЗ.НачСмены КАК НачСмены,
ТЗ.КонСмены КАК КонСмены,
ТЗ.Сотрудник КАК Сотрудник
ПОМЕСТИТЬ ВТ_ТабЗнач
ИЗ
&ТабЗнач КАК ТЗ
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ТЗ.НачСмены КАК Период
ПОМЕСТИТЬ ВТ_Периоды
ИЗ
ВТ_ТабЗнач КАК ТЗ
ОБЪЕДИНИТЬ
ВЫБРАТЬ
ТЗ.КонСмены
ИЗ
ВТ_ТабЗнач КАК ТЗ
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_Периоды.Период КАК ПериодНач,
МИНИМУМ(ВТ_ПериодыКон.Период) КАК ПериодКон
ПОМЕСТИТЬ ВТ_Интервалы
ИЗ
ВТ_Периоды КАК ВТ_Периоды
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Периоды КАК ВТ_ПериодыКон
ПО (ИСТИНА)
ГДЕ
ВТ_Периоды.Период < ВТ_ПериодыКон.Период
СГРУППИРОВАТЬ ПО
ВТ_Периоды.Период
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_Интервалы.ПериодНач КАК ПериодНач,
ВТ_Интервалы.ПериодКон КАК ПериодКон,
ТЗ.Сотрудник КАК Сотрудник
ИЗ
ВТ_Интервалы КАК ВТ_Интервалы
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ТабЗнач КАК ТЗ
ПО (ДОБАВИТЬКДАТЕ(ВТ_Интервалы.ПериодНач, СЕКУНДА, 1) МЕЖДУ ТЗ.НачСмены И ТЗ.КонСмены
ИЛИ ДОБАВИТЬКДАТЕ(ВТ_Интервалы.ПериодКон, СЕКУНДА, -1) МЕЖДУ ТЗ.НачСмены И ТЗ.КонСмены)
УПОРЯДОЧИТЬ ПО
ПериодНач
ИТОГИ ПО
ПериодНач
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот