Добрый день. конфигурация ЗУП.

Необходимо получить список работников, занимающих ваканси в подразделении и список не занятых вакансий в этом подраздлении. Соответственно делаю запрос по рег. свед "Кадровая история сотрудников" и "Штатное расписание организаций".

```1c
    ВЫБРАТЬ
    РаботникиОрганизацийСрезПоследних.Сотрудник,
    РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния,
    РаботникиОрганизацийСрезПоследних.Организация,
    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации,
    РаботникиОрганизацийСрезПоследних.Должность
    ПОМЕСТИТЬ Вт_работающиеСотрудники
    ИЗ
    РегистрСведений.РаботникиОрганизаций.СрезПоследних(
    &НаДату,
    Организация = &Организация
    И ПодразделениеОрганизации = &Подразделение) КАК РаботникиОрганизацийСрезПоследних
    ГДЕ
    ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &НаДату
    ТОГДА РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостоянияЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния
    КОНЕЦ <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
    ;

    X
    ВЫБРАТЬ
    ШтатноеРасписаниеОрганизацийСрезПоследних.Организация КАК Организация,
    ШтатноеРасписаниеОрганизацийСрезПоследних.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
    ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.Сотрудник ЕСТЬ NULL
    ТОГДА "естьNull"
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.Сотрудник
    КОНЕЦ КАК Сотрудник,
    ШтатноеРасписаниеОрганизацийСрезПоследних.ВидРасчета,
    ШтатноеРасписаниеОрганизацийСрезПоследних.Должность,
    ШтатноеРасписаниеОрганизацийСрезПоследних.КоличествоСтавок,
    РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния,
    РаботникиОрганизацийСрезПоследних.ПериодЗавершения,
    РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостоянияЗавершения
    ПОМЕСТИТЬ Вт_всеСотрудникиИВакансии
    ИЗ
    РегистрСведений.ШтатноеРасписаниеОрганизаций.СрезПоследних(
    &НаДату,
    Организация = &Организация
    И ПодразделениеОрганизации = &Подразделение) КАК ШтатноеРасписаниеОрганизацийСрезПоследних
    ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(
    &НаДату,
    Организация = &Организация
    И ПодразделениеОрганизации = &Подразделение) КАК РаботникиОрганизацийСрезПоследних
    ПО ШтатноеРасписаниеОрганизацийСрезПоследних.Организация = РаботникиОрганизацийСрезПоследних.Организация
    И ШтатноеРасписаниеОрганизацийСрезПоследних.Должность = РаботникиОрганизацийСрезПоследних.Должность
    И ШтатноеРасписаниеОрганизацийСрезПоследних.ПодразделениеОрганизации = РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации
    ;

    X
    ВЫБРАТЬ
    Вт_работающиеСотрудники.Сотрудник КАК Сотрудник,
    Вт_работающиеСотрудники.ПричинаИзмененияСостояния,
    Вт_всеСотрудникиИВакансии.Организация,
    Вт_всеСотрудникиИВакансии.ПодразделениеОрганизации,
    Вт_всеСотрудникиИВакансии.Сотрудник КАК Сотрудник1,
    Вт_всеСотрудникиИВакансии.ВидРасчета,
    Вт_всеСотрудникиИВакансии.Должность,
    Вт_всеСотрудникиИВакансии.КоличествоСтавок,
    Вт_всеСотрудникиИВакансии.ПричинаИзмененияСостояния КАК ПричинаИзмененияСостояния1
    ИЗ
    Вт_всеСотрудникиИВакансии КАК Вт_всеСотрудникиИВакансии
    ПОЛНОЕ СОЕДИНЕНИЕ Вт_работающиеСотрудники КАК Вт_работающиеСотрудники
    ПО (Вт_работающиеСотрудники.Организация = Вт_всеСотрудникиИВакансии.Организация)
    И (Вт_работающиеСотрудники.ПодразделениеОрганизации = Вт_всеСотрудникиИВакансии.ПодразделениеОрганизации)
    И Вт_всеСотрудникиИВакансии.Должность = Вт_работающиеСотрудники.Должность
    И Вт_всеСотрудникиИВакансии.Сотрудник = Вт_работающиеСотрудники.Сотрудник

    УПОРЯДОЧИТЬ ПО
    Сотрудник
    АВТОУПОРЯДОЧИВАНИЕ
```

Можно бы было обойтись и без ВТ, если бы конструкция

```1c
    ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &НаДату
    ТОГДА РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостоянияЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния
    КОНЕЦ <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
```

не отрезала свободные вакансии.
В первой ВТ - Вт_работающиеСотрудники отбираю всех работников, которые работают,
во сторой ВТ - Вт_всеСотрудникиИВакансии - всех сотрудников в том числе уволеных и свободные вакансии.
Возникла пролема с соединением этих ВТ - как убрать оттуда всех уволеных?
---
Если связать последний подзапрос с ВТ "ЗанимаемыеСтавкиПоСотрудникам" по подразделению и должности, вывести все поля ВТ "ЗанимаемыеСтавкиПоСотрудникам" и поле "СвободныеСтавки" последнего подзапроса?
---
Manticor,
выведи поле

```1c
    ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &НаДату
    ТОГДА РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостоянияЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния
    КОНЕЦ
```
, определяющее состояние "Уволен" или нет
в обе временные таблицы и
тогда сможешь по нему делать отбор в выборке запроса при их объединении.
---
Rothschild, поробовал так:

```1c
    ВЫБРАТЬ
    РаботникиОрганизацийСрезПоследних.Сотрудник,
    ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &НаДату
    ТОГДА РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостоянияЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния
    КОНЕЦ КАК ПричинаИзмененияСостояния,
    РаботникиОрганизацийСрезПоследних.Организация,
    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации,
    РаботникиОрганизацийСрезПоследних.Должность
    ПОМЕСТИТЬ Вт_работающиеСотрудники
    ИЗ
    РегистрСведений.РаботникиОрганизаций.СрезПоследних(
    &НаДату,
    Организация = &Организация
    И ПодразделениеОрганизации = &Подразделение) КАК РаботникиОрганизацийСрезПоследних
    ГДЕ
    ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &НаДату
    ТОГДА РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостоянияЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния
    КОНЕЦ <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
    ;

    X
    ВЫБРАТЬ
    ШтатноеРасписаниеОрганизацийСрезПоследних.Организация КАК Организация,
    ШтатноеРасписаниеОрганизацийСрезПоследних.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
    РаботникиОрганизацийСрезПоследних.Сотрудник КАК Сотрудник,
    ШтатноеРасписаниеОрганизацийСрезПоследних.ВидРасчета,
    ШтатноеРасписаниеОрганизацийСрезПоследних.Должность,
    ШтатноеРасписаниеОрганизацийСрезПоследних.КоличествоСтавок,
    ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &НаДату
    ТОГДА РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостоянияЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния
    КОНЕЦ КАК ПричинаИзмененияСостояния,
    РаботникиОрганизацийСрезПоследних.ПериодЗавершения,
    РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостоянияЗавершения
    ПОМЕСТИТЬ Вт_всеСотрудникиИВакансии
    ИЗ
    РегистрСведений.ШтатноеРасписаниеОрганизаций.СрезПоследних(
    &НаДату,
    Организация = &Организация
    И ПодразделениеОрганизации = &Подразделение) КАК ШтатноеРасписаниеОрганизацийСрезПоследних
    ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(
    &НаДату,
    Организация = &Организация
    И ПодразделениеОрганизации = &Подразделение) КАК РаботникиОрганизацийСрезПоследних
    ПО ШтатноеРасписаниеОрганизацийСрезПоследних.Организация = РаботникиОрганизацийСрезПоследних.Организация
    И ШтатноеРасписаниеОрганизацийСрезПоследних.Должность = РаботникиОрганизацийСрезПоследних.Должность
    И ШтатноеРасписаниеОрганизацийСрезПоследних.ПодразделениеОрганизации = РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации
    ;

    X
    ВЫБРАТЬ
    Вт_всеСотрудникиИВакансии.Организация,
    Вт_всеСотрудникиИВакансии.ПодразделениеОрганизации,
    Вт_всеСотрудникиИВакансии.Сотрудник КАК Сотрудник,
    Вт_всеСотрудникиИВакансии.ВидРасчета,
    Вт_всеСотрудникиИВакансии.Должность,
    Вт_всеСотрудникиИВакансии.КоличествоСтавок
    ИЗ
    Вт_всеСотрудникиИВакансии КАК Вт_всеСотрудникиИВакансии
    ПОЛНОЕ СОЕДИНЕНИЕ Вт_работающиеСотрудники КАК Вт_работающиеСотрудники
    ПО (Вт_работающиеСотрудники.Организация = Вт_всеСотрудникиИВакансии.Организация)
    И (Вт_работающиеСотрудники.ПодразделениеОрганизации = Вт_всеСотрудникиИВакансии.ПодразделениеОрганизации)
    И Вт_всеСотрудникиИВакансии.Должность = Вт_работающиеСотрудники.Должность
    И Вт_всеСотрудникиИВакансии.Сотрудник = Вт_работающиеСотрудники.Сотрудник
    ГДЕ
    ВЫБОР
    КОГДА Вт_всеСотрудникиИВакансии.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И Вт_всеСотрудникиИВакансии.ПериодЗавершения <= &НаДату
    ТОГДА Вт_всеСотрудникиИВакансии.ПричинаИзмененияСостоянияЗавершения
    ИНАЧЕ Вт_всеСотрудникиИВакансии.ПричинаИзмененияСостояния
    КОНЕЦ <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
    АВТОУПОРЯДОЧИВАНИЕ
```

Ничего не изменилось (.
---
Manticor,
слушай, а зачем тебе ПОЛНОЕ соединение в конечной выборке?
---
как-то так мыслю
---
только надо разобраться:
- с типами соединений
- как интерпретировать значения NULL в ВТ,
возможно подправить с учетом этого выражения для поля ПричинаИзмененияСостояния
***
ЗЫ
возможно NULL будет надо заменять в выражении
на
```1c
    ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПустаяСсылка)
```
---
Попробуйте так,

```1c
    ВЫБРАТЬ
    ЗанятыеШтатныеЕдиницыОрганизаций.Сотрудник.Наименование КАК Сотрудник,
    ЗанятыеШтатныеЕдиницыОрганизаций.ПодразделениеОрганизации,
    ЗанятыеШтатныеЕдиницыОрганизаций.Должность,
    СУММА(ВЫБОР
    КОГДА ЗанятыеШтатныеЕдиницыОрганизаций.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
    ТОГДА 1
    ИНАЧЕ 0
    КОНЕЦ) КАК Приход,
    СУММА(ВЫБОР
    КОГДА ЗанятыеШтатныеЕдиницыОрганизаций.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
    ТОГДА 1
    ИНАЧЕ 0
    КОНЕЦ) КАК Расход
    ПОМЕСТИТЬ ДвижениеСтавок
    ИЗ
    РегистрНакопления.ЗанятыеШтатныеЕдиницыОрганизаций КАК ЗанятыеШтатныеЕдиницыОрганизаций

    СГРУППИРОВАТЬ ПО
    ЗанятыеШтатныеЕдиницыОрганизаций.Должность,
    ЗанятыеШтатныеЕдиницыОрганизаций.Сотрудник.Наименование,
    ЗанятыеШтатныеЕдиницыОрганизаций.ПодразделениеОрганизации
    ;

    X
    ВЫБРАТЬ
    ДвижениеСтавок.Сотрудник КАК Сотрудник,
    ДвижениеСтавок.ПодразделениеОрганизации,
    ДвижениеСтавок.Должность,
    ДвижениеСтавок.Приход - ДвижениеСтавок.Расход КАК Количество
    ПОМЕСТИТЬ ЗанимаемыеСтавкиПоСотрудникам
    ИЗ
    ДвижениеСтавок КАК ДвижениеСтавок
    ГДЕ
    ДвижениеСтавок.Приход - ДвижениеСтавок.Расход > 0
    ;

    X
    ВЫБРАТЬ
    ЗанимаемыеСтавки.ПодразделениеОрганизации,
    ЗанимаемыеСтавки.Должность,
    СУММА(ЗанимаемыеСтавки.Количество) КАК Количество
    ПОМЕСТИТЬ ЗанимаемыеСтавки
    ИЗ
    ЗанимаемыеСтавкиПоСотрудникам КАК ЗанимаемыеСтавки

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

    X
    ВЫБРАТЬ
    ШтатноеРасписаниеОрганизацийСрезПоследних.ПодразделениеОрганизации,
    ШтатноеРасписаниеОрганизацийСрезПоследних.Должность,
    ЗанимаемыеСтавки.Количество КАК КоличествоЗанятыхСтавок,
    ШтатноеРасписаниеОрганизацийСрезПоследних.КоличествоСтавок КАК ВсегоСтавок,
    ШтатноеРасписаниеОрганизацийСрезПоследних.КоличествоСтавок - ЗанимаемыеСтавки.Количество КАК СвободныеСтавки
    ИЗ
    РегистрСведений.ШтатноеРасписаниеОрганизаций.СрезПоследних КАК ШтатноеРасписаниеОрганизацийСрезПоследних
    ЛЕВОЕ СОЕДИНЕНИЕ ЗанимаемыеСтавки КАК ЗанимаемыеСтавки
    ПО ШтатноеРасписаниеОрганизацийСрезПоследних.ПодразделениеОрганизации = ЗанимаемыеСтавки.ПодразделениеОрганизации
    И ШтатноеРасписаниеОрганизацийСрезПоследних.Должность = ЗанимаемыеСтавки.Должность
```
---
Borometr, а как связь с работниками организовать, чтобы увидеть, какому работнику какая вакансия занята а какая свободна )
---
Если связать последний подзапрос с ВТ "ЗанимаемыеСтавкиПоСотрудникам" по подразделению и должности, вывести все поля ВТ "ЗанимаемыеСтавкиПоСотрудникам" и поле "СвободныеСтавки" последнего подзапроса?
---
Borometr, в общем с учетом регистра накоплений занятые штатные единицы попробовал сделать так:

```1c
    ВЫБРАТЬ
    юмВременныеЗамещенияСрезПоследних.Замещаемый КАК Замещаемый,
    юмВременныеЗамещенияСрезПоследних.Сотрудник
    ПОМЕСТИТЬ УжеДейсвуетЗамещение
    ИЗ
    РегистрСведений.юмВременныеЗамещения.СрезПоследних(
    &Период,
    Организация = &Организация
    И ПодразделениеОрганизации В (&ОтборПодразделение)) КАК юмВременныеЗамещенияСрезПоследних
    ГДЕ
    ВЫБОР
    КОГДА юмВременныеЗамещенияСрезПоследних.ДатаОкончания <> ДАТАВРЕМЯ(1, 1, 1)
    ТОГДА юмВременныеЗамещенияСрезПоследних.ДатаОкончания >= &Период
    ИНАЧЕ ИСТИНА
    КОНЕЦ

    ИНДЕКСИРОВАТЬ ПО
    Замещаемый
    ;

    X
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизацииЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации
    КОНЕЦ КАК ПодразделениеОрганизации,
    ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА РаботникиОрганизацийСрезПоследних.ДолжностьЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.Должность
    КОНЕЦ КАК Должность,
    СУММА(ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА РаботникиОрганизацийСрезПоследних.ЗанимаемыхСтавокЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.ЗанимаемыхСтавок
    КОНЕЦ) КАК ОсвобожденныхСтавок
    ПОМЕСТИТЬ ОсворбожденныеСтавки
    ИЗ
    РегистрСведений.РаботникиОрганизаций.СрезПоследних(
    &Период,
    Организация = &Организация
    И ПодразделениеОрганизации В (&ОтборПодразделение)) КАК РаботникиОрганизацийСрезПоследних
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.Сотрудник КАК Сотрудник,
    СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.Организация КАК Организация,
    ВЫБОР
    КОГДА СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ОсвобождатьСтавкуЗавершения
    ИНАЧЕ СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ОсвобождатьСтавку
    КОНЕЦ КАК ОсвобождатьСтавки
    ИЗ
    РегистрСведений.СотрудникиОсвободившиеСтавкиВОрганизациях.СрезПоследних(&Период, Организация = &Организация) КАК СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних
    ГДЕ
    ВЫБОР
    КОГДА СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ОсвобождатьСтавкуЗавершения
    ИНАЧЕ СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ОсвобождатьСтавку
    КОНЕЦ) КАК СотрудникиОсовободившиеставки
    ПО (СотрудникиОсовободившиеставки.Сотрудник = РаботникиОрганизацийСрезПоследних.Сотрудник)
    И (СотрудникиОсовободившиеставки.Организация = РаботникиОрганизацийСрезПоследних.Организация)
    ГДЕ
    ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостоянияЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния
    КОНЕЦ <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
    И НЕ РаботникиОрганизацийСрезПоследних.Сотрудник В
    (ВЫБРАТЬ
    УжеДейсвуетЗамещение.Замещаемый
    ИЗ
    УжеДейсвуетЗамещение КАК УжеДейсвуетЗамещение)

    СГРУППИРОВАТЬ ПО
    ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизацииЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации
    КОНЕЦ,
    ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА РаботникиОрганизацийСрезПоследних.ДолжностьЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.Должность
    КОНЕЦ
    ;

    X
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизацииЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации
    КОНЕЦ КАК ПодразделениеОрганизации,
    ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА РаботникиОрганизацийСрезПоследних.ДолжностьЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.Должность
    КОНЕЦ КАК Должность,
    СУММА(ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА РаботникиОрганизацийСрезПоследних.ЗанимаемыхСтавокЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.ЗанимаемыхСтавок
    КОНЕЦ) КАК ЗамещаемыхСтавок
    ПОМЕСТИТЬ ВременноЗанятые
    ИЗ
    РегистрСведений.РаботникиОрганизаций.СрезПоследних(
    &Период,
    Организация = &Организация
    И ПодразделениеОрганизации В (&ОтборПодразделение)) КАК РаботникиОрганизацийСрезПоследних
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.Сотрудник КАК Сотрудник,
    СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.Организация КАК Организация,
    ВЫБОР
    КОГДА СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ОсвобождатьСтавкуЗавершения
    ИНАЧЕ СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ОсвобождатьСтавку
    КОНЕЦ КАК ОсвобождатьСтавки
    ИЗ
    РегистрСведений.СотрудникиОсвободившиеСтавкиВОрганизациях.СрезПоследних(&Период, Организация = &Организация) КАК СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних
    ГДЕ
    ВЫБОР
    КОГДА СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ОсвобождатьСтавкуЗавершения
    ИНАЧЕ СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ОсвобождатьСтавку
    КОНЕЦ) КАК СотрудникиОсовободившиеставки
    ПО (СотрудникиОсовободившиеставки.Сотрудник = РаботникиОрганизацийСрезПоследних.Сотрудник)
    И (СотрудникиОсовободившиеставки.Организация = РаботникиОрганизацийСрезПоследних.Организация)
    ГДЕ
    ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостоянияЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния
    КОНЕЦ <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
    И РаботникиОрганизацийСрезПоследних.Сотрудник В
    (ВЫБРАТЬ
    УжеДейсвуетЗамещение.Замещаемый
    ИЗ
    УжеДейсвуетЗамещение КАК УжеДейсвуетЗамещение)

    СГРУППИРОВАТЬ ПО
    ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизацииЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации
    КОНЕЦ,
    ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА РаботникиОрганизацийСрезПоследних.ДолжностьЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.Должность
    КОНЕЦ
    ;

    X
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ШтатноеРасписаниеОрганизаций.ПодразделениеОрганизации.Владелец КАК Организация,
    ШтатноеРасписаниеОрганизаций.КоличествоСтавок КАК КоличествоСтавок,
    ШтатноеРасписаниеОрганизаций.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
    РаботникиОрганизацийСрезПоследних.Сотрудник,
    ШтатноеРасписаниеОрганизаций.Должность КАК Должность,
    ЕСТЬNULL(ЗанятыеШтатныеЕдиницыОрганизаций.КоличествоСтавокОстаток, 0) - ЕСТЬNULL(ОсворбожденныеСтавки.ОсвобожденныхСтавок, 0) - ЕСТЬNULL(ВременноЗанятые.ЗамещаемыхСтавок, 0) КАК ЗанятоСтавок,
    ШтатноеРасписаниеОрганизаций.КоличествоСтавок - (ЕСТЬNULL(ЗанятыеШтатныеЕдиницыОрганизаций.КоличествоСтавокОстаток, 0) - ЕСТЬNULL(ВременноЗанятые.ЗамещаемыхСтавок, 0) - ЕСТЬNULL(ОсворбожденныеСтавки.ОсвобожденныхСтавок, 0)) КАК Вакантно,
    ШтатноеРасписаниеОрганизаций.МаксимальнаяТарифнаяСтавка,
    ШтатноеРасписаниеОрганизаций.Период,
    РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния,
    ЕСТЬNULL(ОсворбожденныеСтавки.ОсвобожденныхСтавок, 0) КАК ВременноСвободные,
    ЕСТЬNULL(ВременноЗанятые.ЗамещаемыхСтавок, 0) КАК ВременноЗанятые
    ПОМЕСТИТЬ ВтПромежуточная
    ИЗ
    РегистрСведений.ШтатноеРасписаниеОрганизаций.СрезПоследних(
    &Период,
    Организация = &Организация
    И ПодразделениеОрганизации В (&ОтборПодразделение)) КАК ШтатноеРасписаниеОрганизаций
    ЛЕВОЕ СОЕДИНЕНИЕ ОсворбожденныеСтавки КАК ОсворбожденныеСтавки
    ПО ШтатноеРасписаниеОрганизаций.Должность = ОсворбожденныеСтавки.Должность
    И ШтатноеРасписаниеОрганизаций.ПодразделениеОрганизации = ОсворбожденныеСтавки.ПодразделениеОрганизации
    ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗанятыеШтатныеЕдиницыОрганизаций.Остатки(ДОБАВИТЬКДАТЕ(&Период, СЕКУНДА, 1), ПодразделениеОрганизации В (&ОтборПодразделение)) КАК ЗанятыеШтатныеЕдиницыОрганизаций
    ПО ШтатноеРасписаниеОрганизаций.Должность = ЗанятыеШтатныеЕдиницыОрганизаций.Должность
    И ШтатноеРасписаниеОрганизаций.ПодразделениеОрганизации = ЗанятыеШтатныеЕдиницыОрганизаций.ПодразделениеОрганизации
    ЛЕВОЕ СОЕДИНЕНИЕ ВременноЗанятые КАК ВременноЗанятые
    ПО ШтатноеРасписаниеОрганизаций.Должность = ВременноЗанятые.Должность
    И ШтатноеРасписаниеОрганизаций.ПодразделениеОрганизации = ВременноЗанятые.ПодразделениеОрганизации
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(
    &Период,
    Организация = &Организация
    И ПодразделениеОрганизации В (&ОтборПодразделение)) КАК РаботникиОрганизацийСрезПоследних
    ПО ШтатноеРасписаниеОрганизаций.Организация = РаботникиОрганизацийСрезПоследних.Организация
    И ШтатноеРасписаниеОрганизаций.ПодразделениеОрганизации = РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации
    И ШтатноеРасписаниеОрганизаций.Должность = РаботникиОрганизацийСрезПоследних.Должность
    ГДЕ
    (ШтатноеРасписаниеОрганизаций.КоличествоСтавок <> 0
    ИЛИ ЗанятыеШтатныеЕдиницыОрганизаций.КоличествоСтавокОстаток <> 0)
    ;

    X
    ВЫБРАТЬ
    ВтПромежуточная.Организация,
    ВтПромежуточная.ПодразделениеОрганизации,
    ЕСТЬNULL(ВтПромежуточная.Вакантно, ВтПромежуточная.Сотрудник) КАК Сотрудник,
    ВтПромежуточная.Должность,
    ВтПромежуточная.КоличествоСтавок,
    ВтПромежуточная.ЗанятоСтавок,
    ВтПромежуточная.Вакантно,
    ВтПромежуточная.МаксимальнаяТарифнаяСтавка КАК МаксимальнаяТарифнаяСтавка,
    ВтПромежуточная.Период,
    ВтПромежуточная.ВременноСвободные,
    ВтПромежуточная.ПричинаИзмененияСостояния
    ИЗ
    ВтПромежуточная КАК ВтПромежуточная

    УПОРЯДОЧИТЬ ПО
    МаксимальнаяТарифнаяСтавка УБЫВ
```

Тоесть у меня цель -чтобы в запросе выводились строго вакансии, которые есть в штатном расписании и если есть вакантное место, то выводим только название должности без сотрудника, но если вакантных ставок нет - то выводим сотрудника, который соответственно занимает эту ставку. Задача усложняетя тем, что нужно вывести работающийх сотрудников, но если поставит условия на рабоающих в последней ВТ, то половина записей не выводится, поскольку при увольнении вакансия освобождается.
Попробовал такую конструкцию для вывода сотрудника ЕСТЬNULL(ВтПромежуточная.Вакантно, ВтПромежуточная.Сотрудник) - так вместо нулевых значений выводит цифры (сколько вакантно).
Как правильно соединить штатку и работников?
---
Manticor, В ЗУПЕ есть отчет "Штатная расстановка организаций" - может быть там найдется что-то интересное.
---
Здесь надо использовать объединение ,
1) получил список занятых сотрудников, должностей
2) получил список всех должностей
3) вложенный , соединение LEFT JOIN 2 запроса и 1 по полю должность, далее перешел на верхний уровень фильтрация по полю сотрудник есть нуль - это получил вакантные должности
4) запрос это объединение UNION 3 запроса и 1 запроса
---
В общем запрос сделал так:

```1c
    ВЫБРАТЬ
    юмВременныеЗамещенияСрезПоследних.Замещаемый КАК Замещаемый,
    юмВременныеЗамещенияСрезПоследних.Сотрудник
    ПОМЕСТИТЬ УжеДейсвуетЗамещение
    ИЗ
    РегистрСведений.юмВременныеЗамещения.СрезПоследних(
    &Период,
    Организация = &ОтборОрганизация
    И ПодразделениеОрганизации В (&ОтборПодразделение)) КАК юмВременныеЗамещенияСрезПоследних
    ГДЕ
    ВЫБОР
    КОГДА юмВременныеЗамещенияСрезПоследних.ДатаОкончания <> ДАТАВРЕМЯ(1, 1, 1)
    ТОГДА юмВременныеЗамещенияСрезПоследних.ДатаОкончания >= &Период
    ИНАЧЕ ИСТИНА
    КОНЕЦ

    ИНДЕКСИРОВАТЬ ПО
    Замещаемый
    ;

    X
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизацииЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации
    КОНЕЦ КАК ПодразделениеОрганизации,
    ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА РаботникиОрганизацийСрезПоследних.ДолжностьЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.Должность
    КОНЕЦ КАК Должность,
    СУММА(ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА РаботникиОрганизацийСрезПоследних.ЗанимаемыхСтавокЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.ЗанимаемыхСтавок
    КОНЕЦ) КАК ОсвобожденныхСтавок
    ПОМЕСТИТЬ ОсворбожденныеСтавки
    ИЗ
    РегистрСведений.РаботникиОрганизаций.СрезПоследних(
    &Период,
    Организация = &ОтборОрганизация
    И ПодразделениеОрганизации В (&ОтборПодразделение)) КАК РаботникиОрганизацийСрезПоследних
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.Сотрудник КАК Сотрудник,
    СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.Организация КАК Организация,
    ВЫБОР
    КОГДА СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ОсвобождатьСтавкуЗавершения
    ИНАЧЕ СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ОсвобождатьСтавку
    КОНЕЦ КАК ОсвобождатьСтавки
    ИЗ
    РегистрСведений.СотрудникиОсвободившиеСтавкиВОрганизациях.СрезПоследних(&Период, Организация = &ОтборОрганизация) КАК СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних
    ГДЕ
    ВЫБОР
    КОГДА СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ОсвобождатьСтавкуЗавершения
    ИНАЧЕ СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ОсвобождатьСтавку
    КОНЕЦ) КАК СотрудникиОсовободившиеставки
    ПО (СотрудникиОсовободившиеставки.Сотрудник = РаботникиОрганизацийСрезПоследних.Сотрудник)
    И (СотрудникиОсовободившиеставки.Организация = РаботникиОрганизацийСрезПоследних.Организация)
    ГДЕ
    ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостоянияЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния
    КОНЕЦ <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
    И НЕ РаботникиОрганизацийСрезПоследних.Сотрудник В
    (ВЫБРАТЬ
    УжеДейсвуетЗамещение.Замещаемый
    ИЗ
    УжеДейсвуетЗамещение КАК УжеДейсвуетЗамещение)

    СГРУППИРОВАТЬ ПО
    ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизацииЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации
    КОНЕЦ,
    ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА РаботникиОрганизацийСрезПоследних.ДолжностьЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.Должность
    КОНЕЦ
    ;

    X
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизацииЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации
    КОНЕЦ КАК ПодразделениеОрганизации,
    ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА РаботникиОрганизацийСрезПоследних.ДолжностьЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.Должность
    КОНЕЦ КАК Должность,
    СУММА(ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА РаботникиОрганизацийСрезПоследних.ЗанимаемыхСтавокЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.ЗанимаемыхСтавок
    КОНЕЦ) КАК ЗамещаемыхСтавок,
    РаботникиОрганизацийСрезПоследних.Сотрудник,
    РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния,
    0 КАК КолВремЗанятые
    ПОМЕСТИТЬ ВременноЗанятые
    ИЗ
    РегистрСведений.РаботникиОрганизаций.СрезПоследних(
    &Период,
    Организация = &ОтборОрганизация
    И ПодразделениеОрганизации В (&ОтборПодразделение)) КАК РаботникиОрганизацийСрезПоследних
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.Сотрудник КАК Сотрудник,
    СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.Организация КАК Организация,
    ВЫБОР
    КОГДА СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ОсвобождатьСтавкуЗавершения
    ИНАЧЕ СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ОсвобождатьСтавку
    КОНЕЦ КАК ОсвобождатьСтавки
    ИЗ
    РегистрСведений.СотрудникиОсвободившиеСтавкиВОрганизациях.СрезПоследних(&Период, Организация = &ОтборОрганизация) КАК СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних
    ГДЕ
    ВЫБОР
    КОГДА СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ОсвобождатьСтавкуЗавершения
    ИНАЧЕ СотрудникиОсвободившиеСтавкиВОрганизацияхСрезПоследних.ОсвобождатьСтавку
    КОНЕЦ) КАК СотрудникиОсовободившиеставки
    ПО (СотрудникиОсовободившиеставки.Сотрудник = РаботникиОрганизацийСрезПоследних.Сотрудник)
    И (СотрудникиОсовободившиеставки.Организация = РаботникиОрганизацийСрезПоследних.Организация)
    ГДЕ
    ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостоянияЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния
    КОНЕЦ <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
    И РаботникиОрганизацийСрезПоследних.Сотрудник В
    (ВЫБРАТЬ
    УжеДейсвуетЗамещение.Замещаемый
    ИЗ
    УжеДейсвуетЗамещение КАК УжеДейсвуетЗамещение)

    СГРУППИРОВАТЬ ПО
    ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизацииЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации
    КОНЕЦ,
    ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА РаботникиОрганизацийСрезПоследних.ДолжностьЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.Должность
    КОНЕЦ,
    РаботникиОрганизацийСрезПоследних.Сотрудник,
    РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния
    ;

    X
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ШтатноеРасписаниеОрганизаций.ПодразделениеОрганизации.Владелец КАК Организация,
    ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.Сотрудник В (ВременноЗанятые.Сотрудник)
    ТОГДА ВременноЗанятые.КолВремЗанятые
    ИНАЧЕ ШтатноеРасписаниеОрганизаций.КоличествоСтавок
    КОНЕЦ КАК КоличествоСтавок,
    ЕСТЬNULL(ЗанятыеШтатныеЕдиницыОрганизаций.КоличествоСтавокОстаток, 0) - ЕСТЬNULL(ОсворбожденныеСтавки.ОсвобожденныхСтавок, 0) - ЕСТЬNULL(ВременноЗанятые.ЗамещаемыхСтавок, 0) КАК ЗанятоСтавок,
    ШтатноеРасписаниеОрганизаций.КоличествоСтавок - (ЕСТЬNULL(ЗанятыеШтатныеЕдиницыОрганизаций.КоличествоСтавокОстаток, 0) - ЕСТЬNULL(ВременноЗанятые.ЗамещаемыхСтавок, 0) - ЕСТЬNULL(ОсворбожденныеСтавки.ОсвобожденныхСтавок, 0)) КАК Вакантно,
    ШтатноеРасписаниеОрганизаций.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
    ШтатноеРасписаниеОрганизаций.Должность КАК Должность,
    ШтатноеРасписаниеОрганизаций.МаксимальнаяТарифнаяСтавка,
    ШтатноеРасписаниеОрганизаций.Период,
    ЕСТЬNULL(ОсворбожденныеСтавки.ОсвобожденныхСтавок, 0) КАК ВременноСвободные,
    ЕСТЬNULL(ВременноЗанятые.ЗамещаемыхСтавок, 0) КАК ВременноЗанятые,
    РаботникиОрганизацийСрезПоследних.Сотрудник,
    РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния
    ПОМЕСТИТЬ Вт_ВседолжностиИРаботники
    ИЗ
    РегистрСведений.ШтатноеРасписаниеОрганизаций.СрезПоследних(
    &Период,
    Организация = &ОтборОрганизация
    И ПодразделениеОрганизации В (&ОтборПодразделение)) КАК ШтатноеРасписаниеОрганизаций
    ЛЕВОЕ СОЕДИНЕНИЕ ОсворбожденныеСтавки КАК ОсворбожденныеСтавки
    ПО ШтатноеРасписаниеОрганизаций.Должность = ОсворбожденныеСтавки.Должность
    И ШтатноеРасписаниеОрганизаций.ПодразделениеОрганизации = ОсворбожденныеСтавки.ПодразделениеОрганизации
    ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗанятыеШтатныеЕдиницыОрганизаций.Остатки(ДОБАВИТЬКДАТЕ(&Период, СЕКУНДА, 1), ПодразделениеОрганизации В (&ОтборПодразделение)) КАК ЗанятыеШтатныеЕдиницыОрганизаций
    ПО ШтатноеРасписаниеОрганизаций.Должность = ЗанятыеШтатныеЕдиницыОрганизаций.Должность
    И ШтатноеРасписаниеОрганизаций.ПодразделениеОрганизации = ЗанятыеШтатныеЕдиницыОрганизаций.ПодразделениеОрганизации
    ЛЕВОЕ СОЕДИНЕНИЕ ВременноЗанятые КАК ВременноЗанятые
    ПО ШтатноеРасписаниеОрганизаций.Должность = ВременноЗанятые.Должность
    И ШтатноеРасписаниеОрганизаций.ПодразделениеОрганизации = ВременноЗанятые.ПодразделениеОрганизации
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(
    &Период,
    Организация = &ОтборОрганизация
    И ПодразделениеОрганизации В (&ОтборПодразделение)) КАК РаботникиОрганизацийСрезПоследних
    ПО ШтатноеРасписаниеОрганизаций.ПодразделениеОрганизации = РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации
    И ШтатноеРасписаниеОрганизаций.Организация = РаботникиОрганизацийСрезПоследних.Организация
    И ШтатноеРасписаниеОрганизаций.Должность = РаботникиОрганизацийСрезПоследних.Должность
    ГДЕ
    (ШтатноеРасписаниеОрганизаций.КоличествоСтавок <> 0
    ИЛИ ЗанятыеШтатныеЕдиницыОрганизаций.КоличествоСтавокОстаток <> 0)
    И ВЫБОР
    КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &Период
    ТОГДА РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостоянияЗавершения
    ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния
    КОНЕЦ <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
    ;

    X
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ШтатноеРасписаниеОрганизаций.ПодразделениеОрганизации.Владелец КАК Организация,
    ШтатноеРасписаниеОрганизаций.КоличествоСтавок КАК КоличествоСтавок,
    ЕСТЬNULL(ЗанятыеШтатныеЕдиницыОрганизаций.КоличествоСтавокОстаток, 0) - ЕСТЬNULL(ОсворбожденныеСтавки.ОсвобожденныхСтавок, 0) - ЕСТЬNULL(ВременноЗанятые.ЗамещаемыхСтавок, 0) КАК ЗанятоСтавок,
    ШтатноеРасписаниеОрганизаций.КоличествоСтавок - (ЕСТЬNULL(ЗанятыеШтатныеЕдиницыОрганизаций.КоличествоСтавокОстаток, 0) - ЕСТЬNULL(ВременноЗанятые.ЗамещаемыхСтавок, 0) - ЕСТЬNULL(ОсворбожденныеСтавки.ОсвобожденныхСтавок, 0)) КАК Вакантно,
    ШтатноеРасписаниеОрганизаций.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
    ШтатноеРасписаниеОрганизаций.Должность КАК Должность,
    ШтатноеРасписаниеОрганизаций.МаксимальнаяТарифнаяСтавка,
    ШтатноеРасписаниеОрганизаций.Период,
    ЕСТЬNULL(ОсворбожденныеСтавки.ОсвобожденныхСтавок, 0) КАК ВременноСвободные,
    ЕСТЬNULL(ВременноЗанятые.ЗамещаемыхСтавок, 0) КАК ВременноЗанятые,
    " КАК Сотрудник,
    " КАК ПричинаИзмененияСостояния
    ПОМЕСТИТЬ Вт_СвободныеСтавки
    ИЗ
    РегистрСведений.ШтатноеРасписаниеОрганизаций.СрезПоследних(
    &Период,
    Организация = &ОтборОрганизация
    И ПодразделениеОрганизации В (&ОтборПодразделение)) КАК ШтатноеРасписаниеОрганизаций
    ЛЕВОЕ СОЕДИНЕНИЕ ОсворбожденныеСтавки КАК ОсворбожденныеСтавки
    ПО ШтатноеРасписаниеОрганизаций.Должность = ОсворбожденныеСтавки.Должность
    И ШтатноеРасписаниеОрганизаций.ПодразделениеОрганизации = ОсворбожденныеСтавки.ПодразделениеОрганизации
    ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗанятыеШтатныеЕдиницыОрганизаций.Остатки(ДОБАВИТЬКДАТЕ(&Период, СЕКУНДА, 1), ПодразделениеОрганизации В (&ОтборПодразделение)) КАК ЗанятыеШтатныеЕдиницыОрганизаций
    ПО ШтатноеРасписаниеОрганизаций.Должность = ЗанятыеШтатныеЕдиницыОрганизаций.Должность
    И ШтатноеРасписаниеОрганизаций.ПодразделениеОрганизации = ЗанятыеШтатныеЕдиницыОрганизаций.ПодразделениеОрганизации
    ЛЕВОЕ СОЕДИНЕНИЕ ВременноЗанятые КАК ВременноЗанятые
    ПО ШтатноеРасписаниеОрганизаций.Должность = ВременноЗанятые.Должность
    И ШтатноеРасписаниеОрганизаций.ПодразделениеОрганизации = ВременноЗанятые.ПодразделениеОрганизации
    ГДЕ
    (ШтатноеРасписаниеОрганизаций.КоличествоСтавок <> 0
    ИЛИ ЗанятыеШтатныеЕдиницыОрганизаций.КоличествоСтавокОстаток <> 0)
    ;

    X
    ВЫБРАТЬ
    Вт_ВседолжностиИРаботники.Организация,
    Вт_ВседолжностиИРаботники.КоличествоСтавок КАК КоличествоСтавок,
    Вт_ВседолжностиИРаботники.ЗанятоСтавок,
    Вт_ВседолжностиИРаботники.Вакантно,
    Вт_ВседолжностиИРаботники.ПодразделениеОрганизации,
    Вт_ВседолжностиИРаботники.Должность,
    Вт_ВседолжностиИРаботники.МаксимальнаяТарифнаяСтавка,
    Вт_ВседолжностиИРаботники.Период,
    Вт_ВседолжностиИРаботники.ВременноСвободные,
    Вт_ВседолжностиИРаботники.ВременноЗанятые,
    ВЫБОР
    КОГДА Вт_ВседолжностиИРаботники.ЗанятоСтавок = 0
    ТОГДА NULL
    ИНАЧЕ Вт_ВседолжностиИРаботники.Сотрудник
    КОНЕЦ КАК Сотрудник,
    Вт_ВседолжностиИРаботники.ПричинаИзмененияСостояния
    ИЗ
    Вт_ВседолжностиИРаботники КАК Вт_ВседолжностиИРаботники
    ГДЕ
    Вт_ВседолжностиИРаботники.ПодразделениеОрганизации В(&ОтборПодразделение)
    И Вт_ВседолжностиИРаботники.ЗанятоСтавок > 0

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

    ВЫБРАТЬ
    Вт_СвободныеСтавки.Организация,
    Вт_СвободныеСтавки.КоличествоСтавок,
    Вт_СвободныеСтавки.ЗанятоСтавок,
    Вт_СвободныеСтавки.Вакантно,
    Вт_СвободныеСтавки.ПодразделениеОрганизации,
    Вт_СвободныеСтавки.Должность,
    Вт_СвободныеСтавки.МаксимальнаяТарифнаяСтавка,
    Вт_СвободныеСтавки.Период,
    Вт_СвободныеСтавки.ВременноСвободные,
    Вт_СвободныеСтавки.ВременноЗанятые,
    ВЫБОР
    КОГДА Вт_СвободныеСтавки.ЗанятоСтавок = 0
    ТОГДА NULL
    ИНАЧЕ Вт_СвободныеСтавки.Сотрудник
    КОНЕЦ,
    Вт_СвободныеСтавки.ПричинаИзмененияСостояния
    ИЗ
    Вт_СвободныеСтавки КАК Вт_СвободныеСтавки
    ГДЕ
    Вт_СвободныеСтавки.ПодразделениеОрганизации В(&ОтборПодразделение)
    И (Вт_СвободныеСтавки.ЗанятоСтавок = 0
    ИЛИ Вт_СвободныеСтавки.Вакантно > 0)
```