8.х реализация сложного запроса

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

  1. TopicStarter Overlay
    wertklop
    Offline

    wertklop Опытный в 1С

    Регистрация:
    12 май 2008
    Сообщения:
    321
    Симпатии:
    0
    Баллы:
    26
    всем привет!
    пишу запрос, но получается очень криво.
    в конфигурации есть регистр накопления "ОстаткиТоваровКомпании" и регистр сведений "Цены". регистратором регистра сведений является документ "ИзменениеЦен", где назначаются соответственно цена для каждойноменклатуры. в регистре накопления считается соответственно количество каждой номенклатуры. суть запроса в том, что он должен создавать таблицу, в которой присутствовали значения для каждой номенклатуры конечный остаток(берётся из регистра накопления) и его цена(берётся из регистра сведений).
    делаю я следующим образом: в конструкторе выбираю оба регистра, соответствующие поля и условия.
    Код:
    "ВЫБРАТЬ
    ОстаткиТоваровКомпанииОстаткиИОбороты.Номенклатура,
    ОстаткиТоваровКомпанииОстаткиИОбороты.СкладКомпании,
    ОстаткиТоваровКомпанииОстаткиИОбороты.КоличествоКонечныйОстаток,
    Цены.Цена
    ИЗ
    РегистрНакопления.ОстаткиТоваровКомпании.ОстаткиИОбороты КАК ОстаткиТоваровКомпанииОстаткиИОбороты
    ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.Цены КАК Цены
    ПО ОстаткиТоваровКомпанииОстаткиИОбороты.Номенклатура = Цены.Номенклатура
    ГДЕ
    ОстаткиТоваровКомпанииОстаткиИОбороты.СкладКомпании = &склад"
    
    
    но проблема в том, чтопри выполнении донного запроса, в частности в консоли запросов, проц загружается на 100%, памяти расходуется аж гигабайтами. но это ещё терпимо. главное то, что всё это дело зависает на неопределённое время!
    подскажите, как это правильно организовать, желательно с примерами или полезными ссылками
    (можно конечно сделать 2 различных запроса для каждого регистра, а потом полученные таблицы значений в цикле сравнить и соответственно объединить в последствии необходимые записи. но будет ли это быстрее и правильнее?может есть способ сделать всё это в 1 и том же запросе?)
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Изучите, что такое параметры в виртуальных таблицах.
    И нафига вам полное соединение?

    Код:
    "ВЫБРАТЬ
    ОстаткиТоваровКомпанииОстатки.Номенклатура,
    ОстаткиТоваровКомпанииОстатки.СкладКомпании,
    ОстаткиТоваровКомпанииОстатки.КоличествоОстаток,
    Цены.Цена
    ИЗ
    РегистрНакопления.ОстаткиТоваровКомпании.Остатки(, Склад = &Склад) КАК ОстаткиТоваровКомпанииОстатки
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены КАК Цены
    ПО ОстаткиТоваровКомпанииОстаткиИОбороты.Номенклатура = Цены.Номенклатура"
    
  3. TopicStarter Overlay
    wertklop
    Offline

    wertklop Опытный в 1С

    Регистрация:
    12 май 2008
    Сообщения:
    321
    Симпатии:
    0
    Баллы:
    26
    а как сделать так, чтобы в таблицу попадала только одна запись из регистра сведений(регистра сведений состоит из документов, которые имеют реквизит период, по которому должен идти отбор, выбираться по последнему)
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Используйте срез последних, а не реальную таблицу

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