Здравствуйте, стояла задача на создание отчета, который выводил бы заключенные договора МОЛ и сотрудников, у которых они не заключены.
Чтобы узнать, какая должность имеет материальную ответственность, есть документ "Назначение должностей мол", в котором нужно выбрать подразделение и должности из этих подразделений, у которых есть МОЛ.
Далее составляется договор МОЛ уже именно на сотрудника, отчет делаю вот таким запросом.

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

Проблема состоит в том, что если сотрудник перевелся в другое подразделение, то он исчезает из предыдущего МОЛ (в отчете), что верно, но при создании нового МОЛ (на новое подразделение) на сотрудников данного подразделения, то они не выводятся в отчете, а только тот сотрудник, который перевёлся, хотя на него (в новом подразделении), ещё не составлен ни договор, ни назначение должности.
---
Период <= &Дата
---
В РегистрСведений.СЭ_ДоговорыМОЛ нужно что бы было подразделение и по нему соединиться.
---
могли бы написать, как именно это должно выглядеть?
---
```1c
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СЭ_ДоговорыМОЛ КАК СЭ_ДоговорыМОЛ
    ПО (СЭ_ДоговорыМОЛ.Сотрудник = КадроваяИсторияСотрудниковСрезПоследних.Сотрудник) и (СЭ_ДоговорыМОЛ.Подразделение = КадроваяИсторияСотрудниковСрезПоследних.Подразделение)
```
---
всё равно не выводит нужных
---
Не вижу больше ошибок в запросе
---
заметил, что если вписывать сотрудника в договор мол, то он исчезает из отчета, а если нет, то есть
---
Из-за условия ГДЕ
    (СЭ_ДоговорыМОЛ.Период <= &Дата
            ИЛИ СЭ_ДоговорыМОЛ.Период ЕСТЬ NULL)
---
странно, как тогда других выводит
---
Период <= &Дата
---
условие ГДЕ надо перенести в связь по левому соединению
---
в какое из?
---
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СЭ_ДоговорыМОЛ КАК СЭ_ДоговорыМОЛ
---
да, вы правы