Имя: Пароль:
1C
1С v8
Отчет Унифицированная форма Т-13 в УПП формируется очень долго
0 malets
 
23.08.13
16:16
Здравствуйте, коллеги!
Кто-нибудь сталкивался с такой проблемой в Унифицированной форме Т-13, что при выборе в отборе организации отчет формируется гораздо медленне, чем без отбора? строка на которой висит отчет по 2 часа: ПроцессорВывода.Вывести(ПроцессорКомпоновки).
1 piter3
 
23.08.13
16:32
замер производительности что показывает (топ по времени)?
2 malets
 
23.08.13
16:34
около 3000 (1)
3 piter3
 
23.08.13
16:38
под полными правами что? обслуживание базы?
4 malets
 
23.08.13
16:39
это под полными правами столько формируется. Второй вопрос не поняла.
5 piter3
 
23.08.13
16:40
файловая или sql?
6 malets
 
23.08.13
16:41
база на sql.
7 piter3
 
23.08.13
16:46
(4)переиндексация, обновление статистики. недавно начались тормоза или всегда
8 malets
 
23.08.13
16:53
(7)те три месяца, что я работаю с этой базой, пользователи все время жаловались, что этот отчет медленно формируется. Я долго анализировала код и сам запрос. В итоге оказалось, что торможение такое возникает именно когда делается отбор по организации, если не ставить отбор, то скорость формирования устраивает. Переиндексация и обновление статистики не производились.
9 piter3
 
23.08.13
16:56
делайте и резервирование не забудьте добавить
10 malets
 
23.08.13
17:02
(9) ввела вас в заблуждение, на самом деле и переиндексация и обновление статистики делаются каждую ночь вместе с созданием резервной копии базы.
11 piter3
 
23.08.13
17:11
висит 2 часа это сколько сотрудников кстати?
12 malets
 
23.08.13
17:13
это при отборе по одному подразделению, в котором 22 человека.
13 malets
 
23.08.13
17:14
Если без отбора по организации, то замер показывает на этой строке 0,76.
14 malets
 
23.08.13
17:22
Не знаю, куда дальше можно копать. Если б дело было в запросе , то можно было бы его как-то оптимизировать, а тут... не знаю... посоветуйте что-нибудь.
15 piter3
 
23.08.13
17:24
релиз упп и платформы
16 malets
 
23.08.13
17:26
1С:Предприятие 8.2 (8.2.18.109)
Управление птицефабрикой, редакция 1.3 (1.3.41.1)
отраслевое решение на базе УПП.
17 piter3
 
23.08.13
17:28
а 18 это зачем требование?
18 piter3
 
23.08.13
17:31
другио отчеты на скд тоже тупят али как?
19 malets
 
23.08.13
17:31
не вставало очередное обновление, поэтому пришлось поставить 18.
20 piter3
 
23.08.13
17:34
я бы в демке еще попробовал
21 piter3
 
23.08.13
17:35
еще вариант в копии тестирование чере конфигуратор  сделать
22 DarKySiK
 
23.08.13
17:46
Отчет в принципе туго работает, когда отбор по подразделению или по организации делаешь. Можно попробовать оптимизировать типовой запрос. Этот вопрос на форуме всплывал кстати.
23 piter3
 
23.08.13
17:49
(22) автор утверждает 2 часа на 22 сотрах.
24 piter3
 
23.08.13
17:50
ответь на (18)
25 DarKySiK
 
23.08.13
17:52
(24) Да пятница у нее уже)
26 malets
 
26.08.13
09:16
(18) Извините, действительно, у меня уже была пятница, рабочий день закончился :). На другие отчеты пользователи не жаловались. Запустила другой отчет Унифицированную форму Т-2 с теми же отборами по подразделению (с организацией и без нее) - похожих тормозов не наблюдается. Сейчас на копии попробую тестирование провести...
(23) Ну почти 2 часа (3000 секунд).
27 SeraFim
 
26.08.13
09:20
28 malets
 
26.08.13
09:30
(27) Да, уже видела эту тему. Попробую изменить запрос, может, будет быстрее работать. С функцией ПроверитьВыводТабличногоДокумента я уже разобралась, т.к. она тоже очень долго работает, заменила ее на простой подсчет строк на странице.
29 malets
 
10.09.13
15:39
(21) Тестирование и исправление не помогло. Остался еще вариант в демо-базе попробовать, но позже.
30 piter3
 
10.09.13
15:41
(29)мы не торопимся :)
31 Бледно Золотистый
 
10.09.13
15:43
(29) Если тормозит ПроверитьВыводТабличногоДокумента, то может с драйверами принтера проблемы?
32 RomaH
 
naïve
10.09.13
15:48
(31) тормозит - в твоем понимании это сколько времени на выполнение метода?
33 malets
 
10.09.13
15:49
(31) С драйверами нет проблем. К тому же с методом ПроверитьВыводТабличногоДокумента я уже разобралась...
34 RomaH
 
naïve
10.09.13
15:52
(23) там отчет так написан, что информация по подразделению с одним человеком обрабатывается по ВСЕМ сотрудникам когда либо работавшим в предприятии (это сначала - когда таблица с датами получается)
а только потом на неё накладывается фильтр по организации/подразделению и она уменьшается до списка ВСЕ когда либо работавших в подразделении/организации - и дальше уже эта таблица обрабатывается алгоритмом модуля отчета
35 malets
 
10.09.13
15:59
(34) У меня несколько другая проблема. Как таковой запрос формируется достаточно быстро, оооочень медленно работает именно строка с кодом ПроцессорВывода.Вывести(ПроцессорКомпоновки) и только если стоит отбор по Организации. Если отбор не стоит, то все хорошо.
36 RomaH
 
naïve
10.09.13
16:01
(35) ну так там как бы два запроса
первый в СКД - он как раз и выполняется ПроцессорВывода
другой в модуле - он обрабатывает то что получается в СКД

см (27)
37 RomaH
 
naïve
10.09.13
16:02
кинь запрос из СКД сюда - сильно отличается от ЗУП?
38 malets
 
10.09.13
16:40
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ПоследниеДаты.ПериодРегистрации КАК ПериодРегистрации,
    РаботникиОрганизаций.Сотрудник КАК Сотрудник,
    ВЫБОР
        КОГДА РаботникиОрганизаций.ПериодЗавершения <= ПоследниеДаты.ДатаКалендаря
                И РаботникиОрганизаций.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
            ТОГДА РаботникиОрганизаций.ОбособленноеПодразделениеЗавершения
        ИНАЧЕ РаботникиОрганизаций.ОбособленноеПодразделение
    КОНЕЦ КАК Организация,
    РаботникиОрганизаций.Сотрудник.Физлицо КАК Физлицо,
    ВЫБОР
        КОГДА РаботникиОрганизаций.ПериодЗавершения <= ПоследниеДаты.ДатаКалендаря
                И РаботникиОрганизаций.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
            ТОГДА РаботникиОрганизаций.ПодразделениеОрганизацииЗавершения
        ИНАЧЕ РаботникиОрганизаций.ПодразделениеОрганизации
    КОНЕЦ КАК ПодразделениеОрганизации,
    ВЫБОР
        КОГДА РаботникиОрганизаций.ПериодЗавершения <= ПоследниеДаты.ДатаКалендаря
                И РаботникиОрганизаций.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
            ТОГДА РаботникиОрганизаций.ДолжностьЗавершения
        ИНАЧЕ РаботникиОрганизаций.Должность
    КОНЕЦ КАК Должность,
    ВЫБОР
        КОГДА РаботникиОрганизаций.ПериодЗавершения <= ПоследниеДаты.ДатаКалендаря
                И РаботникиОрганизаций.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
            ТОГДА РаботникиОрганизаций.ГрафикРаботыЗавершения
        ИНАЧЕ РаботникиОрганизаций.ГрафикРаботы
    КОНЕЦ КАК ГрафикРаботы,
    РаботникиОрганизаций.Организация КАК ГоловнаяОрганизация,
    ПоследниеДаты.ДатаКалендаря
ПОМЕСТИТЬ Сотрудники
ИЗ
    (ВЫБРАТЬ
        ДатыПоследнихДвижений.ПериодРегистрации КАК ПериодРегистрации,
        ДатыПоследнихДвижений.Период КАК Период,
        РаботникиОрганизаций.Сотрудник КАК Физлицо,
        РаботникиОрганизаций.Организация КАК Организация,
        КОЛИЧЕСТВО(РаботникиОрганизаций.Период) КАК КолВоДвижений,
        ДатыПоследнихДвижений.ДатаКалендаря КАК ДатаКалендаря
    ИЗ
        (ВЫБРАТЬ
            Периоды.Период КАК ПериодРегистрации,
            МАКСИМУМ(РаботникиОрганизаций.Период) КАК Период,
            РаботникиОрганизаций.Сотрудник КАК Физлицо,
            РаботникиОрганизаций.Организация КАК Организация,
            Периоды.ДатаКалендаря КАК ДатаКалендаря
        ИЗ
            (ВЫБРАТЬ РАЗЛИЧНЫЕ
                НАЧАЛОПЕРИОДА(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, МЕСЯЦ) КАК Период,
                РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаКалендаря
            ИЗ
                РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
            ГДЕ
                РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &НачалоПериода И &КонецПериода) КАК Периоды
                ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
                ПО (РаботникиОрганизаций.Период <= Периоды.ДатаКалендаря)
        {ГДЕ
            РаботникиОрганизаций.Сотрудник.Физлицо.* КАК Физлицо}
        
        СГРУППИРОВАТЬ ПО
            Периоды.Период,
            РаботникиОрганизаций.Организация,
            РаботникиОрганизаций.Сотрудник,
            Периоды.ДатаКалендаря) КАК ДатыПоследнихДвижений
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
            ПО ДатыПоследнихДвижений.Организация = РаботникиОрганизаций.Организация
                И ДатыПоследнихДвижений.Период = РаботникиОрганизаций.Период
                И ДатыПоследнихДвижений.Физлицо = РаботникиОрганизаций.Сотрудник
    {ГДЕ
        РаботникиОрганизаций.Сотрудник.Физлицо.* КАК Физлицо}
    
    СГРУППИРОВАТЬ ПО
        ДатыПоследнихДвижений.ПериодРегистрации,
        РаботникиОрганизаций.Организация,
        ДатыПоследнихДвижений.Период,
        РаботникиОрганизаций.Сотрудник,
        ДатыПоследнихДвижений.ДатаКалендаря) КАК ПоследниеДаты
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
        ПО ПоследниеДаты.Организация = РаботникиОрганизаций.Организация
            И ПоследниеДаты.Период = РаботникиОрганизаций.Период
            И ПоследниеДаты.Физлицо = РаботникиОрганизаций.Сотрудник
ГДЕ
    (ПоследниеДаты.КолВоДвижений = 2
                И РаботникиОрганизаций.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
            ИЛИ ПоследниеДаты.КолВоДвижений = 1)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    Сотрудники.ПериодРегистрации КАК ПериодРегистрации,
    Сотрудники.Сотрудник КАК Сотрудник,
    Сотрудники.Организация КАК Организация,
    Сотрудники.Физлицо КАК Физлицо,
    Сотрудники.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
    Сотрудники.Должность КАК Должность,
    Сотрудники.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
    Сотрудники.ДатаКалендаря КАК ДатаКалендаря,
    Сотрудники.ГрафикРаботы
{ВЫБРАТЬ
    ПериодРегистрации,
    Сотрудник.*,
    Организация.*,
    Физлицо.*,
    ПодразделениеОрганизации.*,
    Должность.*,
    ГоловнаяОрганизация.*,
    ДатаКалендаря}
ИЗ
    Сотрудники КАК Сотрудники
39 malets
 
10.09.13
16:43
(36) Дело в том, что запрос один и тот же в случае с отбором и без него. Так почему же такая разница во времени формирования отчета?
40 piter3
 
10.09.13
17:36
специально проверил: в (38) срабатывают быстрые отборы по сотру и подр-ю. и занимает все это секунды.
41 piter3
 
10.09.13
17:51
+ к (40) наверняка в виде условия "ГДЕ"
42 piter3
 
11.09.13
08:58
а сколько записей в РаботникиОрганизаций?
43 RomaH
 
naïve
11.09.13
08:59
(40) ты это проверял на какой базе?
7 лет и штат 2000 с текучкой в 30% в год?
44 RomaH
 
naïve
11.09.13
09:01
(38) см (27) ... ну и не забудь условие которое не поместилось в (38) добавить в первую выборку {ГДЕ ...
45 piter3
 
11.09.13
09:13
(43) 5 лет штат около 4к, о текучке помолчу. лучше в попугаях пусть скажет.
(44) если все равно сначала выбираются все записи, а потом на этот набор еще и где...
меня интересует почему ГДЕ тормозит:выборка мегабольшая или что?
46 RomaH
 
naïve
11.09.13
09:16
(ВЫБРАТЬ РАЗЛИЧНЫЕ
                НАЧАЛОПЕРИОДА(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, МЕСЯЦ) КАК Период,
                РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаКалендаря
            ИЗ
                РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
            ГДЕ
                РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &НачалоПериода И &КонецПериода) КАК Периоды
                ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
                ПО (РаботникиОрганизаций.Период <= Периоды.ДатаКалендаря)

маленькая выборка получится?
47 RomaH
 
naïve
11.09.13
09:19
(45) да - путем сокращения выборки добиваемся ускорения в ... 30 раз
48 piter3
 
11.09.13
09:25
(46) никто и не спорит
все таки хочу ответ на (42)
49 RomaH
 
naïve
11.09.13
09:41
(48) у меня 60 000 сейчас
50 RomaH
 
naïve
11.09.13
09:45
(48) а первая таблица в СКД за август получается в 750 000
51 RomaH
 
naïve
11.09.13
09:49
проверил в консоли запросов - в общем-то просто запрос - ничего криминального - ну секунд 5-8 отрабатывает все это
наложение условий на конечную таблицу не увеличивает время работы

возможно время уходит в характеристики
у меня кучка характеристик к должностям привязывается и к подразделению парочка
52 RomaH
 
naïve
11.09.13
10:09
(51) - не - нифига - убрал характеристики из СКД - все-равно подвисает на формировании
53 piter3
 
11.09.13
10:19
(49)(50) 22к и 250к
(51) время такое же примерно. теперь вопрос на миллион чего у автора тогда такие тормоза
54 RomaH
 
naïve
11.09.13
11:52
(53) у меня тоже тормаза - тормаза проявляются именно в СКД
запрос отрабатывает приемлемо
а вот СКД - 260 сек у меня
55 malets
 
12.09.13
14:10
(40) Количество записей в РаботникиОрганизаций 16 248
56 malets
 
12.09.13
14:26
(55) к (42)
57 RomaH
 
naïve
12.09.13
15:19
(56) ну так что? помогло?
58 RomaH
 
naïve
12.09.13
15:20
(55) и сколько у тебя формируется один отчет по небольшому подразделению? сколько времени СКД отрабатывает?