Имя: Пароль:
1C
1С v8
ЗУП. Запрос по кадровым перемещениям
0 sound
 
14.09.15
11:15
Други, помогите с запросиком в 1с ЗУП.
Нужно выдернуть по всем сотрудникам их последние кадровые перемещения, то есть когда конкретно был либо перевод из подразделения в подразделение, либо перевод на новую должность. Просто этим документом часто делают изменение по начислениям, а нужно только изменения подразделений или должностей.
1 Бледно Золотистый
 
14.09.15
11:23
Если не менялись начисления, то в регистр Плановые начисления сотрудников документ ничего не пишет.
2 sound
 
14.09.15
11:37
(1) Это уже хорошо
3 kumena
 
14.09.15
11:39
напишу, не бесплатно, устроит?
4 sound
 
14.09.15
11:40
(3) Нет, спасибо )
5 IBTM
 
14.09.15
12:54
(0) так вроде типовой отчет есть в кадровом учете
6 sound
 
14.09.15
14:38
(5) Да уже разобрался, просто к документу прилефтджойнил таблицу с регистром "Плановые начисления" по регистратору и в условие поставил Есть NULL, и все заработало как надо. Просто туплю чот с утра, тем не менее всем спасибо!
7 piter3
 
14.09.15
14:41
(6) неправильно.могут быть перемещения без изменения отплаты
8 mooo
 
14.09.15
14:59

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

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    РаботникиОрганизаций.Сотрудник,
    РаботникиОрганизаций.Период,
    РаботникиОрганизаций.ПодразделениеОрганизации,
    РаботникиОрганизаций.Должность,
    РаботникиОрганизаций.Регистратор
ИЗ
    РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
ГДЕ
    РаботникиОрганизаций.Сотрудник = &Сотрудник
    И РаботникиОрганизаций.Период > &ДатаНачала
    И РаботникиОрганизаций.Период <= &ДатаОкончания

ОБЪЕДИНИТЬ ВСЕ

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    КадроваяИстория.Сотрудник,
    КадроваяИстория.Период,
    КадроваяИстория.Регистратор,
    МАКСИМУМ(ПрежниеПериоды.Период) КАК ПрежнийПериод
ПОМЕСТИТЬ ВТПериоды
ИЗ
    ВТКадроваяИстория КАК КадроваяИстория
        ЛЕВОЕ СОЕДИНЕНИЕ ВТКадроваяИстория КАК ПрежниеПериоды
        ПО КадроваяИстория.Сотрудник = ПрежниеПериоды.Сотрудник
            И КадроваяИстория.Период > ПрежниеПериоды.Период

СГРУППИРОВАТЬ ПО
    КадроваяИстория.Сотрудник,
    КадроваяИстория.Период,
    КадроваяИстория.Регистратор
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Периоды.Сотрудник,
    Периоды.Период,
    Периоды.Регистратор,
    ТекущиеДанные.ПодразделениеОрганизации КАК ТекущееПодразделениеОрганизации,
    ПрежниеДанные.ПодразделениеОрганизации КАК ПрежнееПодразделениеОрганизации,
    ТекущиеДанные.Должность КАК ТекущаяДолжность,
    ПрежниеДанные.Должность КАК ПрежняяДолжность
ИЗ
    ВТПериоды КАК Периоды
        ЛЕВОЕ СОЕДИНЕНИЕ ВТКадроваяИстория КАК ТекущиеДанные
        ПО Периоды.Сотрудник = ТекущиеДанные.Сотрудник
            И Периоды.Период = ТекущиеДанные.Период
        ЛЕВОЕ СОЕДИНЕНИЕ ВТКадроваяИстория КАК ПрежниеДанные
        ПО Периоды.Сотрудник = ПрежниеДанные.Сотрудник
            И Периоды.ПрежнийПериод = ПрежниеДанные.Период
ГДЕ
    (ТекущиеДанные.ПодразделениеОрганизации <> ПрежниеДанные.ПодразделениеОрганизации
            ИЛИ ТекущиеДанные.Должность <> ПрежниеДанные.Должность)
9 kumena
 
14.09.15
14:59
(5)
этот отчет за период показывает, а если я правильно понял, автору надо отсчитывать назад на неопределенный период, причем у каждого сотрудника он может быть свой.

>>  Да уже разобрался, просто к документу прилефтджойнил таблицу с регистром "Плановые начисления" по регистратору и в условие поставил Есть NULL

как все запущено!
10 kumena
 
14.09.15
15:02
(8) этот запрос уже гораздо "теплее", но он не учитывает изменения по периоду завершения.
11 mooo
 
14.09.15
15:11
(10) учитывает))
12 aleks_default
 
14.09.15
15:21
(10) у него старая версия ЗУПа;)
13 mistеr
 
14.09.15
16:07
(6) Перевод на новую должность обычно сопровождается изменением начислений, нет?
14 sound
 
14.09.15
16:08
(13) не факт