Нужно сравнить два регистра. Нужно найти те документы, которые не сделали движений по регистру "использование отпуска". Т.е. заполнены с ошибками, заполнили не всех сотрудников. В регистре основных начислений эти записи есть, поскольку отпуск оплачен. Запрос я написал. Две таблицы, которые затем сравниваются. Но не могу придумать, как мне написать, чтобы эти две таблицы сравнились так, чтобы запрос мне выдал только не совпадающие строки. Т.е. строки которые есть в начисления, но нет в используемых отпусках.

```1c
    ВЫБРАТЬ
    ИспользованиеЕжегодныхОтпусковРаботников.Сотрудник,
    ИспользованиеЕжегодныхОтпусковРаботников.ИспользованоОсновного,
    ИспользованиеЕжегодныхОтпусковРаботников.Период,
    ИспользованиеЕжегодныхОтпусковРаботников.Регистратор,
    ИспользованиеЕжегодныхОтпусковРаботников.ВидОтпуска
    ПОМЕСТИТЬ ИспользованыеОтпуска
    ИЗ
    РегистрНакопления.ИспользованиеЕжегодныхОтпусковРаботников КАК ИспользованиеЕжегодныхОтпусковРаботников
    ГДЕ
    ИспользованиеЕжегодныхОтпусковРаботников.Сотрудник = &Сотрудник
    И ИспользованиеЕжегодныхОтпусковРаботников.Период >= &Период
    И ИспользованиеЕжегодныхОтпусковРаботников.ВидОтпуска = &ВидОтпуска
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ОсновныеНачисленияРаботниковОрганизаций.Сотрудник,
    ОсновныеНачисленияРаботниковОрганизаций.КалендарныеДни,
    ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияНачало,
    ОсновныеНачисленияРаботниковОрганизаций.ДокументОснование,
    ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета,
    ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета.ВидОтпуска
    ПОМЕСТИТЬ Начисления
    ИЗ
    РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
    ГДЕ
    ОсновныеНачисленияРаботниковОрганизаций.Сотрудник = &Сотрудник
    И ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета.ВидОтпуска = &ВидОтпуска
    И ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияНачало >= &Период
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ИспользованыеОтпуска.Сотрудник,
    ИспользованыеОтпуска.ИспользованоОсновного,
    Начисления.ДокументОснование,
    ИспользованыеОтпуска.Регистратор
    ИЗ
    ИспользованыеОтпуска КАК ИспользованыеОтпуска
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Начисления КАК Начисления
    ПО ИспользованыеОтпуска.Сотрудник = Начисления.Сотрудник
    И ИспользованыеОтпуска.Период = Начисления.ПериодДействияНачало
```
---
https://shra.ru/2017/09/sql-join-v-primerakh-s-opisaniem/

```1c
    SEL ECT p.id, p.name `Имя сотрудника`, ps.id `pos.id`, ps.name `Должность`
    FR OM `persons` p
    RIGHT OUTER JOIN `positions` ps ON ps.id = p.post_id
    WHERE p.id is NULL
```

Т.е. у вас в самом конце не хватает условия ГДЕ поле ЕСТЬ NULL
---
Левое соединение
где поле ЕСТЬ NULL
---
Написал так:

```1c
    ВЫБРАТЬ
    ИспользованиеЕжегодныхОтпусковРаботников.Сотрудник,
    ИспользованиеЕжегодныхОтпусковРаботников.ИспользованоОсновного,
    ИспользованиеЕжегодныхОтпусковРаботников.Период,
    ИспользованиеЕжегодныхОтпусковРаботников.Регистратор,
    ИспользованиеЕжегодныхОтпусковРаботников.ВидОтпуска
    ПОМЕСТИТЬ ИспользованыеОтпуска
    ИЗ
    РегистрНакопления.ИспользованиеЕжегодныхОтпусковРаботников КАК ИспользованиеЕжегодныхОтпусковРаботников
    ГДЕ
    ИспользованиеЕжегодныхОтпусковРаботников.Сотрудник = &Сотрудник
    И ИспользованиеЕжегодныхОтпусковРаботников.Период >= &Период
    И ИспользованиеЕжегодныхОтпусковРаботников.ВидОтпуска = &ВидОтпуска
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ОсновныеНачисленияРаботниковОрганизаций.Сотрудник,
    ОсновныеНачисленияРаботниковОрганизаций.КалендарныеДни,
    ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияНачало,
    ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета,
    ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета.ВидОтпуска,
    ОсновныеНачисленияРаботниковОрганизаций.Регистратор,
    ОсновныеНачисленияРаботниковОрганизаций.Регистратор.ПриказОтпускОрганизации
    ПОМЕСТИТЬ Начисления
    ИЗ
    РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
    ГДЕ
    ОсновныеНачисленияРаботниковОрганизаций.Сотрудник = &Сотрудник
    И ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета.ВидОтпуска = &ВидОтпуска
    И ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияНачало >= &Период
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ЕСТЬNULL (ИспользованыеОтпуска.Сотрудник,Начисления.Сотрудник) КАК Сотрдуник,
    ЕСТЬNULL (ИспользованыеОтпуска.ИспользованоОсновного,Начисления.КалендарныеДни)ИспользованоДней,
    ЕСТЬNULL (ИспользованыеОтпуска.Регистратор,Начисления.РегистраторПриказОтпускОрганизации) КАК Регистртор

    ИЗ
    ИспользованыеОтпуска КАК ИспользованыеОтпуска
    ПРАВОЕ СОЕДИНЕНИЕ Начисления КАК Начисления
    ПО ИспользованыеОтпуска.Сотрудник = Начисления.Сотрудник
    И ИспользованыеОтпуска.Период = Начисления.ПериодДействияНачало
```

Теперь я получаю все строки, но одинаковые в обоих таблицах не исключаются.
---
https://shra.ru/2017/09/sql-join-v-primerakh-s-opisaniem/

```1c
    SEL ECT p.id, p.name `Имя сотрудника`, ps.id `pos.id`, ps.name `Должность`
    FR OM `persons` p
    RIGHT OUTER JOIN `positions` ps ON ps.id = p.post_id
    WHERE p.id is NULL
```

Т.е. у вас в самом конце не хватает условия ГДЕ поле ЕСТЬ NULL
---
Спасибо. Понял.