8.х Очень долго формируется отчет после добавления характеристик

Тема в разделе "Система компоновки данных (СКД)", создана пользователем AntonioCarlos, 13 окт 2016.

  1. TopicStarter Overlay
    AntonioCarlos
    Offline

    AntonioCarlos

    Регистрация:
    11 ноя 2009
    Сообщения:
    24
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте, столкнулся с проблемой. В СКД отчет добавляю характеристики, и после этого отчет формируется около полутора часов. Как только убираю использование характристик, то отчет формируется секунд за 5.
    Думал если основной результат запроса поместить во временную таблицу, и к нему подключать характеристики, то вопрос с производительностью решится, но это не помогло. Вот код запроса:
    Код:
    выбрать разрешенные....Поместить ОсновнойЗапрос
    из ............
    
    Запрос достаточно большой, много джоинов и считаются суммы.
    Код:
    ;
    выбрать * из ОсновнойЗапрос
    {ХАРАКТЕРИСТИКИ
        ТИП(Справочник.Номенклатура)
        ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ
                СвойстваОбъектов.Ссылка,
                СвойстваОбъектов.Наименование,
                СвойстваОбъектов.ТипЗначения
            ИЗ
                ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
            ГДЕ
                СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура)
                И НЕ СвойстваОбъектов.ПометкаУдаления)
        ПОЛЕКЛЮЧА Ссылка
        ПОЛЕИМЕНИ Наименование
        ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
        ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
        ПОЛЕОБЪЕКТА Объект
        ПОЛЕВИДА Свойство
        ПОЛЕЗНАЧЕНИЯ Значение }
    
    Все как обычно, запрос к характеристикам стандартный, подключал такие характеристики во многие отчеты, они все формируются нормально. В чем может быть проблема? Может есть какие то нюансы при использовании характеристик с тяжелыми запросами?
  2. 1с-ник
    Offline

    1с-ник Профессионал в 1С

    Регистрация:
    5 окт 2014
    Сообщения:
    323
    Симпатии:
    53
    Баллы:
    54
    интересно. может все-таки неверно связи указываете, толи оптимизатор грешит. попробуйте вручную делать соединения
    --- Объединение сообщений, 13 окт 2016 ---
    А почему у вас в видах характеристик указан запрос, а в значениях таблица? может, вот где собака зарыта. наверно, оптимизатор не понимает по каким полям делать соединение. попробуйте в значениях хар-к указать запрос
    Последнее редактирование: 13 окт 2016
  3. TopicStarter Overlay
    AntonioCarlos
    Offline

    AntonioCarlos

    Регистрация:
    11 ноя 2009
    Сообщения:
    24
    Симпатии:
    0
    Баллы:
    1
    Это так и должно быть, потому что я источник свойств у меня отбирается запросом, а источник значений, то есть все значения которые мне нужны берутся из таблицы значений свойств объектов
  4. 1с-ник
    Offline

    1с-ник Профессионал в 1С

    Регистрация:
    5 окт 2014
    Сообщения:
    323
    Симпатии:
    53
    Баллы:
    54
  5. TopicStarter Overlay
    AntonioCarlos
    Offline

    AntonioCarlos

    Регистрация:
    11 ноя 2009
    Сообщения:
    24
    Симпатии:
    0
    Баллы:
    1
    Сделал для примера по одному свойству:
    Код:
    {ХАРАКТЕРИСТИКИ
        ТИП(Справочник.Номенклатура)
        ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ
                СвойстваОбъектов.Ссылка,
                СвойстваОбъектов.Наименование,
                СвойстваОбъектов.ТипЗначения
            ИЗ
                ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
            ГДЕ
                СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура)
                И НЕ СвойстваОбъектов.ПометкаУдаления
                И СвойстваОбъектов.Код = "00000000259")
        ПОЛЕКЛЮЧА Ссылка
        ПОЛЕИМЕНИ Наименование
        ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
        ЗНАЧЕНИЯХАРАКТЕРИСТИК (ВЫБРАТЬ
                ЗначенияСвойствОбъектов.Объект,
                ЗначенияСвойствОбъектов.Свойство,
                ЗначенияСвойствОбъектов.Значение
            ИЗ
                РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
            ГДЕ
                ЗначенияСвойствОбъектов.Свойство.Код = "00000000259")
        ПОЛЕОБЪЕКТА Объект
        ПОЛЕВИДА Свойство
        ПОЛЕЗНАЧЕНИЯ Значение }
    Стало получше, отчет начал формироваться в течение 5-10 минут. А если добавить отбор по этому свойству то снова непонятно когда он сформируется.
    Кстати да...отчет формируется долго даже без отбора по характеристикам. То есть если стереть кусок кода с подключением характеристики, то все работает хорошо.
    Странно что оптимизатор не понимает что от него хотят. Потому что есть запросы куда больше моего, и характеристики к ним прицепляют так же как я сделал это в самом начале, и там работает все без проблем
  6. 1с-ник
    Offline

    1с-ник Профессионал в 1С

    Регистрация:
    5 окт 2014
    Сообщения:
    323
    Симпатии:
    53
    Баллы:
    54
    у вас условие "нехорошее" на код свойства. оптимизатор не понимает какой таблицы указанный вами код
    по поводу типа источника данных: ни где не видел, чтобы указывались разные источники, обычно либо обе таблицы, либо оба запроса. может вот у вас и беда отсюда.
  7. TopicStarter Overlay
    AntonioCarlos
    Offline

    AntonioCarlos

    Регистрация:
    11 ноя 2009
    Сообщения:
    24
    Симпатии:
    0
    Баллы:
    1
    Хорошо, сейчас по другому сделаю
  8. TopicStarter Overlay
    AntonioCarlos
    Offline

    AntonioCarlos

    Регистрация:
    11 ноя 2009
    Сообщения:
    24
    Симпатии:
    0
    Баллы:
    1
    Бесполезно, как угодно можно делать, результат одинаковый. Запрос..таблица не имеет значения. Открываю более тяжелые отчеты, там прописано как у меня, и работает без проблем. Не понимаю в чем дело
  9. 1с-ник
    Offline

    1с-ник Профессионал в 1С

    Регистрация:
    5 окт 2014
    Сообщения:
    323
    Симпатии:
    53
    Баллы:
    54
    а зачем вообще делаете отбор по характеристике? кстати, отбор по значениям бессмысленный, т.к. 99.9% там левое соединение характеристики и её значения.
    ведь пользователь сам выбирает, какое доп. поле выбрать в отчете. ну, а если сделать отбор, то достаточно будет в запросе характеристик
    --- Объединение сообщений, 13 окт 2016 ---
    Код:
    ВЫБРАТЬ
        РеализацияТоваровУслуг.Ссылка
    ИЗ
        Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    {ХАРАКТЕРИСТИКИ
        ТИП(Документ.РеализацияТоваровУслуг)
        ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ
                ДополнительныеРеквизитыИСведения.Ссылка,
                ДополнительныеРеквизитыИСведения.Наименование,
                ДополнительныеРеквизитыИСведения.ТипЗначения
            ИЗ
                ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения
            ГДЕ
                ДополнительныеРеквизитыИСведения.Наименование = "Подписал (Реализация (акты, накладные))")
        ПОЛЕКЛЮЧА Ссылка
        ПОЛЕИМЕНИ Наименование
        ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
        ЗНАЧЕНИЯХАРАКТЕРИСТИК (ВЫБРАТЬ
                ДополнительныеСведения.Объект,
                ДополнительныеСведения.Свойство,
                ДополнительныеСведения.Значение
            ИЗ
                РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения)
        ПОЛЕОБЪЕКТА Объект
        ПОЛЕВИДА Свойство
        ПОЛЕЗНАЧЕНИЯ Значение }
    Вот я добавил доп. свойство для РТУ. У меня такой запрос - все ок. Отбор по наименованию (кода у ПВХ нет).
    Последнее редактирование: 13 окт 2016
  10. TopicStarter Overlay
    AntonioCarlos
    Offline

    AntonioCarlos

    Регистрация:
    11 ноя 2009
    Сообщения:
    24
    Симпатии:
    0
    Баллы:
    1
    Под отбором я подразумевал пользовательский отбор в настройках. В коде запроса я убрал связь СвойстваОбъектов.Код = "00000000259". То есть получается что если пользователь формирует отчет с выбором в настройках отбора по любому свойству, то отчет перестает формироваться. Если пользователь не делает отборы по свойствам отчет формируется около 5 минут. Но это все равно долго и проблема остается в любом случае.
    Еще я заметил что если в пользовательских настройках в выбранных полях отключить некоторые поля, то отчет начинает формироваться быстрее.
    Такой запрос как у вас у меня тоже отрабатывает без проблем. А запрос с кучей джоинов начинает тормозить.

Поделиться этой страницей