8.х [РЕШЕНО] Ускорение формирования отчета на СКД

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

  1. TopicStarter Overlay
    Dale
    Offline

    Dale

    Регистрация:
    26 авг 2010
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Доброго времени суток. Есть отчет на СКД: три набора данных, Первый - два объединенных запроса, второй и третий - два набора (с ценами), к которым цепляется первый. Так вот, пока был один набор, отчет работал довольно шустро. Подсоединил наборы с ценами и скорость формирования упала с 10 секунд до 4 минут. Схема компоновки данных во вложении. Кому не сложно - гляньте, пожалуйста, как можно ускорить отчет. Первый запрос пытался пихать во временную таблицу - вроде еще медленнее формировался.

    Вложения:

    • sst.xml
      Размер файла:
      99,4 КБ
      Просмотров:
      2
  2. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    1. Конфа какая? РЛС используется в ней
    2. Зачем 3 набора. водном запросе временными таблицами сделать не пробовали?
  3. TopicStarter Overlay
    Dale
    Offline

    Dale

    Регистрация:
    26 авг 2010
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    1. УПП, РЛС используется
    2. цены нужны на каждую дату данных из первого набора, пользовался этой статьей http://kb.mista.ru/article.php?id=92) (извините, если ссылки на сторонние сайты запрещены). Способ показался довольно простым, его и использовал.
  4. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    Вообщем я бы следующее посоветовал.
    1. Смоотрите Там у вас во втором и третьем наборе появляются цены номенклатуры - и на них может быть установлен РЛС. тогда система помимо основного запроса будет добавлять еще запрос из шаблонов которые там в правах прописаны, что не придает скорости.
    если для данного очтета ограничение прав на уровне записей не нужно то его можно попробовать формировать

    ПараметрыСеанса.ИспользоватьОграничениеправНаУровнеЗаписей=Ложь;
    СформироватьОтчет();
    ПараметрыСеанса.ИспользоватьОграничениеправНаУровнеЗаписей=Истина;

    2. В первом наборе левое соединение с виртуаальными таблицами(Срез последних) заменить на соединенеи с временными таблицами
    3. По той ссылке что Вы дали там СКД это второй вариант - он попроще согласен. Но есть и первый - через запрос и ВТ. он будет работать быстрее.

    Попробуцте в копии отключить РЛС и попробовать выполнить отчет - посмотрите время может РЛС как раз 60% прирост дает. и вам этого хватаит. тогда уже будете думать что да как
    Dale нравится это.
  5. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Есть еще вариант, сложный но веселый - сделать через внешний источник данных, с сбором данных, инициализацией соотв. объектов СКД
  6. TopicStarter Overlay
    Dale
    Offline

    Dale

    Регистрация:
    26 авг 2010
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Отключение РЛС к сожалению мало что дало. Переделал с одним набором данных, пользовался этой статьей http://infostart.ru/public/77568/ Получился какой-то левиафан, но стал формироваться 25 секунд. Выкладываю схему, вдруг кому пригодится :)

    Вложения:

    • odin_zapros.xml
      Размер файла:
      102,8 КБ
      Просмотров:
      0
  7. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    Ну это и логично.
    я Вам что и говорил. Там просто при соединени наборов получается что то типа запроса в цикле. причем потом соединение виртуальных таблиц, что не очень скуль любит т.к не знает количество записей и не всегда может оптимально план запроса составить.
    Запросом там же все на виртуальных таблицах. все в памяти, количество записей известно и план запроса почти всегда оптимальней.
    Соединение наборов используют немного для дургих целей - типа построения собственной иерархии
    Dale нравится это.

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