Имя: Пароль:
1C
1С v8
Увеличить скорость выполнения запроса
0 lesya_abyone
 
25.04.17
21:42
Здравствуйте!

Есть документы (заказ клиента, счет-фактура, реализация), к которым присвоены некоторые дополнительные сведения. Они нужны для дальнейшей их обработки.

Для работы необходима таблица, которую я выбираю данным запросом. Все бы ничего, но запрос отрабатывает оооооочень долго (у пользователя с правами администратора куда ни шло, 4-5 сек, для пользователя с обычными правами больше 30 сек).

Пытаюсь его исправить. Кручу уже по-разному, +- 2 сек....


ВЫБРАТЬ
    СвойстваОбъектов.Ссылка КАК Свойство,
    СвойстваОбъектов.Наименование,
    ВЫБОР
        КОГДА СвойстваОбъектов.Наименование ПОДОБНО "%Заказ%"
            ТОГДА "Заказ"
        КОГДА СвойстваОбъектов.Наименование ПОДОБНО "%Фактура%"
            ТОГДА "Фактура"
        КОГДА СвойстваОбъектов.Наименование ПОДОБНО "%ОтветНаЗаказ%"
            ТОГДА "ОтветНаЗаказ"
        ИНАЧЕ ""
    КОНЕЦ КАК НаименованиеТипСообщения,
    ВЫБОР
        КОГДА СвойстваОбъектов.Наименование ПОДОБНО "%_ТипСообщения%"
            ТОГДА "ТипСообщения"
        КОГДА СвойстваОбъектов.Наименование ПОДОБНО "%_ТипДокумента%"
            ТОГДА "ТипДокумента"
        КОГДА СвойстваОбъектов.Наименование ПОДОБНО "%_НомерЗаказа%"
            ТОГДА "НомерЗаказа"
        КОГДА СвойстваОбъектов.Наименование ПОДОБНО "%_ДатаЗаказа%"
            ТОГДА "ДатаЗаказа"
        КОГДА СвойстваОбъектов.Наименование ПОДОБНО "%_Отправлено%"
            ТОГДА "Отправлено"
        КОГДА СвойстваОбъектов.Наименование ПОДОБНО "%_ID%"
            ТОГДА "ID"
    КОНЕЦ КАК НаименованиеТипРеквизита
ПОМЕСТИТЬ ВТ_СвойстваОбщая
ИЗ
    ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
ГДЕ
    СвойстваОбъектов.Наименование ПОДОБНО "__Свойство_%"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    СвойстваОбъектов.Ссылка,
    СвойстваОбъектов.Наименование,
    "",
    "СтатусДокумента"
ИЗ
    ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
ГДЕ
    СвойстваОбъектов.Наименование = "__Свойство_ДокСтатус"

ИНДЕКСИРОВАТЬ ПО
    Свойство
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЗначенияСвойствОбъектов.Объект КАК Объект,
    ЗначенияСвойствОбъектов.Значение КАК ID,
    ЗначенияСвойствОбъектов.Свойство
ПОМЕСТИТЬ ВТ_ID_Документы
ИЗ
    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
ГДЕ
    ЗначенияСвойствОбъектов.Свойство В
            (ВЫБРАТЬ
                ВТ_СвойстваОбщая.Свойство
            ИЗ
                ВТ_СвойстваОбщая КАК ВТ_СвойстваОбщая
            ГДЕ
                ВТ_СвойстваОбщая.НаименованиеТипРеквизита = "ID")

ИНДЕКСИРОВАТЬ ПО
    Объект
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ВТ_ID_Документы.Объект КАК Документ1С,
    ЗначенияСвойствОбъектов1.Значение КАК ТипСообщения,
    ЗначенияСвойствОбъектов2.Значение КАК ТипДокумента,
    ЗначенияСвойствОбъектов3.Значение КАК НомерЗаказа,
    ВЫРАЗИТЬ(ЗначенияСвойствОбъектов4.Значение КАК ДАТА) КАК ДатаЗаказа,
    ЕСТЬNULL(ВЫРАЗИТЬ(ЗначенияСвойствОбъектов5.Значение КАК БУЛЕВО), ЛОЖЬ) КАК Отправлено,
    ВТ_ID_Документы.ID,
    "" КАК СтатусДокумента
ПОМЕСТИТЬ ВТ_СообщенияБезОтбора
ИЗ
    ВТ_ID_Документы КАК ВТ_ID_Документы
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов1
        ПО ВТ_ID_Документы.Объект = ЗначенияСвойствОбъектов1.Объект
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов2
        ПО ВТ_ID_Документы.Объект = ЗначенияСвойствОбъектов2.Объект
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов3
        ПО ВТ_ID_Документы.Объект = ЗначенияСвойствОбъектов3.Объект
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов4
        ПО ВТ_ID_Документы.Объект = ЗначенияСвойствОбъектов4.Объект
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов5
        ПО ВТ_ID_Документы.Объект = ЗначенияСвойствОбъектов5.Объект
ГДЕ
    ЗначенияСвойствОбъектов1.Значение В(&ТипСообщения)
    И ЗначенияСвойствОбъектов1.Свойство В
            (ВЫБРАТЬ
                ВТ_СвойстваОбщая.Свойство КАК СВ
            ИЗ
                ВТ_СвойстваОбщая КАК ВТ_СвойстваОбщая
            ГДЕ
                ВТ_СвойстваОбщая.НаименованиеТипРеквизита = "ТипСообщения")
    И ЗначенияСвойствОбъектов2.Свойство В
            (ВЫБРАТЬ
                ВТ_СвойстваОбщая.Свойство
            ИЗ
                ВТ_СвойстваОбщая КАК ВТ_СвойстваОбщая
            ГДЕ
                ВТ_СвойстваОбщая.НаименованиеТипРеквизита = "ТипДокумента")
    И ЗначенияСвойствОбъектов3.Свойство В
            (ВЫБРАТЬ
                ВТ_СвойстваОбщая.Свойство
            ИЗ
                ВТ_СвойстваОбщая КАК ВТ_СвойстваОбщая
            ГДЕ
                ВТ_СвойстваОбщая.НаименованиеТипРеквизита = "НомерЗаказа")
    И ЗначенияСвойствОбъектов4.Свойство В
            (ВЫБРАТЬ
                ВТ_СвойстваОбщая.Свойство
            ИЗ
                ВТ_СвойстваОбщая КАК ВТ_СвойстваОбщая
            ГДЕ
                ВТ_СвойстваОбщая.НаименованиеТипРеквизита = "ДатаЗаказа")
    И ЗначенияСвойствОбъектов5.Свойство В
            (ВЫБРАТЬ
                ВТ_СвойстваОбщая.Свойство
            ИЗ
                ВТ_СвойстваОбщая КАК ВТ_СвойстваОбщая
            ГДЕ
                ВТ_СвойстваОбщая.НаименованиеТипРеквизита = "ID")

ИНДЕКСИРОВАТЬ ПО
    Документ1С
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ВТ_СообщенияБезОтбора.Документ1С КАК Документ1С,
    ВТ_СообщенияБезОтбора.ТипСообщения,
    ВТ_СообщенияБезОтбора.ТипДокумента,
    ВТ_СообщенияБезОтбора.НомерЗаказа,
    ВТ_СообщенияБезОтбора.ДатаЗаказа,
    ВТ_СообщенияБезОтбора.Отправлено,
    ВТ_СообщенияБезОтбора.ID,
    ВЫБОР
        КОГДА НЕ ЗаказПокупателя.Дата ЕСТЬ NULL
            ТОГДА ЗаказПокупателя.Дата
        КОГДА НЕ РеализацияТоваровУслуг.Дата ЕСТЬ NULL
            ТОГДА РеализацияТоваровУслуг.Дата
        КОГДА НЕ СчетФактураВыданный.Дата ЕСТЬ NULL
            ТОГДА СчетФактураВыданный.Дата
        ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
    КОНЕЦ КАК ДатаДокумента,
    ВЫБОР
        КОГДА НЕ ЗаказПокупателя.Организация ЕСТЬ NULL
            ТОГДА ЗаказПокупателя.Организация
        КОГДА НЕ РеализацияТоваровУслуг.Организация ЕСТЬ NULL
            ТОГДА РеализацияТоваровУслуг.Организация
        КОГДА НЕ СчетФактураВыданный.Организация ЕСТЬ NULL
            ТОГДА СчетФактураВыданный.Организация
    КОНЕЦ КАК Организация
ПОМЕСТИТЬ ВТИтоговая
ИЗ
    ВТ_СообщенияБезОтбора КАК ВТ_СообщенияБезОтбора
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК ЗаказПокупателя
        ПО ВТ_СообщенияБезОтбора.Документ1С = ЗаказПокупателя.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        ПО ВТ_СообщенияБезОтбора.Документ1С = РеализацияТоваровУслуг.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный КАК СчетФактураВыданный
        ПО ВТ_СообщенияБезОтбора.Документ1С = СчетФактураВыданный.Ссылка

ИНДЕКСИРОВАТЬ ПО
    Документ1С,
    ДатаДокумента
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТИтоговая.Документ1С,
    ВТИтоговая.ТипСообщения,
    ВТИтоговая.ТипДокумента,
    ВТИтоговая.НомерЗаказа,
    ВТИтоговая.ДатаЗаказа,
    ВТИтоговая.Отправлено,
    ВТИтоговая.ID,
    ВТИтоговая.ДатаДокумента,
    ВТИтоговая.Организация
ИЗ
    ВТИтоговая КАК ВТИтоговая
ГДЕ
    ВЫБОР
            КОГДА ВТИтоговая.ДатаДокумента = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                ТОГДА ИСТИНА
            ИНАЧЕ ВЫБОР
                    КОГДА ВТИтоговая.ДатаДокумента МЕЖДУ &НачалоПериода И &КонецПериода
                        ТОГДА ИСТИНА
                    ИНАЧЕ ЛОЖЬ
                КОНЕЦ
        КОНЕЦ
1 lesya_abyone
 
25.04.17
21:44
Оо что то не то, попробую еще раз



ВЫБРАТЬ
    СвойстваОбъектов.Ссылка КАК Свойство,
    СвойстваОбъектов.Наименование,
    ВЫБОР
        КОГДА СвойстваОбъектов.Наименование ПОДОБНО "%Заказ%"
            ТОГДА "Заказ"
        КОГДА СвойстваОбъектов.Наименование ПОДОБНО "%Фактура%"
            ТОГДА "Фактура"
        КОГДА СвойстваОбъектов.Наименование ПОДОБНО "%ОтветНаЗаказ%"
            ТОГДА "ОтветНаЗаказ"
        ИНАЧЕ ""
    КОНЕЦ КАК НаименованиеТипСообщения,
    ВЫБОР
        КОГДА СвойстваОбъектов.Наименование ПОДОБНО "%_ТипСообщения%"
            ТОГДА "ТипСообщения"
        КОГДА СвойстваОбъектов.Наименование ПОДОБНО "%_ТипДокумента%"
            ТОГДА "ТипДокумента"
        КОГДА СвойстваОбъектов.Наименование ПОДОБНО "%_НомерЗаказа%"
            ТОГДА "НомерЗаказа"
        КОГДА СвойстваОбъектов.Наименование ПОДОБНО "%_ДатаЗаказа%"
            ТОГДА "ДатаЗаказа"
        КОГДА СвойстваОбъектов.Наименование ПОДОБНО "%_Отправлено%"
            ТОГДА "Отправлено"
        КОГДА СвойстваОбъектов.Наименование ПОДОБНО "%_ID%"
            ТОГДА "ID"
    КОНЕЦ КАК НаименованиеТипРеквизита
ПОМЕСТИТЬ ВТ_СвойстваОбщая
ИЗ
    ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
ГДЕ
    СвойстваОбъектов.Наименование ПОДОБНО "__Свойство_%"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    СвойстваОбъектов.Ссылка,
    СвойстваОбъектов.Наименование,
    "",
    "СтатусДокумента"
ИЗ
    ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
ГДЕ
    СвойстваОбъектов.Наименование = "__Свойство_ДокСтатус"

ИНДЕКСИРОВАТЬ ПО
    Свойство
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЗначенияСвойствОбъектов.Объект КАК Объект,
    ЗначенияСвойствОбъектов.Значение КАК ID,
    ЗначенияСвойствОбъектов.Свойство
ПОМЕСТИТЬ ВТ_ID_Документы
ИЗ
    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
ГДЕ
    ЗначенияСвойствОбъектов.Свойство В
            (ВЫБРАТЬ
                ВТ_СвойстваОбщая.Свойство
            ИЗ
                ВТ_СвойстваОбщая КАК ВТ_СвойстваОбщая
            ГДЕ
                ВТ_СвойстваОбщая.НаименованиеТипРеквизита = "ID")

ИНДЕКСИРОВАТЬ ПО
    Объект
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ВТ_ID_Документы.Объект КАК Документ1С,
    ЗначенияСвойствОбъектов1.Значение КАК ТипСообщения,
    ЗначенияСвойствОбъектов2.Значение КАК ТипДокумента,
    ЗначенияСвойствОбъектов3.Значение КАК НомерЗаказа,
    ВЫРАЗИТЬ(ЗначенияСвойствОбъектов4.Значение КАК ДАТА) КАК ДатаЗаказа,
    ЕСТЬNULL(ВЫРАЗИТЬ(ЗначенияСвойствОбъектов5.Значение КАК БУЛЕВО), ЛОЖЬ) КАК Отправлено,
    ВТ_ID_Документы.ID,
    "" КАК СтатусДокумента
ПОМЕСТИТЬ ВТ_СообщенияБезОтбора
ИЗ
    ВТ_ID_Документы КАК ВТ_ID_Документы
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов1
        ПО ВТ_ID_Документы.Объект = ЗначенияСвойствОбъектов1.Объект
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов2
        ПО ВТ_ID_Документы.Объект = ЗначенияСвойствОбъектов2.Объект
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов3
        ПО ВТ_ID_Документы.Объект = ЗначенияСвойствОбъектов3.Объект
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов4
        ПО ВТ_ID_Документы.Объект = ЗначенияСвойствОбъектов4.Объект
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов5
        ПО ВТ_ID_Документы.Объект = ЗначенияСвойствОбъектов5.Объект
ГДЕ
    ЗначенияСвойствОбъектов1.Значение В(&ТипСообщения)
    И ЗначенияСвойствОбъектов1.Свойство В
            (ВЫБРАТЬ
                ВТ_СвойстваОбщая.Свойство КАК СВ
            ИЗ
                ВТ_СвойстваОбщая КАК ВТ_СвойстваОбщая
            ГДЕ
                ВТ_СвойстваОбщая.НаименованиеТипРеквизита = "ТипСообщения")
    И ЗначенияСвойствОбъектов2.Свойство В
            (ВЫБРАТЬ
                ВТ_СвойстваОбщая.Свойство
            ИЗ
                ВТ_СвойстваОбщая КАК ВТ_СвойстваОбщая
            ГДЕ
                ВТ_СвойстваОбщая.НаименованиеТипРеквизита = "ТипДокумента")
    И ЗначенияСвойствОбъектов3.Свойство В
            (ВЫБРАТЬ
                ВТ_СвойстваОбщая.Свойство
            ИЗ
                ВТ_СвойстваОбщая КАК ВТ_СвойстваОбщая
            ГДЕ
                ВТ_СвойстваОбщая.НаименованиеТипРеквизита = "НомерЗаказа")
    И ЗначенияСвойствОбъектов4.Свойство В
            (ВЫБРАТЬ
                ВТ_СвойстваОбщая.Свойство
            ИЗ
                ВТ_СвойстваОбщая КАК ВТ_СвойстваОбщая
            ГДЕ
                ВТ_СвойстваОбщая.НаименованиеТипРеквизита = "ДатаЗаказа")
    И ЗначенияСвойствОбъектов5.Свойство В
            (ВЫБРАТЬ
                ВТ_СвойстваОбщая.Свойство
            ИЗ
                ВТ_СвойстваОбщая КАК ВТ_СвойстваОбщая
            ГДЕ
                ВТ_СвойстваОбщая.НаименованиеТипРеквизита = "ID")

ИНДЕКСИРОВАТЬ ПО
    Документ1С
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ВТ_СообщенияБезОтбора.Документ1С КАК Документ1С,
    ВТ_СообщенияБезОтбора.ТипСообщения,
    ВТ_СообщенияБезОтбора.ТипДокумента,
    ВТ_СообщенияБезОтбора.НомерЗаказа,
    ВТ_СообщенияБезОтбора.ДатаЗаказа,
    ВТ_СообщенияБезОтбора.Отправлено,
    ВТ_СообщенияБезОтбора.ID,
    ВЫБОР
        КОГДА НЕ ЗаказПокупателя.Дата ЕСТЬ NULL
            ТОГДА ЗаказПокупателя.Дата
        КОГДА НЕ РеализацияТоваровУслуг.Дата ЕСТЬ NULL
            ТОГДА РеализацияТоваровУслуг.Дата
        КОГДА НЕ СчетФактураВыданный.Дата ЕСТЬ NULL
            ТОГДА СчетФактураВыданный.Дата
        ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
    КОНЕЦ КАК ДатаДокумента,
    ВЫБОР
        КОГДА НЕ ЗаказПокупателя.Организация ЕСТЬ NULL
            ТОГДА ЗаказПокупателя.Организация
        КОГДА НЕ РеализацияТоваровУслуг.Организация ЕСТЬ NULL
            ТОГДА РеализацияТоваровУслуг.Организация
        КОГДА НЕ СчетФактураВыданный.Организация ЕСТЬ NULL
            ТОГДА СчетФактураВыданный.Организация
    КОНЕЦ КАК Организация
ПОМЕСТИТЬ ВТИтоговая
ИЗ
    ВТ_СообщенияБезОтбора КАК ВТ_СообщенияБезОтбора
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК ЗаказПокупателя
        ПО ВТ_СообщенияБезОтбора.Документ1С = ЗаказПокупателя.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        ПО ВТ_СообщенияБезОтбора.Документ1С = РеализацияТоваровУслуг.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный КАК СчетФактураВыданный
        ПО ВТ_СообщенияБезОтбора.Документ1С = СчетФактураВыданный.Ссылка

ИНДЕКСИРОВАТЬ ПО
    Документ1С,
    ДатаДокумента
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТИтоговая.Документ1С,
    ВТИтоговая.ТипСообщения,
    ВТИтоговая.ТипДокумента,
    ВТИтоговая.НомерЗаказа,
    ВТИтоговая.ДатаЗаказа,
    ВТИтоговая.Отправлено,
    ВТИтоговая.ID,
    ВТИтоговая.ДатаДокумента,
    ВТИтоговая.Организация
ИЗ
    ВТИтоговая КАК ВТИтоговая
ГДЕ
    ВЫБОР
            КОГДА ВТИтоговая.ДатаДокумента = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                ТОГДА ИСТИНА
            ИНАЧЕ ВЫБОР
                    КОГДА ВТИтоговая.ДатаДокумента МЕЖДУ &НачалоПериода И &КонецПериода
                        ТОГДА ИСТИНА
                    ИНАЧЕ ЛОЖЬ
                КОНЕЦ
        КОНЕЦ
2 H A D G E H O G s
 
25.04.17
21:55
Ой, что - то не то.
Попробуйте заняться, мммм, ну например, ландшафтным дизайном, раз почти за 3 года практики не научились писать запросы.
3 DrShad
 
25.04.17
22:01
лишние выборки, слишком много обращений к одной и той же физической таблице и слишком много условий на конечной выборке
4 mkalimulin
 
25.04.17
22:02
(2) Ну, хороший же запрос, вы чего?
(0) 30 сек. - норм. Пишите еще.
5 lesya_abyone
 
25.04.17
22:03
(2) Да, спасибо. Обязательно
6 DrShad
 
25.04.17
22:15
(5) никому его больше не показывай
7 lesya_abyone
 
25.04.17
22:18
(6) Ок.
8 b_ru
 
25.04.17
22:31
Ну для начала ИНДЕКСИРОВАТЬ ПО поубирай, что ли.
9 AlexGaren
 
25.04.17
22:48
Убери эту индексацию ИНДЕКСИРОВАТЬ ПО
    Документ1С,
    ДатаДокумента
;
ВЫБОР
        КОГДА НЕ ЗаказПокупателя.Дата ЕСТЬ NULL
            ТОГДА ЗаказПокупателя.Дата
        КОГДА НЕ РеализацияТоваровУслуг.Дата ЕСТЬ NULL
            ТОГДА РеализацияТоваровУслуг.Дата
        КОГДА НЕ СчетФактураВыданный.Дата ЕСТЬ NULL
            ТОГДА СчетФактураВыданный.Дата
        ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
    КОНЕЦ КАК ДатаДокумента,
    ВЫБОР
        КОГДА НЕ ЗаказПокупателя.Организация ЕСТЬ NULL
            ТОГДА ЗаказПокупателя.Организация
        КОГДА НЕ РеализацияТоваровУслуг.Организация ЕСТЬ NULL
            ТОГДА РеализацияТоваровУслуг.Организация
        КОГДА НЕ СчетФактураВыданный.Организация ЕСТЬ NULL
И вот эта замена я так понимаю функции ЕстьNull,но разве это правда будет быстрее работать?
И так же  есть большой минус использования дополнительных сведений тянешь данные не напрямую из реквизита ,а приходится вытаскивать из регистра и накладывать условия,при том условие не на виртуальную таблицу, а на весь регистр,он же не периодический по-моему.
10 lesya_abyone
 
25.04.17
22:57
(8) (9) Индексировать добавила, в надежде что уменьшит скорость.
Уменьшила обращения к регистру, создала виртуальную таблицу.

Пока не ушла торговать помидорами, выложу запрос еще раз....

ВЫБРАТЬ
    СвойстваОбъектов.Ссылка КАК Свойство,
    СвойстваОбъектов.Наименование,
    ВЫБОР
        КОГДА СвойстваОбъектов.Наименование ПОДОБНО "%_ТипСообщения%"
            ТОГДА "ТипСообщения"
        КОГДА СвойстваОбъектов.Наименование ПОДОБНО "%_ТипДокумента%"
            ТОГДА "ТипДокумента"
        КОГДА СвойстваОбъектов.Наименование ПОДОБНО "%_НомерЗаказа%"
            ТОГДА "НомерЗаказа"
        КОГДА СвойстваОбъектов.Наименование ПОДОБНО "%_ДатаЗаказа%"
            ТОГДА "ДатаЗаказа"
        КОГДА СвойстваОбъектов.Наименование ПОДОБНО "%_Отправлено%"
            ТОГДА "Отправлено"
        КОГДА СвойстваОбъектов.Наименование ПОДОБНО "%_ID%"
            ТОГДА "ID"
        КОГДА СвойстваОбъектов.Наименование ПОДОБНО "%_СтатусДокумента%"
            ТОГДА "СтатусДокумента"
    КОНЕЦ КАК НаименованиеТипРеквизита
ПОМЕСТИТЬ ВТ_СвойстваОбщая
ИЗ
    ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
ГДЕ
    СвойстваОбъектов.Наименование ПОДОБНО "__Свойство_%"
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЗначенияСвойствОбъектов.Объект,
    ЗначенияСвойствОбъектов.Свойство,
    ЗначенияСвойствОбъектов.Значение
ПОМЕСТИТЬ ВТ_Регистр
ИЗ
    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
ГДЕ
    ЗначенияСвойствОбъектов.Свойство В
            (ВЫБРАТЬ
                ВТ_СвойстваОбщая.Свойство
            ИЗ
                ВТ_СвойстваОбщая КАК ВТ_СвойстваОбщая)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    ВТ_Регистр.Объект КАК Документ1С,
    ВТ_Регистр1.Значение КАК ТипСообщения,
    ВТ_Регистр2.Значение КАК ТипДокумента,
    ВТ_Регистр3.Значение КАК НомерЗаказа,
    ВЫРАЗИТЬ(ВТ_Регистр4.Значение КАК ДАТА) КАК ДатаЗаказа,
    ЕСТЬNULL(ВЫРАЗИТЬ(ВТ_Регистр5.Значение КАК БУЛЕВО), ЛОЖЬ) КАК Отправлено,
    "" КАК СтатусДокумента,
    ВТ_Регистр.Объект.Дата КАК Дата,
    ВТ_Регистр.Объект.Организация КАК Организация,
    ВТ_Регистр.Значение КАК ID
ИЗ
    ВТ_Регистр КАК ВТ_Регистр
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Регистр КАК ВТ_Регистр1
        ПО ВТ_Регистр.Объект = ВТ_Регистр1.Объект
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Регистр КАК ВТ_Регистр2
        ПО ВТ_Регистр.Объект = ВТ_Регистр2.Объект
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Регистр КАК ВТ_Регистр3
        ПО ВТ_Регистр.Объект = ВТ_Регистр3.Объект
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Регистр КАК ВТ_Регистр4
        ПО ВТ_Регистр.Объект = ВТ_Регистр4.Объект
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Регистр КАК ВТ_Регистр5
        ПО ВТ_Регистр.Объект = ВТ_Регистр5.Объект
