Подскажите пожалуйста, как в запросе выбрать все счета на оплату, у которых нет подчиненных документов?
---
Правильный запрос и работающий

```1c
    ВЫБРАТЬ
    Счет.Ссылка КАК Документ,
    Реализация.Ссылка КАК Документ2
    ИЗ
    Документ.СчетНаОплатуПокупателю КАК Счет
    Левое соединение
    Документ.РеализацияТоваровУслуг КАК Реализация
    ПО
    Счет.Ссылка = Реализация.Сделка
    где Реализация.Ссылка Есть NULL
    и Счет.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
```
---
Не, все счета попадут, т.к. левое. Надо "Реализация.Ссылка Есть NULL" выносить в "ГДЕ". Т.е.:

```1c
    ВЫБРАТЬ
    Счет.Ссылка КАК Документ

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

```1c
    ВЫБРАТЬ
    Счет.Ссылка КАК Документ,
    Реализация.Ссылка как Ссылка2
    ИЗ
    Документ.СчетНаОплатуПокупателю КАК Счет
    Левое соединение
    Документ.РеализацияТоваровУслуг КАК Реализация
    ПО
    Реализация.Сделка.Ссылка = Счет.Ссылка
    и Реализация.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода

    ГДЕ
    Счет.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
    и Реализация.Ссылка Есть NULL
```

Но работает очень долго. Подскажите как оптимизировать?
---
```1c
    ВЫБРАТЬ
    Счет.Ссылка КАК Документ

    ИЗ
    Документ.СчетНаОплатуПокупателю КАК Счет
    Левое соединение
    Документ.РеализацияТоваровУслуг КАК Реализация
    ПО
    Счет.Ссылка = Реализация.Сделка
    и Счет.Дата МЕЖДУ &НачалоПериода И &КонецПериода
    и Реализация.Ссылка Есть NULL
```
---
Не, все счета попадут, т.к. левое. Надо "Реализация.Ссылка Есть NULL" выносить в "ГДЕ". Т.е.:

```1c
    ВЫБРАТЬ
    Счет.Ссылка КАК Документ

    ИЗ
    Документ.СчетНаОплатуПокупателю КАК Счет
    Левое соединение
    Документ.РеализацияТоваровУслуг КАК Реализация
    ПО
    Счет.Ссылка = Реализация.Сделка
    и Счет.Дата МЕЖДУ &НачалоПериода И &КонецПериода
    ГДЕ Реализация.Ссылка Есть NULL
```
---
пробовал? или и так знаешь?
---
ЛЕВОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ означает, что в результат запроса надо включить комбинации записей из обеих исходных таблиц, которые соответствуют указанному условию. Но, в отличие от внутреннего соединения, в результат запроса надо включить также еще и записи из первого (указанного слева от слова СОЕДИНЕНИЕ) источника, для которых не найдено соответствующих условию записей из второго источника.

Таким образом, в результат запроса будут включены все записи из первого источника; они будут соединены с записями из второго источника при выполнении указанного условия. Строки результата запроса, для которых не найдено соответствующих условию записей из второго источника, будут содержать NULL в полях, формируемых на основании записей из этого источника.
---
Здорово, моментально работает по времени. Спасибо. А кол-во счетов отличается. Если первый вариант "и Реализация.Ссылка Есть NULL " то 65383 шт. А "ГДЕ Реализация.Ссылка Есть NULL " выводит 65059 шт
---
Правильный запрос с "ГДЕ Реализация.Ссылка Есть NULL ". Но не работает установка периода почему то.
---
Правильный запрос и работающий

```1c
    ВЫБРАТЬ
    Счет.Ссылка КАК Документ,
    Реализация.Ссылка КАК Документ2
    ИЗ
    Документ.СчетНаОплатуПокупателю КАК Счет
    Левое соединение
    Документ.РеализацияТоваровУслуг КАК Реализация
    ПО
    Счет.Ссылка = Реализация.Сделка
    где Реализация.Ссылка Есть NULL
    и Счет.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
```
---
(Гм. я вроде сообщение № 8 оставил, а его не видно.)

Ещё раз:
 в результат запроса будут включены все записи из первого источника

т.е., чтобы работал отбор по периоду, нужно условие на дату из условия соединения тоже выносить в "ГДЕ":

```1c
    ВЫБРАТЬ
    Счет.Ссылка КАК Документ
    ИЗ
    Документ.СчетНаОплатуПокупателю КАК Счет
    Левое соединение
    Документ.РеализацияТоваровУслуг КАК Реализация
    ПО
    Счет.Ссылка = Реализация.Сделка
    ГДЕ Счет.Дата МЕЖДУ &НачалоПериода И &КонецПериода
    и Реализация.Ссылка Есть NULL
```

Ой. Уже есть в самом начале темы, в сообщении 13(Правильный запрос и работающий ). И моё - 8-е там же. :) Сразу не заметил.