Получение таблицы периодов работы сотрудников в подразделениях.
Сотрудники принимаются, переводятся в другие подразделения, увольняются. Запросом получаем таблицу, в которой видим подразделения,
где работали/ют сотрудники, с датами начала и окончания работы в подразделениях. Если сотрудник в данный момент работает, то "пустая" дата окончания
заменяется на условную конечную дату(в запросе это 01.01.2333г)
Таблица КадроваяИсторияСотрудников соединяется сама с собой. ЗУП 3.0
Запрос.Текст = "ВЫБРАТЬ
| НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Период, ДЕНЬ) КАК Период,
| ВЫБОР
| КОГДА ВложенныйЗапрос.ПериодК ЕСТЬ NULL
| ТОГДА ДАТАВРЕМЯ(2333, 1, 1)
| ИНАЧЕ КОНЕЦПЕРИОДА(ВложенныйЗапрос.ПериодК, ДЕНЬ)
| КОНЕЦ КАК ПериодК,
| ВложенныйЗапрос.Сотрудник КАК Сотрудник,
| ВложенныйЗапрос.Подразделение КАК Подразделение,
| ВложенныйЗапрос.Организация КАК Организация
|
|ИЗ
| (ВЫБРАТЬ
| ВложенныйЗапрос.Период КАК Период,
| ВложенныйЗапрос.ПериодК КАК ПериодК,
| ВложенныйЗапрос.Сотрудник КАК Сотрудник,
| ВложенныйЗапрос.Организация КАК Организация,
| КадроваяИсторияСотрудников.Подразделение КАК Подразделение
| ИЗ
| (ВЫБРАТЬ
| КадроваяИсторияСотрудников.Период КАК Период,
| КадроваяИсторияСотрудников.Сотрудник КАК Сотрудник,
| МИНИМУМ(ДОБАВИТЬКДАТЕ(КадроваяИсторияСотрудников1.Период, ДЕНЬ, -1)) КАК ПериодК,
| КадроваяИсторияСотрудников.Организация КАК Организация
| ИЗ
| РегистрСведений.КадроваяИсторияСотрудников КАК КадроваяИсторияСотрудников
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников КАК КадроваяИсторияСотрудников1
| ПО КадроваяИсторияСотрудников.Сотрудник = КадроваяИсторияСотрудников1.Сотрудник
| И КадроваяИсторияСотрудников.Период < КадроваяИсторияСотрудников1.Период
| ГДЕ
| КадроваяИсторияСотрудников.Организация = &Организация
|
| СГРУППИРОВАТЬ ПО
| КадроваяИсторияСотрудников.Сотрудник,
| КадроваяИсторияСотрудников.Период,
| КадроваяИсторияСотрудников.Организация) КАК ВложенныйЗапрос
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников КАК КадроваяИсторияСотрудников
| ПО ВложенныйЗапрос.Период = КадроваяИсторияСотрудников.Период
| И ВложенныйЗапрос.Сотрудник = КадроваяИсторияСотрудников.Сотрудник
| И ВложенныйЗапрос.Организация = КадроваяИсторияСотрудников.Организация) КАК ВложенныйЗапрос";