8.х Помогите оптимизировать запрос

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Amber, 18 мар 2009.

  1. TopicStarter Overlay
    Amber
    Offline

    Amber Опытный в 1С

    Регистрация:
    16 ноя 2007
    Сообщения:
    98
    Симпатии:
    0
    Баллы:
    26
    Запрос выполняется достаточно долго. посоветуйте как его оптимизировать.
    Код:
    "
    ВЫБРАТЬ
    ВзаиморасчетыСКонтрагентами.Период КАК ПериодОплаты,
    ВзаиморасчетыСКонтрагентами.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
    ВзаиморасчетыСКонтрагентами.Регистратор.Контрагент КАК РегистраторКонтрагент,
    ВзаиморасчетыСКонтрагентами.Сделка.Дата КАК ДатаОплаты,
    ВзаиморасчетыСКонтрагентами.Регистратор.Представление КАК Допполе
    ИЗ
    (ВЫБРАТЬ
    СкидочныеКарты.контрагент КАК контрагент
    ИЗ
    Справочник.СкидочныеКарты КАК СкидочныеКарты) КАК ВложенныйЗапрос
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами КАК ВзаиморасчетыСКонтрагентами
    ПО ВложенныйЗапрос.контрагент = ВзаиморасчетыСКонтрагентами.Регистратор.Контрагент
    ГДЕ
    ВзаиморасчетыСКонтрагентами.Регистратор.Оплачено = ИСТИНА
    И ВзаиморасчетыСКонтрагентами.Сделка.Дата >= &Дата
    </span>
    СГРУППИРОВАТЬ ПО
    ВзаиморасчетыСКонтрагентами.Период,
    ВзаиморасчетыСКонтрагентами.СуммаВзаиморасчетов,
    ВзаиморасчетыСКонтрагентами.Регистратор.Контрагент,
    ВзаиморасчетыСКонтрагентами.Сделка.Дата,
    ВзаиморасчетыСКонтрагентами.Регистратор.Представление
    ИТОГИ
    СУММА(СуммаВзаиморасчетов)
    ПО
    РегистраторКонтрагент"
    </FONT></FONT></pre>
    Конфигурация пишиться с нуля, поэтому менять структуру базы(создать регистр или еще что-то) я могу относительно легко. Заранее спасибо.
  2. tunec
    Offline

    tunec Опытный в 1С

    Регистрация:
    2 июн 2008
    Сообщения:
    469
    Симпатии:
    0
    Баллы:
    26
    попробуй перевести на вирт. запрос...

    и засем справочник запихивать во внутренний запрос?

    у тебя сначала выбираются все записи из регистра, потом медленным внутренним соединением соединяются со всеми записями справочника и только потом происходит отсев лишних.
  3. duh
    Offline

    duh Опытный в 1С

    Регистрация:
    21 янв 2009
    Сообщения:
    74
    Симпатии:
    0
    Баллы:
    26
    "Оплачено" сделайте измерением регистра и используйте параметры виртуальной таблицы вместо конструкции ГДЕ, так быстрее. И еще (надо пробовать) добавить контрагена в измерения, не связывать регистр с карточками, а подать список значений контрагентов из справочника СкидочныеКарты, т.е. из регистра выберуться только те контрагенты у которых есть карты, а в вашем варианте сначала выбираются все записи регистра а потом только связываются с картами.

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