Здравствуйте!
Подскажите, пожалуйста, как переписать нижеследующее внутреннее соединение с подзапросом, чтобы в результате укладываться в рекомендации, как минимум "не используйте соединения с подзапросами". При этом не потерять производительность!
Краткое человечье описанье:
Выбрать неудалённые Ведомости, которые не присутствуют в неудалённых СписанияхСРасчётногоСчёта в табличной части ПеречислениеЗаработнойПлаты.
Подзапрос Выбирает неудалённые СписанияСРасчётногоСчёта. Соединяется с таблицей своей табличной части ПеречислениеЗаработнойПлаты. С результатом - соединяется Ведомости на ЗП и, если Ведомости при соединении получают NULL, значит - не оплачены.
"
ВЫБРАТЬ
ЛОЖЬ КАК Флаг,
ЗарплатаКВыплатеОрганизаций.СпособВыплаты,
ЗарплатаКВыплатеОрганизаций.Комментарий,
ЗарплатаКВыплатеОрганизаций.СуммаДокумента,
ЗарплатаКВыплатеОрганизаций.Организация,
ЗарплатаКВыплатеОрганизаций.Дата КАК Дата,
ЗарплатаКВыплатеОрганизаций.Ссылка
ИЗ
Документ.ЗарплатаКВыплатеОрганизаций КАК ЗарплатаКВыплатеОрганизаций
ЛЕВОЕ СОЕДИНЕНИЕ Документ.СписаниеСРасчетногоСчета.ПеречислениеЗаработнойПлаты КАК СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
СписаниеСРасчетногоСчета.Ссылка КАК Ссылка
ИЗ
Документ.СписаниеСРасчетногоСчета КАК СписаниеСРасчетногоСчета
ГДЕ
СписаниеСРасчетногоСчета.ПометкаУдаления = &ЛОЖЬ) КАК ВложенныйЗапрос
ПО (ВложенныйЗапрос.Ссылка = СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ссылка)
ПО ЗарплатаКВыплатеОрганизаций.Ссылка = СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ведомость.Ссылка
ГДЕ
СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ссылка ЕСТЬ NULL
И ЗарплатаКВыплатеОрганизаций.ПометкаУдаления = &ЛОЖЬ
УПОРЯДОЧИТЬ ПО
Дата УБЫВ
"
ВЫБРАТЬ
СписаниеСРасчетногоСчета.Ссылка КАК Ссылка
Поместить ВложенныйЗапрос
ИЗ
Документ.СписаниеСРасчетногоСчета КАК СписаниеСРасчетногоСчета
ГДЕ
СписаниеСРасчетногоСчета.ПометкаУдаления = &ЛОЖЬ;
ВЫБРАТЬ
ЛОЖЬ КАК Флаг,
ЗарплатаКВыплатеОрганизаций.СпособВыплаты,
ЗарплатаКВыплатеОрганизаций.Комментарий,
ЗарплатаКВыплатеОрганизаций.СуммаДокумента,
ЗарплатаКВыплатеОрганизаций.Организация,
ЗарплатаКВыплатеОрганизаций.Дата КАК Дата,
ЗарплатаКВыплатеОрганизаций.Ссылка
ИЗ
Документ.ЗарплатаКВыплатеОрганизаций КАК ЗарплатаКВыплатеОрганизаций
ЛЕВОЕ СОЕДИНЕНИЕ Документ.СписаниеСРасчетногоСчета.ПеречислениеЗаработнойПлаты КАК СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВложенныйЗапрос
ПО (ВложенныйЗапрос.Ссылка = СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ссылка
ПО ЗарплатаКВыплатеОрганизаций.Ссылка = СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ведомость.Ссылка
ГДЕ
СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ссылка ЕСТЬ NULL
И ЗарплатаКВыплатеОрганизаций.ПометкаУдаления = &ЛОЖЬ
УПОРЯДОЧИТЬ ПО
Дата УБЫВ
Альтернативный, более читабельный запрос предложен мне был следующий:
ВЫБРАТЬ
ЗарплатаКВыплатеОрганизаций.СпособВыплаты,
ЗарплатаКВыплатеОрганизаций.Комментарий,
ЗарплатаКВыплатеОрганизаций.СуммаДокумента,
ЗарплатаКВыплатеОрганизаций.Организация,
ЗарплатаКВыплатеОрганизаций.Дата,
ЗарплатаКВыплатеОрганизаций.Ссылка,
ЗарплатаКВыплатеОрганизаций.КраткийСоставДокумента
ИЗ
Документ.ЗарплатаКВыплатеОрганизаций КАК ЗарплатаКВыплатеОрганизаций
ЛЕВОЕ СОЕДИНЕНИЕ Документ.СписаниеСРасчетногоСчета.ПеречислениеЗаработнойПлаты КАК СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты
ПО ЗарплатаКВыплатеОрганизаций.Ссылка = СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ведомость.Ссылка
И (СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ссылка.ПометкаУдаления = &ЛОЖЬ)
ГДЕ
СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ссылка ЕСТЬ NULL
И ЗарплатаКВыплатеОрганизаций.ПометкаУдаления = &ЛОЖЬ
УПОРЯДОЧИТЬ ПО
ЗарплатаКВыплатеОрганизаций.Дата УБЫВ
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua