7.7 Почему долго работает запрос

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Asttoxa, 28 июн 2011.

  1. TopicStarter Overlay
    Asttoxa
    Offline

    Asttoxa Опытный в 1С

    Регистрация:
    18 май 2010
    Сообщения:
    525
    Симпатии:
    0
    Баллы:
    26
    Ребят подскажите почему у меня в ТиС 7.7 оочень долго работает запрос по документам вот такой:

    Код:
    	"//{{ЗАПРОС(ФормированиеСпискаДокументов)
    |Период с НачДата по КонДата;
    |Реализация = Документ.РеализацияРозница.ТекущийДокумент;
    |Группировка Реализация;
    |Условие(Реализация.Договор в СписДог);
    |"//}}ЗАПРОС
    ;
    
    
    И главное, что не перебор результата после запроса долго работает, а сам запрос.
    Может изза того что много документов? Хотя я бы не сказал, что очень много доков.
    Можно ли как нибудь убыстрить?

    Если нужно конкретное время работы запроса и количество документов могу посмотреть в Отладчике.

    ЗЫ СписДог - это список значений типа справочник.Договор.
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Вытащиет договор как отдельную переменную запроса
  3. TopicStarter Overlay
    Asttoxa
    Offline

    Asttoxa Опытный в 1С

    Регистрация:
    18 май 2010
    Сообщения:
    525
    Симпатии:
    0
    Баллы:
    26
    Там несколько договоров в списке как я вытащу в 1 переменную несколько договоров?
    Или в к переменной присвоить сам список значений??
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Вот что я имел ввиду
    Код:
    |Реализация = Документ.РеализацияРозница.ТекущийДокумент;
    |Договор = Документ.РеализацияРозница.Договор;
    |Группировка Реализация;	
    |Условие(Договор в СписДог);
    
    
  5. TopicStarter Overlay
    Asttoxa
    Offline

    Asttoxa Опытный в 1С

    Регистрация:
    18 май 2010
    Сообщения:
    525
    Симпатии:
    0
    Баллы:
    26
    Охренеть как возросла скорость :angry: ... (пардон за мой французский)
    Спасибо огромное.
    От чего так??
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Используется прямая ссылка... А не вычисляется каждый раз.
    С запросом нужно быть аккуратнее. Не ленитесь заводить переменные
  7. TopicStarter Overlay
    Asttoxa
    Offline

    Asttoxa Опытный в 1С

    Регистрация:
    18 май 2010
    Сообщения:
    525
    Симпатии:
    0
    Баллы:
    26
    Подскажите пожалуйста что вот в этом запросе я пропустил?

    Код:
    		ТекстЗапроса = 
    "//{{ЗАПРОС(ФормированиеОшибок1)
    |Период с НачДата по КонДата;
    |Договор = Регистр.ОплатаДокументов.Договор;
    |ДокОплачиваемый = Регистр.ОплатаДокументов.ДокОплачиваемый;
    |ДокОбъединения = Регистр.ОплатаДокументов.ДокОбъединения;
    |Суммы = Регистр.ОплатаДокументов.СуммаОплачиваемая;
    |Функция СуммыПриход = Приход(Суммы);
    |Группировка ДокОплачиваемый;
    |Условие(Договор в СписДог);
    |Условие(ПустоеЗначение(ДокОбъединения)=1); 
    |"//}}ЗАПРОС
    ;
    
    
    Он обрабатывая документы с начала года работает 41 секунду :(
    Вроде все данные указал в переменных.
  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    объем базы большой?
  9. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Использование функции в условии, не самый хороший способ.

    Код:
    |Условие(ПустоеЗначение(ДокОбъединения)=1); 
    
    
    Лучше сравнивать с пустым значением:

    Код:
    ПустойДокумент = ПолучитьПустоеЗначение([Тип документа ДокОбъединения]);
    ...
    |Условие(ДокОбъединения = ПустойДокумент);
    
    
    
  10. TopicStarter Overlay
    Asttoxa
    Offline

    Asttoxa Опытный в 1С

    Регистрация:
    18 май 2010
    Сообщения:
    525
    Симпатии:
    0
    Баллы:
    26
    Ну скажем так приличный... Отчет крутится с начала года. В день в этом регистре отмечаются около 60 документов.

    Тоесть в запросе все нормально?

    Еще хотел спросить как использовать в запросе запросную переменную?? ВОобще можно так использовать?? С пробовал у меня не получилось :(

    Например как вынести договор из документа:
    Код:
    ТекстЗапроса = 
    "//{{ЗАПРОС(ФормированиеОшибок2)
    |Период с НачДата по КонДата;
    |ДокОбъединения = Регистр.ОплатаДокументов.ДокОбъединения;
    |Договор = ДокОбъединения.Договор;
    |Суммы = Регистр.ОплатаДокументов.СуммаОплачиваемая;    
    |Функция СуммыРасход = Расход(Суммы);
    |Группировка ДокОбъединения; 
    |"//}}ЗАПРОС;
    
    
    
    

    Спасибо учту в будущем!
    Это же не так сильно влияет на скорость?
  11. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Насколько я помню что-то такое я вам уже говоил....
    + в запросе лучше использовать ПРИЯМЫЕ ссылки (это уж точно говорил)

    Код:
    Договор = Регистр.ОплатаДокументов.ДокОбъединения.Договор;
    
    
  12. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Очень даже влияет.
    Относительная скорость сравнения элементов выше, чем скорость вызова функции.

    Теперь ее можно умножить на количество использований (общее количество группировок, без учета условия). В итоге иногда получается приличный прирост скорости.

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