Имя: Пароль:
1C
1С v8
Оптимизация запроса к регистру бухгалтерии
,
0 antihacker
 
19.10.17
11:18
Добрый день !

Вот запрос. Но пахоже что он тормозит.

Как можно еще оптимизировать ?

Функция ТекстЗапросаДляОптимизации() Экспорт
    ТекстЗапроса =
        "ВЫБРАТЬ
        |    ЗакупкиОбороты.Контрагент
        |ПОМЕСТИТЬ ВТ_Контрагенты
        |ИЗ
        |    РегистрНакопления.Закупки.Обороты(
        |            &ДатаНачала,
        |            &ДатаОкончания,
        |            ,
        |            Организация = &Организация
        |                И Валюта = &Валюта) КАК ЗакупкиОбороты
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ВЫБОР
        |        КОГДА УправленческийДвиженияССубконто.СчетДт В ИЕРАРХИИ (&СчетГруппа)
        |            ТОГДА УправленческийДвиженияССубконто.СубконтоДт1
        |        ИНАЧЕ УправленческийДвиженияССубконто.СубконтоКт1
        |    КОНЕЦ КАК Контрагент,
        |    ВЫБОР
        |        КОГДА УправленческийДвиженияССубконто.СчетДт В ИЕРАРХИИ (&СчетГруппа)
        |            ТОГДА УправленческийДвиженияССубконто.СубконтоДт1.Описание
        |        ИНАЧЕ УправленческийДвиженияССубконто.СубконтоКт1.Описание
        |    КОНЕЦ КАК ОписаниеКонтрагента,
        |    УправленческийДвиженияССубконто.Сумма,
        |    УправленческийДвиженияССубконто.Регистратор,
        |    УправленческийДвиженияССубконто.Содержание
        |ИЗ
        |    РегистрБухгалтерии.Управленческий.ДвиженияССубконто(
        |            &ДатаНачала,
        |            &ДатаОкончания,
        |            Организация = &Организация
        |                И ((СчетДт В ИЕРАРХИИ (&СчетГруппа)
        |                        И СубконтоДт1 В
        |                            (ВЫБРАТЬ
        |                                ВТ_Контрагенты.Контрагент
        |                            ИЗ
        |                                ВТ_Контрагенты))
        |                    ИЛИ (СчетКт В ИЕРАРХИИ (&СчетГруппа)
        |                        И СубконтоКт1 В
        |                            (ВЫБРАТЬ
        |                                ВТ_Контрагенты.Контрагент
        |                            ИЗ
        |                                ВТ_Контрагенты))),
        |            ,
        |            ) КАК УправленческийДвиженияССубконто";
        
    Возврат ТекстЗапроса;
КонецФункции
1 Волшебник
 
модератор
19.10.17
11:19
ДвиженияССубконто - тормозная таблица. Не используйте её.
2 Волшебник
 
модератор
19.10.17
11:20
в первом запросе добавьте РАЗЛИЧНЫЕ
3 Timon1405
 
19.10.17
11:21
ТОГДА выразить(УправленческийДвиженияССубконто.СубконтоДт1 как Справочник.Контрагенты).Описание
4 Шаман
 
19.10.17
11:23
у вас два раза условие отбора по счету в иеерархии. в настройках параметров и в самом условии запроса .
5 catena
 
19.10.17
11:25
(4)Где там условия в запросе? Только фильтр виртуальных таблиц.
6 antihacker
 
19.10.17
11:32
В конфигурации есть регистр накопления Закупки и регистр бухгалтерии Управленческий.
Дан текст запроса в модуле менеджера обработки Задание1_ОптимизацияЗапроса.
Цель запроса: показать движения по счету из группы 68 Налоги и сборы для контрагентов, по которым осуществлялись закупки в USD.
Есть ли необходимость в оптимизации запроса? Если да, то предоставьте свой вариант запроса, описав оптимизации.
7 youalex
 
19.10.17
11:55
Условие ИЛИ - может тупить, если оно применено к разным полям (нельзя преобразовать в условие В()).

Попробуй разбить второй запрос на два через ОБЪЕДИНИТЬ ВСЕ
8 antihacker
 
