Как запросом получить периоды действия доп. тарифа?
По теме из базы знаний
Найденные решения
В итоге получилось как то так.
ВЫБРАТЬ
Таблица1.Сотрудник КАК Сотрудник,
Таблица1.УсловияТруда КАК УсловияТруда,
МИНИМУМ(Таблица1.Период) КАК ПериодНачало,
Таблица2.Период КАК ПериодОкончание
ИЗ
РегистрНакопления.ДанныеТабельногоУчетаРабочегоВремениСотрудников КАК Таблица1
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДанныеТабельногоУчетаРабочегоВремениСотрудников КАК Таблица3
ПО Таблица1.Сотрудник = Таблица3.Сотрудник
И Таблица1.УсловияТруда = Таблица3.УсловияТруда
И (Таблица3.Период = ДОБАВИТЬКДАТЕ(Таблица1.Период, ДЕНЬ, -1))
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДанныеТабельногоУчетаРабочегоВремениСотрудников КАК Таблица2
ПО Таблица1.Сотрудник = Таблица2.Сотрудник
И Таблица1.УсловияТруда = Таблица2.УсловияТруда
И (Таблица2.Период В
(ВЫБРАТЬ
МИНИМУМ(Н.Период)
ИЗ
РегистрНакопления.ДанныеТабельногоУчетаРабочегоВремениСотрудников КАК Н
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДанныеТабельногоУчетаРабочегоВремениСотрудников КАК Н1
ПО
Н.Сотрудник = Н1.Сотрудник
И Н.УсловияТруда = Н1.УсловияТруда
И Н1.Период = ДОБАВИТЬКДАТЕ(Н.Период, ДЕНЬ, 1)
ГДЕ
Н.Период >= Таблица1.Период
И Н.Сотрудник = Таблица1.Сотрудник
И Н.УсловияТруда = Таблица1.УсловияТруда
И Н1.Период ЕСТЬ NULL))
ГДЕ
НЕ Таблица1.УсловияТруда = ЗНАЧЕНИЕ(Справочник.УсловияТруда.ПустаяСсылка)
И Таблица1.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
И Таблица1.Организация = &Организация
СГРУППИРОВАТЬ ПО
Таблица1.Сотрудник,
Таблица1.УсловияТруда,
Таблица2.Период
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
из исходной таблицы надо создать
1)отдельную таблицу для определения даты начала действия тарифа
группировки сотрудник, условия труда, мин(Период)
2)1)отдельную таблицу для определения даты окончания действия тарифа
группировки сотрудник, условия труда, Макс(Период)
3) итоговую таблицу из первых 2х. Там берем Сотрудник, условия труда , начало из 1 таблицы, конец из 2 таблицы
1)отдельную таблицу для определения даты начала действия тарифа
группировки сотрудник, условия труда, мин(Период)
2)1)отдельную таблицу для определения даты окончания действия тарифа
группировки сотрудник, условия труда, Макс(Период)
3) итоговую таблицу из первых 2х. Там берем Сотрудник, условия труда , начало из 1 таблицы, конец из 2 таблицы
В итоге получилось как то так.
ВЫБРАТЬ
Таблица1.Сотрудник КАК Сотрудник,
Таблица1.УсловияТруда КАК УсловияТруда,
МИНИМУМ(Таблица1.Период) КАК ПериодНачало,
Таблица2.Период КАК ПериодОкончание
ИЗ
РегистрНакопления.ДанныеТабельногоУчетаРабочегоВремениСотрудников КАК Таблица1
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДанныеТабельногоУчетаРабочегоВремениСотрудников КАК Таблица3
ПО Таблица1.Сотрудник = Таблица3.Сотрудник
И Таблица1.УсловияТруда = Таблица3.УсловияТруда
И (Таблица3.Период = ДОБАВИТЬКДАТЕ(Таблица1.Период, ДЕНЬ, -1))
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДанныеТабельногоУчетаРабочегоВремениСотрудников КАК Таблица2
ПО Таблица1.Сотрудник = Таблица2.Сотрудник
И Таблица1.УсловияТруда = Таблица2.УсловияТруда
И (Таблица2.Период В
(ВЫБРАТЬ
МИНИМУМ(Н.Период)
ИЗ
РегистрНакопления.ДанныеТабельногоУчетаРабочегоВремениСотрудников КАК Н
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДанныеТабельногоУчетаРабочегоВремениСотрудников КАК Н1
ПО
Н.Сотрудник = Н1.Сотрудник
И Н.УсловияТруда = Н1.УсловияТруда
И Н1.Период = ДОБАВИТЬКДАТЕ(Н.Период, ДЕНЬ, 1)
ГДЕ
Н.Период >= Таблица1.Период
И Н.Сотрудник = Таблица1.Сотрудник
И Н.УсловияТруда = Таблица1.УсловияТруда
И Н1.Период ЕСТЬ NULL))
ГДЕ
НЕ Таблица1.УсловияТруда = ЗНАЧЕНИЕ(Справочник.УсловияТруда.ПустаяСсылка)
И Таблица1.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
И Таблица1.Организация = &Организация
СГРУППИРОВАТЬ ПО
Таблица1.Сотрудник,
Таблица1.УсловияТруда,
Таблица2.Период
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот