1. Акция на весь декабрь! Получай оплату х2 за уникальные статьи, объемом от 200 слов, если в заголовке темы и теле статьи присутствует слово Python
    Скрыть объявление

8.1 Запрос. Оптимизация

Тема в разделе "1C и всё что с ней связано", создана пользователем unknown181538, 12 май 2009.

  1. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Есть запрос:
    <!--shcode--><pre><code class='1С'>Запрос.Текст = "ВЫБРАТЬ
    | Д*цензура*60.Субконто1 КАК СубконтоКонтрДт,
    | Д*цензура*60.Субконто3 КАК СубконтоДокДт,
    | Кредит60.Субконто1 КАК Контрагент,
    | Кредит60.Субконто3 КАК СубконтоДокКт,
    | Кредит60.СуммаОборотКт КАК ОборотКт,
    | Д*цензура*60.СуммаОборотДт КАК ОборотДт,
    | Д*цензура*60.КорСубконто3 КАК ПлПор,
    | Д*цензура*60.КорСубконто3.Номер КАК НомерПл,
    | Д*цензура*60.КорСубконто3.Дата КАК ДатаПл,
    | Д*цензура*60.Субконто2 КАК ДоговорДт,
    | Кредит60.Субконто2 КАК Договор,
    | Кредит60.Субконто3.СуммаДокумента КАК СуммаПост,
    | Кредит60.Субконто3.Номер КАК НомерПост,
    | Кредит60.Субконто3.Дата КАК ДатаПост,
    | Кредит60.Субконто3.Ссылка КАК СсылкаПост,
    | СчетФактураПолученный.Ссылка КАК СФ,
    | СчетФактураПолученный.ДокументОснование,
    | СчетФактураПолученный.Номер КАК НомерСФ,
    | СчетФактураПолученный.Дата КАК ДатаСФ
    |ИЗ
    | РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаНач, &ДатаКон, , Счет.Код = ""60.01"", , , , ) КАК Кредит60
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаНач, &ДатаКон, , Счет.Код = ""60.01"", , , , ) КАК Д*цензура*60
    | ПО Кредит60.Субконто3 = Д*цензура*60.Субконто3
    | ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураПолученный КАК СчетФактураПолученный
    | ПО Кредит60.Субконто3 = СчетФактураПолученный.ДокументОснование"+
    ?(НетСФ," ГДЕ
    | СчетФактураПолученный.Ссылка ЕСТЬ NULL "+
    ?(ЗначениеЗаполнено(Контрагент)," И Кредит60.Субконто1 = &Контрагент",""),?(ЗначениеЗаполнено(Контрагент)," ГДЕ Кредит60.Субконто1 = &Контрагент",""))+
    " СГРУППИРОВАТЬ ПО
    | Кредит60.Субконто1,
    | Кредит60.Субконто3,
    | Д*цензура*60.Субконто1,
    | Д*цензура*60.Субконто3,
    | Кредит60.СуммаОборотКт,
    | Д*цензура*60.СуммаОборотДт,
    | Д*цензура*60.Субконто2,
    | Кредит60.Субконто2,
    | Д*цензура*60.КорСубконто3,
    | Кредит60.Субконто3.СуммаДокумента,
    | Кредит60.Субконто3.Номер,
    | Кредит60.Субконто3.Дата,
    | Кредит60.Субконто3.Ссылка,
    | СчетФактураПолученный.Ссылка,
    | СчетФактураПолученный.ДокументОснование,
    | СчетФактураПолученный.Номер,
    | СчетФактураПолученный.Дата";[/CODE]
    База большая и выполняется очено медленно. Ни у кого нет предложенй?
     
  2. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    У меня есть предложение: уменьшить размер секции ORDER BY
     
  3. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Переделать через ADO - но не факт что шибко быстрее будет.
     
  4. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Нету у меня такой секции. Если Вы имеете ввиду GROUP BY, то при попытке ее уменьшить возникают ошибки "Поле не входит в группу" даже по полям не учавствующим в объединении.
     
  5. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Написал немножко другой отчет, со сходным результатом
    <!--shcode--><pre><code class='1C'>"ВЫБРАТЬ
    | ХозрасчетныйОстатки.Субконто2.СуммаДокумента КАК ОборотКт,
    | ХозрасчетныйОстатки.Субконто2.Номер КАК НомерПост,
    | ХозрасчетныйОстатки.Субконто2.Дата КАК ДатаПост,
    | ХозрасчетныйОстатки.Субконто2.Ссылка КАК СсылкаПост,
    | ХозрасчетныйОстатки.Субконто2.Контрагент КАК Контрагент,
    | ХозрасчетныйОстатки.Субконто2.ДоговорКонтрагента КАК Договор,
    | ХозрасчетныйОборотыДтКт.СубконтоКт3.Номер КАК НомерПл,
    | ХозрасчетныйОборотыДтКт.СубконтоКт3.Дата КАК ДатаПл,
    | ХозрасчетныйОборотыДтКт.СубконтоКт3.Ссылка КАК ПлПор,
    | СчетФактураПолученный.Номер КАК НомерСФ,
    | СчетФактураПолученный.Дата КАК ДатаСФ
    | ИЗ
    | РегистрБухгалтерии.Хозрасчетный.Остатки(&КонПер, Счет.Ссылка В ИЕРАРХИИ (&Сч19),
    ,(Субконто2.Дата МЕЖДУ &НачПер И &КонПер) "+?(сзКонтрагенты.Количество()>0,"И (Субконто1 В ИЕРАРХИИ (&сзКонтрагенты))","")+
    ") КАК ХозрасчетныйОстатки
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НАчПер, &КонПер, , СчетДт.Ссылка = &Сч601, , СчетКт.Ссылка = &Сч602, , ) КАК ХозрасчетныйОборотыДтКт
    | ПО ХозрасчетныйОстатки.Субконто2 = ХозрасчетныйОборотыДтКт.СубконтоДт3
    | ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураПолученный КАК СчетФактураПолученный
    | ПО ХозрасчетныйОстатки.Субконто2 = СчетФактураПолученный.ДокументОснование "+
    //" ГДЕ СчетФактураПолученный.Дата >&НачПер "+
    ?(НетСФ," ГДЕ
    | СчетФактураПолученный.Ссылка ЕСТЬ NULL ","");[/CODE]
    Можно ли его ускорить сделав, чтобы счета-фактуры перебирались только с некоторой даты. При этом поставить условие не годится, т.к. Null-результаты тоже нужно. (Причем они как раз нужны больше)
     
  6. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Именно это я и имел ввиду.
     
  7. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    А что, дает ощутимый результат?
    Можно поподробнее? Есть что почитать по технологии?
     
  8. dimetra2008

    dimetra2008 Member

    Регистрация:
    3 дек 2011
    Сообщения:
    6
    Симпатии:
    0
Загрузка...

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