В запросе проверить, что нет подчиненных документов

1. sam111 03.12.16 12:50 Сейчас в теме
Подскажите пожалуйста, как в запросе выбрать все счета на оплату, у которых нет подчиненных документов?
+
По теме из базы знаний
Найденные решения
13. sam111 20.12.16 16:08 Сейчас в теме
Правильный запрос и работающий

  ВЫБРАТЬ 
Счет.Ссылка КАК Документ,
 Реализация.Ссылка КАК Документ2
ИЗ 
Документ.СчетНаОплатуПокупателю КАК Счет 
Левое соединение 
Документ.РеализацияТоваровУслуг КАК Реализация 
ПО 
Счет.Ссылка = Реализация.Сделка 
где  Реализация.Ссылка Есть NULL 
и  Счет.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
Показать
AnPet; deutsch2008; +2
8. Onwardv 64 20.12.16 14:24 Сейчас в теме
(7) Не, все счета попадут, т.к. левое. Надо "Реализация.Ссылка Есть NULL" выносить в "ГДЕ". Т.е.:
ВЫБРАТЬ 
Счет.Ссылка КАК Документ
 
ИЗ 
Документ.СчетНаОплатуПокупателю КАК Счет 
Левое соединение 
Документ.РеализацияТоваровУслуг КАК Реализация 
ПО 
Счет.Ссылка = Реализация.Сделка 
и Счет.Дата МЕЖДУ &НачалоПериода И &КонецПериода 
ГДЕ  Реализация.Ссылка Есть NULL 
Показать
AnPet; +1
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Fox-trot 157 03.12.16 19:44 Сейчас в теме
(1) а что за конфигурация огласите? хотя возможно речь идет о реквизите ДокументОснование
+
3. aap290680 03.12.16 20:51 Сейчас в теме
Через запрос не получить документы, у которых основание СчетНаОплатуПокупателю (в разных конфигурациях свое наименование). Т.е. надо заранее знать в каких документах искать ссылку на счет. Для оптимального плана запроса я бы собирал с каждого типа документа ссылки на счета, потом в выборке данных по счетам указал условие что ссылка на счет не в ссылках собранных на предыдущих запросах пакета.
+
4. sam111 05.12.16 07:21 Сейчас в теме
Конфигурация УТ. 8.1. Да реквизит ДокументОснование. На основании счета вводятся реализация, планируемое поступление ден средств и ППВ или ПКО. Как их все в запросе просмотреть?
+
5. kasper076 103 05.12.16 07:32 Сейчас в теме
6. sam111 20.12.16 14:07 Сейчас в теме
Решение запрос:
ВЫБРАТЬ
    Счет.Ссылка КАК Документ,
    Реализация.Ссылка как Ссылка2 
ИЗ
    Документ.СчетНаОплатуПокупателю КАК Счет
    Левое соединение
      Документ.РеализацияТоваровУслуг КАК Реализация
        ПО
       Реализация.Сделка.Ссылка = Счет.Ссылка
       и    Реализация.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода

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


Но работает очень долго. Подскажите как оптимизировать?
+
7. tailer2 20.12.16 14:14 Сейчас в теме
ВЫБРАТЬ 
Счет.Ссылка КАК Документ
 
ИЗ 
Документ.СчетНаОплатуПокупателю КАК Счет 
Левое соединение 
Документ.РеализацияТоваровУслуг КАК Реализация 
ПО 
Счет.Ссылка = Реализация.Сделка 
и Счет.Дата МЕЖДУ &НачалоПериода И &КонецПериода 
и Реализация.Ссылка Есть NULL 
Показать

+
8. Onwardv 64 20.12.16 14:24 Сейчас в теме
(7) Не, все счета попадут, т.к. левое. Надо "Реализация.Ссылка Есть NULL" выносить в "ГДЕ". Т.е.:
ВЫБРАТЬ 
Счет.Ссылка КАК Документ
 
ИЗ 
Документ.СчетНаОплатуПокупателю КАК Счет 
Левое соединение 
Документ.РеализацияТоваровУслуг КАК Реализация 
ПО 
Счет.Ссылка = Реализация.Сделка 
и Счет.Дата МЕЖДУ &НачалоПериода И &КонецПериода 
ГДЕ  Реализация.Ссылка Есть NULL 
Показать
AnPet; +1
9. tailer2 20.12.16 14:54 Сейчас в теме
(8) пробовал? или и так знаешь?
+
10. Onwardv 64 20.12.16 15:17 Сейчас в теме
ЛЕВОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ означает, что в результат запроса надо включить комбинации записей из обеих исходных таблиц, которые соответствуют указанному условию. Но, в отличие от внутреннего соединения, в результат запроса надо включить также еще и записи из первого (указанного слева от слова СОЕДИНЕНИЕ) источника, для которых не найдено соответствующих условию записей из второго источника.

Таким образом, в результат запроса будут включены все записи из первого источника; они будут соединены с записями из второго источника при выполнении указанного условия. Строки результата запроса, для которых не найдено соответствующих условию записей из второго источника, будут содержать NULL в полях, формируемых на основании записей из этого источника.

+
11. sam111 20.12.16 15:40 Сейчас в теме
Здорово, моментально работает по времени. Спасибо. А кол-во счетов отличается. Если первый вариант "и Реализация.Ссылка Есть NULL " то 65383 шт. А "ГДЕ Реализация.Ссылка Есть NULL " выводит 65059 шт
+
12. sam111 20.12.16 16:06 Сейчас в теме
Правильный запрос с "ГДЕ Реализация.Ссылка Есть NULL ". Но не работает установка периода почему то.
+
13. sam111 20.12.16 16:08 Сейчас в теме
Правильный запрос и работающий

  ВЫБРАТЬ 
Счет.Ссылка КАК Документ,
 Реализация.Ссылка КАК Документ2
ИЗ 
Документ.СчетНаОплатуПокупателю КАК Счет 
Левое соединение 
Документ.РеализацияТоваровУслуг КАК Реализация 
ПО 
Счет.Ссылка = Реализация.Сделка 
где  Реализация.Ссылка Есть NULL 
и  Счет.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
Показать
AnPet; deutsch2008; +2
14. Onwardv 64 20.12.16 17:17 Сейчас в теме
(Гм. я вроде сообщение № 8 оставил, а его не видно.)

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

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

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


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

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот