Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Убрать соединение с подзапросом          
bolobol Подменю пользователя
сообщение 13.09.11, 17:28
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 65
Спасибо сказали: 0 раз
Рейтинг: 0

Здравствуйте!

Подскажите, пожалуйста, как переписать нижеследующее внутреннее соединение с подзапросом, чтобы в результате укладываться в рекомендации, как минимум "не используйте соединения с подзапросами". При этом не потерять производительность!

Краткое человечье описанье:
Выбрать неудалённые Ведомости, которые не присутствуют в неудалённых СписанияхСРасчётногоСчёта в табличной части ПеречислениеЗаработнойПлаты.

Подзапрос Выбирает неудалённые СписанияСРасчётногоСчёта. Соединяется с таблицей своей табличной части ПеречислениеЗаработнойПлаты. С результатом - соединяется Ведомости на ЗП и, если Ведомости при соединении получают NULL, значит - не оплачены.

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

УПОРЯДОЧИТЬ ПО
    Дата УБЫВ
"

pablo Подменю пользователя
сообщение 14.09.11, 8:53
Сообщение #2

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0

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

УПОРЯДОЧИТЬ ПО
    Дата УБЫВ


Signature
Правильно поставленный вопрос содержит до 90% ответа.

bolobol Подменю пользователя
сообщение 14.09.11, 12:09
Сообщение #3

Говорящий
***
Группа: Пользователи
Сообщений: 65
Спасибо сказали: 0 раз
Рейтинг: 0

Альтернативный, более читабельный запрос предложен мне был следующий:

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

УПОРЯДОЧИТЬ ПО
    ЗарплатаКВыплатеОрганизаций.Дата УБЫВ


Условие на неудалённость документа вставлено прямо в условие связи. Работает быстро и чудесно.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 23.04.24, 20:48
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!