19.10.17
12:04
Шаман, кажись ты прав. Описание можно и та кдоступно удет через Контрагент.Описание.
9 Новиков
 
19.10.17
12:16
Да, обленились сегодня франчи. Одно и тоже задание не меняют месяцами. Как и обленились сами соискатели, т.к. не юзают поиск.

Лентяй antihacker лови:
Оптимизация запроса (вопрос с собеседования)

Там даже есть ответы из франча.

Дедушке Новикову +1 за феноменальную память.
10 Новиков
 
19.10.17
12:16
Название франча теперь в студию запали, чтоб узнать, кто ж эти лентяи то?
11 Новиков
 
19.10.17
12:18
И отправь им ответ  ссылку на эту тему, и на предыдущую с просьбой изменить уж задание то. А то баяном может стать. Как анекдот про Сузуки.
12 Новиков
 
19.10.17
12:19
Кстати, спроси у них, отчего они так часто свою вакансию вывешивают? Куда с 1 августа предыдущий прог сбежал?
13 ptiz
 
19.10.17
12:23
(9) Да тут и память не нужна, само в глаза бросается :)
14 Новиков
 
19.10.17
12:30
(13) Ты не понял. Здесь не важно, что ты ответишь на это задание. Важно, чтобы то, что ты ответил, совпало с ожиданием проверяющего. Он отвечает коротко: согласен, не согласен. Все с чем он согласен, нужно копировать и отправлять ему в обратку в его формулировке с небольшим рерайтом. Все с чем он не согласен, - нужно крутить его на правильный ответ и запостить здесь же его. Таким образом можно будет получить правильный ответ по мнению проверяющего. Это дампинг, как на экзамене. Следующий чувак, который пойдет в эту контору на два месяца работать, нагуглит эталонный ответ за минуту и уже отправит ему ответ, и получит эту работу. Там видимо бодишоп, тела меняются раз в месяц-два, поэтому чем быстрее ответишь, тем лучше :)
15 antihacker
 
19.10.17
12:32
Мне интересными стали сами задачи. Я живу в Казахстане. И в РФ не рвусь :-)
16 Новиков
 
19.10.17
12:38
Откуда ты получил эту задачу, что за франч и с какого он града? Мне просто интересно, т.к. проверяющий не читает мисту, и не в курсе, что его задание явно зашквариком попахивает уже.
17 kiruha
 
19.10.17
12:55
Знатный развод )
18 VS-1976
 
19.10.17
13:11
(15) тебе нужно сделать примерно так. Подправишь как нужно...

ВЫБРАТЬ РАЗЛИЧНЫЕ
  ...
ИЗ
  ( ВЫБРАТЬ
    тзСубконто.Регистратор,
    тзСубконто.ВидДвижения
  ИЗ
    ВТ_Контрагенты

    СОЕДИНЕНИЕ РегистрБухгалтерии.Управленческий.Субконто КАК тзСубконто
      ПО тзСубконто.Вид = ЗНАЧЕНИЕ( ПланВидовХарактеристик.ВидыСубконтоУправленческие.Контрагенты )
       И тзСубконто.Значение = ВТ_Контрагенты.Контрагент

  ) КАК тзРегистраторы

  СОЕДИНЕНИЕ РегистрБухгалтерии.Управленческий КАК тзДвижения
    ПО тзДвижения.Регистратор = тзРегистраторы.Регистратор
     И ВЫБОР КОГДА тзРегистраторы.ВидДвижения = ЗНАЧЕНИЕ( ВидДвиженияБухгалтерии.Дебет )
         ТОГДА тзДвижения.СчетДт В ( В ИЕРАРХИИ ( &СчетГруппа )
         ИНАЧЕ тзДвижения.СчетКт В ( В ИЕРАРХИИ ( &СчетГруппа )
       КОНЕЦ
19 VS-1976
 
19.10.17
13:22
(18) Копипаст...

ТОГДА тзДвижения.СчетДт В ИЕРАРХИИ ( &СчетГруппа )
ИНАЧЕ тзДвижения.СчетКт В ИЕРАРХИИ ( &СчетГруппа )