8.х Необходимо упростить запрос

Тема в разделе "Система компоновки данных (СКД)", создана пользователем mashams, 15 фев 2017.

  1. TopicStarter Overlay
    mashams
    Offline

    mashams

    Регистрация:
    20 окт 2016
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Имеется запрос:
    Код:
    ВЫБРАТЬ
       ХозрасчетныйОстатки.Субконто2 КАК Субконто2,
       ХозрасчетныйОстатки.Субконто3,
       ХозрасчетныйОбороты.КорСубконто1 КАК КорСубконто1,
       ХозрасчетныйОстатки.СуммаОстаток КАК СуммаОстаток,
       ХозрасчетныйОбороты.СуммаОборотКт КАК СуммаОборотКт,
       ХозрасчетныйОбороты2.СуммаОборотКт КАК СуммаОборотКт1,
       ХозрасчетныйОбороты.СуммаОборотКт / ХозрасчетныйОбороты2.СуммаОборотКт КАК Кт,
       ХозрасчетныйОбороты.СуммаОборотКт / ХозрасчетныйОбороты2.СуммаОборотКт * ХозрасчетныйОстатки.СуммаОстаток КАК Распр
    ИЗ
       РегистрБухгалтерии.Хозрасчетный.Остатки(
           &КонецПериода,
           Счет = &Счет1007,
           ,
           Организация = &Организация
             И Субконто1 = &Контрагент) КАК ХозрасчетныйОстатки,
       РегистрБухгалтерии.Хозрасчетный.Обороты(
           &НачалоПериода,
           &КонецПериода,
           ,
           Счет = &Счет1007,
           ,
           Организация = &Организация
             И Субконто1 = &Контрагент
             И КорСубконто1 в (&ОБъектыСтроительства),
           КорСчет = &Счет803,
           ) КАК ХозрасчетныйОбороты,
       РегистрБухгалтерии.Хозрасчетный.Обороты(
           &НачалоПериода,
           &КонецПериода,
           ,
           Счет = &Счет1007,
           ,
           Организация = &Организация
             И Субконто1 = &Контрагент
             И КорСубконто1 в (&ОБъектыСтроительства),
           КорСчет = &Счет803,
           ) КАК ХозрасчетныйОбороты2
    
    УПОРЯДОЧИТЬ ПО
       ХозрасчетныйОстатки.Субконто2.Наименование,
       КорСубконто1
    ИТОГИ
       СУММА(СуммаОстаток),
       СУММА(СуммаОборотКт),
       СУММА(СуммаОборотКт1),
       СУММА(Кт),
       СУММА(Распр)
    ПО
       Субконто2
    
    Можно ли чем-то заменить кусок кода:
    Код:
    РегистрБухгалтерии.Хозрасчетный.Обороты(
    &НачалоПериода,
    &КонецПериода,
    ,
    Счет = &Счет1007,
    ,
    Организация = &Организация
    И Субконто1 = &Контрагент
    И КорСубконто1 в (&ОБъектыСтроительства),
    КорСчет = &Счет803,
    ) КАК ХозрасчетныйОбороты2
    
    чтобы не обращаться 2 раза к одной таблице?
    Последнее редактирование: 16 фев 2017
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.900
    Симпатии:
    1.035
    Баллы:
    204
    1. Вы SQL сервер бы пожалели
    2. В чем смысл 2-х соединение с таблицей оборотов вообще?

    p.s. этот запрос не то, что упрощать нужно, его переделывать полностью нужно.
  3. TopicStarter Overlay
    mashams
    Offline

    mashams

    Регистрация:
    20 окт 2016
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    1. Просто не видим смысла.
    2. Запрос действующий. Соединения тут не причем. Просто предполагаю, что два раза обращаться к одним и тем же оборотам, чтобы получить как развернутую сумму, так и итоговую, для получения коэффициентов(пропорции) распределения - не совсем корректно.

    Задача запроса следующая: есть остатки Материалов по определенной аналитике. Их суммы нужно распределить пропорционально суммам оборотов конкретных ОбъектовСтроительства.
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.900
    Симпатии:
    1.035
    Баллы:
    204
    Создаете временную таблицу оборотов с разворотом по КорСубконто1.

    Из нее еще одну временую таблицу общих оборотов.

    Выполняете 2 соединения остатков с временными таблицами.

    Судя по параметрам запроса, вы всех контрагентов циклом обходите?
    Последнее редактирование: 15 фев 2017
  5. TopicStarter Overlay
    mashams
    Offline

    mashams

    Регистрация:
    20 окт 2016
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Тоже считаем, что с помощью временных таблиц было бы правильнее. Просто раньше не приходилось с ними работать, поэтому пока не разобрались.