ГДЕ
    ВТ_Регистр1.Значение В(&ТипСообщения)
    И ВТ_Регистр1.Свойство В
            (ВЫБРАТЬ
                ВТ_СвойстваОбщая.Свойство КАК СВ
            ИЗ
                ВТ_СвойстваОбщая КАК ВТ_СвойстваОбщая
            ГДЕ
                ВТ_СвойстваОбщая.НаименованиеТипРеквизита = "ТипСообщения")
    И ВТ_Регистр2.Свойство В
            (ВЫБРАТЬ
                ВТ_СвойстваОбщая.Свойство
            ИЗ
                ВТ_СвойстваОбщая КАК ВТ_СвойстваОбщая
            ГДЕ
                ВТ_СвойстваОбщая.НаименованиеТипРеквизита = "ТипДокумента")
    И ВТ_Регистр3.Свойство В
            (ВЫБРАТЬ
                ВТ_СвойстваОбщая.Свойство
            ИЗ
                ВТ_СвойстваОбщая КАК ВТ_СвойстваОбщая
            ГДЕ
                ВТ_СвойстваОбщая.НаименованиеТипРеквизита = "НомерЗаказа")
    И ВТ_Регистр4.Свойство В
            (ВЫБРАТЬ
                ВТ_СвойстваОбщая.Свойство
            ИЗ
                ВТ_СвойстваОбщая КАК ВТ_СвойстваОбщая
            ГДЕ
                ВТ_СвойстваОбщая.НаименованиеТипРеквизита = "ДатаЗаказа")
    И ВТ_Регистр5.Свойство В
            (ВЫБРАТЬ
                ВТ_СвойстваОбщая.Свойство
            ИЗ
                ВТ_СвойстваОбщая КАК ВТ_СвойстваОбщая
            ГДЕ
                ВТ_СвойстваОбщая.НаименованиеТипРеквизита = "Отправлено")
    И ВТ_Регистр.Свойство В
            (ВЫБРАТЬ
                ВТ_СвойстваОбщая.Свойство КАК СВ
            ИЗ
                ВТ_СвойстваОбщая КАК ВТ_СвойстваОбщая
            ГДЕ
                ВТ_СвойстваОбщая.НаименованиеТипРеквизита = "ТипСообщения")
    И ВЫБОР
            КОГДА ВТ_Регистр4.Значение = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                ТОГДА ИСТИНА
            ИНАЧЕ ВЫБОР
                    КОГДА ВТ_Регистр4.Значение МЕЖДУ &НачалоПериода И &КонецПериода
                        ТОГДА ИСТИНА
                    ИНАЧЕ ЛОЖЬ
                КОНЕЦ
        КОНЕЦ
11 lesya_abyone
 
25.04.17
23:00
(9) "И вот эта замена я так понимаю функции ЕстьNull,но разве это правда будет быстрее работать? "

Это я запрос пыталась исправить без "разрешенные"
12 DrShad
 
25.04.17
23:03
лучше не стало
13 lesya_abyone
 
25.04.17
23:04
(12) Да...
14 lesya_abyone
 
25.04.17
23:06
(12) Не знаю как мне обойти выборки в условиях
15 DrShad
 
25.04.17
23:06
тебе уже почти все рассказали, читай, думай - пробуй
16 ViSo
 
26.04.17
00:19
Я тебе на почту написал сообщение. Проверь
17 Diman000
 
26.04.17
00:39
Если для обычных прав все намного хуже, значит РЛС.
18 Diman000
 
26.04.17
00:43
Далее, про временные таблицы, далеко не всегда они дают прирост. 1С их через жпо создает.
Не так уж редко лучшим способом будет сделать предварительный запрос и потом список выбранных значений запихнуть в параметр для В.
Проверено.
Про РАЗЛИЧНЫЕ тоже подумать надо ли.
19 AlexGaren
 
26.04.17
07:55
(10) Индексировать добавила, в надежде что уменьшит скорость
Вообще не понял смысла этой фразы.Индексировать надо те поля,по которым в дальнейшем ты сделаешь соединение.
Поэтому последняя индексация,после которой ты просто делаешь выборку смысла не имеет.
И виртуальная таблицу я имел ввиду типо СрезПоследних,а у тебя вытягивается свойства из регистра при том не одной строчкой ,а по каждому свойству будет отдельная строчка естественно сама представь,при том для каждого свойства своё условие.Если эти свойства часто используются в крупных отчетах лучше создать новый периодический  регистр  с измерениями этих свойств,и вытягивать из него.Тогда у тебя по одному объекту будет вытягиваться одной строчкой. Производительность вырастит просто в разы.
20 AlexGaren
 
26.04.17
07:56
*естественно сама представь какая это лишняя нагрузка.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс