8.х УТ Не работает запрос (долго выполняется)

Тема в разделе ""1С:Управление торговлей УТ"", создана пользователем programm90, 22 апр 2013.

  1. TopicStarter Overlay
    programm90
    Offline

    programm90

    Регистрация:
    12 фев 2013
    Сообщения:
    37
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте,
    вот запрос:

    ВЫБРАТЬ
    СУММА(РегЦеныАТТ.Цена * ДкПереоценкаТов.Количество) КАК Сумма
    ИЗ
    РегистрСведений.ЦеныАТТ.СрезПоследних КАК РегЦеныАТТ
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПереоценкаТоваровВРознице.Товары КАК ДкПереоценкаТов
    ПО РегЦеныАТТ.Регистратор = ДкПереоценкаТов.Ссылка
    ГДЕ
    ДкПереоценкаТов.Номенклатура.Ссылка = РегЦеныАТТ.Номенклатура.Ссылка









    Почему выполняется очень долго?
    Напрример, 15 секунд первые 100 запросов.



    Так запрос тоже исполняется долго:
    ВЫБРАТЬ
    РегЦеныАТТ.Цена, ДкПереоценкаТов.Количество
    ИЗ
    РегистрСведений.ЦеныАТТ.СрезПоследних КАК РегЦеныАТТ
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПереоценкаТоваровВРознице.Товары КАК ДкПереоценкаТов
    ПО РегЦеныАТТ.Регистратор = ДкПереоценкаТов.Ссылка
    ГДЕ
    ДкПереоценкаТов.Номенклатура.Ссылка = РегЦеныАТТ.Номенклатура.Ссылка



    Мне сказали получить количество и сумму всех документов типа ПереоценкаТоваровВРознице. Так как в данном документе не указана сумма, то я ее брал из Регистра сведений ЦеныАТТ.
    Период - за все время.
    Если разделить запрос на две части - выбрать все записи из регистра сведений и все товары из табличной части всех документов типа ПереоценкаТоваровВРознице, то получается 16990 и около 20000 штук соответственно.

    Заранее спасибо за ответ
  2. La Navidad
    Offline

    La Navidad Опытный в 1С

    Регистрация:
    25 дек 2012
    Сообщения:
    203
    Симпатии:
    1
    Баллы:
    26
    Попробуйте так

    Код:
    ВЫБРАТЬ
    СУММА(РегЦеныАТТ.Цена * ДкПереоценкаТов.Количество) КАК Сумма
    ИЗ
    РегистрСведений.ЦеныАТТ.СрезПоследних КАК РегЦеныАТТ
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПереоценкаТоваровВРознице.Товары КАК ДкПереоценкаТов
    ПО РегЦеныАТТ.Регистратор = ДкПереоценкаТов.Ссылка и ДкПереоценкаТов.Номенклатура.Ссылка = РегЦеныАТТ.Номенклатура.Ссылка
    
  3. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    я бы попробовала левое соединение
  4. vartanet
    Offline

    vartanet Опытный в 1С Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    гыгы.. у вас этот запрос в цикле???
  5. TopicStarter Overlay
    programm90
    Offline

    programm90

    Регистрация:
    12 фев 2013
    Сообщения:
    37
    Симпатии:
    0
    Баллы:
    1
    Спасибо большое, внутреннее соединение заработало.
    А вы можете объяснить почему внутреннее соединение работает быстрее чем где (декартово произведение). При внутреннем соединении не происходит предварительного ? перемножения строк? Если да, то как это достигается?
  6. mkostyas
    Offline

    mkostyas

    Регистрация:
    23 дек 2008
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
  7. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а можно ссылку на статью
  8. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    programm90 обращение через . к ссылка уберите. Просто Номенклатура.

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