В запросе проверить, что нет подчиненных документов
По теме из базы знаний
- Перенос данных и обмен из УТ 10.3 в УТ 11 / КА 2 / ERP 2. Переносятся документы, справочники и остатки
- Как отбирать и проверять менеджеров
- Решение некоторых задач с помощью "Отладчика запросов"
- Быстрый фронт в базе размером 6.8 терабайт – наши стандарты при разработке и рефакторинге запросов
- Оригиналы документов
Найденные решения
Правильный запрос и работающий
ВЫБРАТЬ
Счет.Ссылка КАК Документ,
Реализация.Ссылка КАК Документ2
ИЗ
Документ.СчетНаОплатуПокупателю КАК Счет
Левое соединение
Документ.РеализацияТоваровУслуг КАК Реализация
ПО
Счет.Ссылка = Реализация.Сделка
где Реализация.Ссылка Есть NULL
и Счет.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
Показать
(7) Не, все счета попадут, т.к. левое. Надо "Реализация.Ссылка Есть NULL" выносить в "ГДЕ". Т.е.:
ВЫБРАТЬ
Счет.Ссылка КАК Документ
ИЗ
Документ.СчетНаОплатуПокупателю КАК Счет
Левое соединение
Документ.РеализацияТоваровУслуг КАК Реализация
ПО
Счет.Ссылка = Реализация.Сделка
и Счет.Дата МЕЖДУ &НачалоПериода И &КонецПериода
ГДЕ Реализация.Ссылка Есть NULL
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Через запрос не получить документы, у которых основание СчетНаОплатуПокупателю (в разных конфигурациях свое наименование). Т.е. надо заранее знать в каких документах искать ссылку на счет. Для оптимального плана запроса я бы собирал с каждого типа документа ссылки на счета, потом в выборке данных по счетам указал условие что ссылка на счет не в ссылках собранных на предыдущих запросах пакета.
Решение запрос:
Но работает очень долго. Подскажите как оптимизировать?
ВЫБРАТЬ
Счет.Ссылка КАК Документ,
Реализация.Ссылка как Ссылка2
ИЗ
Документ.СчетНаОплатуПокупателю КАК Счет
Левое соединение
Документ.РеализацияТоваровУслуг КАК Реализация
ПО
Реализация.Сделка.Ссылка = Счет.Ссылка
и Реализация.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
ГДЕ
Счет.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
и Реализация.Ссылка Есть NULL
ПоказатьНо работает очень долго. Подскажите как оптимизировать?
ВЫБРАТЬ
Счет.Ссылка КАК Документ
ИЗ
Документ.СчетНаОплатуПокупателю КАК Счет
Левое соединение
Документ.РеализацияТоваровУслуг КАК Реализация
ПО
Счет.Ссылка = Реализация.Сделка
и Счет.Дата МЕЖДУ &НачалоПериода И &КонецПериода
и Реализация.Ссылка Есть NULL
Показать
(7) Не, все счета попадут, т.к. левое. Надо "Реализация.Ссылка Есть NULL" выносить в "ГДЕ". Т.е.:
ВЫБРАТЬ
Счет.Ссылка КАК Документ
ИЗ
Документ.СчетНаОплатуПокупателю КАК Счет
Левое соединение
Документ.РеализацияТоваровУслуг КАК Реализация
ПО
Счет.Ссылка = Реализация.Сделка
и Счет.Дата МЕЖДУ &НачалоПериода И &КонецПериода
ГДЕ Реализация.Ссылка Есть NULL
Показать
ЛЕВОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ означает, что в результат запроса надо включить комбинации записей из обеих исходных таблиц, которые соответствуют указанному условию. Но, в отличие от внутреннего соединения, в результат запроса надо включить также еще и записи из первого (указанного слева от слова СОЕДИНЕНИЕ) источника, для которых не найдено соответствующих условию записей из второго источника.
Таким образом, в результат запроса будут включены все записи из первого источника; они будут соединены с записями из второго источника при выполнении указанного условия. Строки результата запроса, для которых не найдено соответствующих условию записей из второго источника, будут содержать NULL в полях, формируемых на основании записей из этого источника.
Таким образом, в результат запроса будут включены все записи из первого источника; они будут соединены с записями из второго источника при выполнении указанного условия. Строки результата запроса, для которых не найдено соответствующих условию записей из второго источника, будут содержать NULL в полях, формируемых на основании записей из этого источника.
Правильный запрос и работающий
ВЫБРАТЬ
Счет.Ссылка КАК Документ,
Реализация.Ссылка КАК Документ2
ИЗ
Документ.СчетНаОплатуПокупателю КАК Счет
Левое соединение
Документ.РеализацияТоваровУслуг КАК Реализация
ПО
Счет.Ссылка = Реализация.Сделка
где Реализация.Ссылка Есть NULL
и Счет.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
Показать
(Гм. я вроде сообщение № 8 оставил, а его не видно.)
Ещё раз:
в результат запроса будут включены все записи из первого источника
т.е., чтобы работал отбор по периоду, нужно условие на дату из условия соединения тоже выносить в "ГДЕ":
Ой. Уже есть в самом начале темы, в сообщении 13(Правильный запрос и работающий ). И моё - 8-е там же. :) Сразу не заметил.
Ещё раз:
в результат запроса будут включены все записи из первого источника
т.е., чтобы работал отбор по периоду, нужно условие на дату из условия соединения тоже выносить в "ГДЕ":
ВЫБРАТЬ
Счет.Ссылка КАК Документ
ИЗ
Документ.СчетНаОплатуПокупателю КАК Счет
Левое соединение
Документ.РеализацияТоваровУслуг КАК Реализация
ПО
Счет.Ссылка = Реализация.Сделка
ГДЕ Счет.Дата МЕЖДУ &НачалоПериода И &КонецПериода
и Реализация.Ссылка Есть NULL
ПоказатьОй. Уже есть в самом начале темы, в сообщении 13(Правильный запрос и работающий ). И моё - 8-е там же. :) Сразу не заметил.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот