Имя: Пароль:
1C
1С v8
Очень долго формируется табель
,
0 ender10
 
15.01.14
10:16
Добрый день, есть такая проблема есть база УПП, в ней с некоторых пор по одной из организаций стал очень долго заполнятся табель(по другим максимум 5 мин), а тут по по 15 минут на отдел, пытался копать, очень долго выполняется запрос к регистру "Работники организаций", мог как-то сломаться регистр или есть еще варианты куда смотреть?
1 Godofsin
 
15.01.14
10:17
(0) Замер производительности не предлагать?
2 ender10
 
15.01.14
10:18
нашел место на котором висит
строка
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
чего с этим делать не очень понятно
3 IBTM
 
15.01.14
12:17
подкинь дровишек, база растет, записей много
4 ender10
 
15.01.14
12:30
нашел момент, что делать не понятно, вот запрос

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ПоследниеДаты.ПериодРегистрации КАК ПериодРегистрации,
    РаботникиОрганизаций.Сотрудник КАК Сотрудник,
    ВЫБОР
        КОГДА РаботникиОрганизаций.ПериодЗавершения <= ПоследниеДаты.ДатаКалендаря
                И РаботникиОрганизаций.ПериодЗавершения <> ДАТАВРЕМЯ(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)


в него добавляется динамически условие

    И ВЫБОР
            КОГДА РаботникиОрганизаций.ПериодЗавершения <= ПоследниеДаты.ДатаКалендаря
                    И РаботникиОрганизаций.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                ТОГДА РаботникиОрганизаций.ОбособленноеПодразделениеЗавершения
            ИНАЧЕ РаботникиОрганизаций.ОбособленноеПодразделение
        КОНЕЦ = &П

и вот с этим условием он жестко повисает на несколько минут, хотя без него выолняется за 3 секунды, в чем причина?
5 ender10
 
15.01.14
12:31
пробовал в выбранные поля добавлять
ВЫБОР
            КОГДА РаботникиОрганизаций.ПериодЗавершения <= ПоследниеДаты.ДатаКалендаря
                    И РаботникиОрганизаций.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                ТОГДА РаботникиОрганизаций.ОбособленноеПодразделениеЗавершения
            ИНАЧЕ РаботникиОрганизаций.ОбособленноеПодразделение
        КОНЕЦ

все быстро отрабатывает
6 dmpl
 
15.01.14
12:38
(5) Попробуй убрать РАЗРЕШЕННЫЕ.
7 ender10
 
15.01.14
13:20
не помогает
8 ender10
 
15.01.14
13:20
да и запрос типовой, вот что мне не нравится
9 ender10
 
15.01.14
13:21
хотя все таки побыстрее стало, без "Разрешенные"
10 ender10
 
15.01.14
13:23
а нет, не стало, перепутал запросы...
11 ender10
 
15.01.14
13:46
вариантов нет?
12 supremum
 
15.01.14
13:47
Есть. Написать свой табель.
13 ender10
 
15.01.14
14:51
а чего не УПП сразу?)
14 IBTM
 
15.01.14
14:59
(13) )вариант
15 ender10
 
20.01.14
14:30
подниму еще разок, может кто чего предложит,
перелопатив запрос пришел к выводу что очень долго выполняется условие по организации в запросе(по всем организациям нормально, а по одной очень долго, причем записей по всем примерно одинаково), есть варианты что могло сломаться?
16 H A D G E H O G s
 
20.01.14
14:31
ms sql profiler с настройкой showxmlplan тебе в помощь.