Имя: Пароль:
1C
 
Долго формируется печатная форма ТОРГ 12
0 Gossar1C
 
08.10.15
14:21
Здравствуйте уважаемые знатоки!) Возникла проблема в УТ 11.1 с формированием печатной формы ТОРГ 12. А суть в том что формируется очень долго секунд 30-40, с учетом что позиций в документе бывает мало 5-10 позиций. Покопал отладчиком и обнаружил зависание на этой процедуре.

Процедура Поместить Временную Таблицу Коэффициенты Упаковок (МенеджерВременныхТаблиц, ИмяТаблицыТоваров = "ТаблицаТоваров") Экспорт
    
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
    Запрос.Текст = "
    |ВЫБРАТЬ
    |    ТаблицаТоваров.Номенклатура,
    |    ТаблицаТоваров.Упаковка КАК Упаковка,
    |    УпаковкиНоменклатуры.Владелец КАК Владелец,
    |    МИНИМУМ(ВЫБОР
    |            КОГДА УпаковкиНоменклатуры.Ссылка ЕСТЬ NULL
    |                ТОГДА 1
    |            ИНАЧЕ УпаковкиНоменклатуры.Коэффициент
    |        КОНЕЦ) КАК Коэффициент
    |ПОМЕСТИТЬ Упаковки
    |ИЗ
    |    " + ИмяТаблицыТоваров + " КАК ТаблицаТоваров
    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УпаковкиНоменклатуры КАК УпаковкиНоменклатуры
    |        ПО (УпаковкиНоменклатуры.Родитель = ТаблицаТоваров.Упаковка)
    |            И УпаковкиНоменклатуры.Владелец =
    |                ВЫБОР
    |                    КОГДА ТаблицаТоваров.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
    |                        ТОГДА ТаблицаТоваров.Номенклатура
    |                    ИНАЧЕ ТаблицаТоваров.Упаковка.Владелец
    |                КОНЕЦ
    |ГДЕ
    |    НЕ УпаковкиНоменклатуры.ПометкаУдаления
    |
    |СГРУППИРОВАТЬ ПО
    |    ТаблицаТоваров.Номенклатура,
    |    ТаблицаТоваров.Упаковка,
    |    УпаковкиНоменклатуры.Владелец
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    Упаковки.Номенклатура,
    |    Упаковки.Упаковка КАК Упаковка,
    |    Упаковки.Коэффициент КАК КоэффициентУпаковки,
    |    МИНИМУМ(УпаковкиНоменклатуры.Ссылка) КАК ВложеннаяУпаковка,
    |    МИНИМУМ(УпаковкиНоменклатуры.Коэффициент) КАК КоэффициентВложеннойУпаковки
    |ПОМЕСТИТЬ ВложенныеУпаковки
    |ИЗ
    |    Упаковки КАК Упаковки
    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УпаковкиНоменклатуры КАК УпаковкиНоменклатуры
    |        ПО Упаковки.Владелец = УпаковкиНоменклатуры.Владелец
    |            И Упаковки.Коэффициент = УпаковкиНоменклатуры.Коэффициент
    |ГДЕ
    |    УпаковкиНоменклатуры.Родитель = Упаковки.Упаковка
    |
    |СГРУППИРОВАТЬ ПО
    |    Упаковки.Номенклатура,
    |    Упаковки.Упаковка,
    |    Упаковки.Коэффициент
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ТаблицаТоваров.Номенклатура,
    |    ТаблицаТоваров.КоличествоУпаковок,
    |    ТаблицаТоваров.Количество,
    |    ТаблицаТоваров.Упаковка,
    |    ТаблицаТоваров.НомерСтроки,
    |    ВЫБОР
    |        КОГДА ВложенныеУпаковки.ВложеннаяУпаковка ЕСТЬ NULL
    |            ТОГДА ВЫБОР
    |                    КОГДА ТаблицаТоваров.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
    |                        ТОГДА 1
    |                    ИНАЧЕ ТаблицаТоваров.Упаковка.Коэффициент
    |                КОНЕЦ
    |        ИНАЧЕ ВложенныеУпаковки.КоэффициентУпаковки
    |    КОНЕЦ КАК КоэффициентУпаковки,
    |    ВЫБОР
    |        КОГДА ВложенныеУпаковки.ВложеннаяУпаковка ЕСТЬ NULL
    |            ТОГДА ВЫБОР
    |                    КОГДА ТаблицаТоваров.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
    |                        ТОГДА 1
    |                    ИНАЧЕ ТаблицаТоваров.Упаковка.Коэффициент
    |                КОНЕЦ
    |        ИНАЧЕ ВложенныеУпаковки.КоэффициентВложеннойУпаковки
    |    КОНЕЦ КАК КоэффициентВложеннойУпаковки,
    |    ВЫБОР
    |        КОГДА ВложенныеУпаковки.ВложеннаяУпаковка ЕСТЬ NULL
    |            ТОГДА ВЫБОР
    |                    КОГДА ТаблицаТоваров.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
    |                        ТОГДА ТаблицаТоваров.Номенклатура.ЕдиницаИзмерения
    |                    ИНАЧЕ ТаблицаТоваров.Упаковка
    |                КОНЕЦ
    |        ИНАЧЕ ВложенныеУпаковки.ВложеннаяУпаковка
    |    КОНЕЦ КАК ВидУпаковки,
    |    ТаблицаТоваров.Ссылка КАК Ссылка
    |ПОМЕСТИТЬ КоэффициентыУпаковок
    |ИЗ
    |    " + ИмяТаблицыТоваров + " КАК ТаблицаТоваров
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВложенныеУпаковки КАК ВложенныеУпаковки
    |        ПО ТаблицаТоваров.Номенклатура = ВложенныеУпаковки.Номенклатура
    |            И ТаблицаТоваров.Упаковка = ВложенныеУпаковки.Упаковка
    |ИНДЕКСИРОВАТЬ ПО
    |    Ссылка,
    |    НомерСтроки
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |УНИЧТОЖИТЬ Упаковки
    |;
    |/////////////////////////////////////////////////////////////////////////////
    |УНИЧТОЖИТЬ ВложенныеУпаковки
    |";
    
    Запрос.Выполнить();
    
КонецПроцедуры

Запрос и сама процедура типовые. Не могу понять в чем косяк. Заранее спасибо!
1 ДенисЧ
 
08.10.15
14:22
файловая по сети?
2 Gossar1C
 
08.10.15
14:25
клиент-сервер
3 ДенисЧ
 
08.10.15
14:25
тогда профайлером лови запрос и смотри в скуле
4 DimGan
 
08.10.15
14:50
ТИИ - возможно нужно.
5 Gossar1C
 
08.10.15
14:50
(3) что-то я с этим профайлером не разберусь походу
6 Gossar1C
 
08.10.15
14:51
(3) точнее трассировку создал, но очень сложно отследить там этот запрос
7 vogenut
 
08.10.15
15:15
(6) Установи фильтрацию на Duration > 10000
8 piter3
 
08.10.15
15:16
ну тех журнал тебе в помощь
9 Tateossian
 
08.10.15
15:19
(7) Мне кажется, проще этот запрос перетащить в консоль запросов и точечно его протестировать в профайлере.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн