Имя: Пароль:
1C
1С v8
Как выбрать только самых последних работающих работников организации?
0 ultrannge89
 
25.03.14
10:06
ВЫБРАТЬ
    РаботникиОрганизацийСрезПоследних.Сотрудник КАК Сотрудник,
    ВЫБОР
        КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
                И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &ТекДата
            ТОГДА РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизацииЗавершения
        ИНАЧЕ РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации
    КОНЕЦ КАК Подразделение,
    МАКСИМУМ(РаботникиОрганизацийСрезПоследних.Сотрудник.ДатаПриемаНаРаботу) КАК ДатаПриемаНаРаботу,
    РаботникиОрганизацийСрезПоследних.Сотрудник.ДатаУвольнения КАК ДатаУвольнения,
    РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо
ПОМЕСТИТЬ СотрудникиВрем1
ИЗ
    РегистрСведений.РаботникиОрганизаций.СрезПоследних(
            ,
            Сотрудник.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1)
                И Сотрудник.ДатаПриемаНаРаботу <> ДАТАВРЕМЯ(1, 1, 1)) КАК РаботникиОрганизацийСрезПоследних

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

Так Будет  Правильно? Или Еще Что-То Упустил? :)
1 ultrannge89
 
25.03.14
10:08
Ой, не все, вот:



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

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЕСТЬNULL(РаботникиОрганизацийСрезПоследних.Сотрудник, ЗНАЧЕНИЕ(Справочник.СотрудникиОрганизаций.ПустаяСсылка)) КАК Сотрудник,
    ЕСТЬNULL(РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо, ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка)) КАК ФизЛицо,
    ЕСТЬNULL(РаботникиОрганизацийСрезПоследних.Сотрудник.ДатаПриемаНаРаботу, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаПриемаНаРаботу,
    ЕСТЬNULL(РаботникиОрганизацийСрезПоследних.Сотрудник.ДатаУвольнения, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаУвольнения,
    ВЫБОР
        КОГДА РаботникиОрганизацийСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
                И РаботникиОрганизацийСрезПоследних.ПериодЗавершения <= &ТекДата
            ТОГДА ЕСТЬNULL(РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизацииЗавершения, ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка))
        ИНАЧЕ ЕСТЬNULL(РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации, ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка))
    КОНЕЦ КАК Подразделение
ИЗ
    СотрудникиВрем1 КАК СотрудникиВрем1
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних КАК РаботникиОрганизацийСрезПоследних
        ПО СотрудникиВрем1.СотрудникФизлицо = РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо
            И СотрудникиВрем1.ДатаПриемаНаРаботу = РаботникиОрганизацийСрезПоследних.Сотрудник.ДатаПриемаНаРаботу
2 Maxus43
 
25.03.14
10:09
возьми типовой запрос, не калечь мозг
3 ultrannge89
 
25.03.14
10:10
Где его можно найти?)
4 Maxus43
 
25.03.14
10:11
(3) в любом отчете ЗУПа практически
5 Maxus43
 
25.03.14
10:12
а что значит "только самых последних работающих"?
6 StarY
 
25.03.14
10:13
(0) Добавь в отчете "список сотрудников" поле "Дата приема" и отсортируй по ней.
7 ultrannge89
 
25.03.14
10:17
(5) Очень часто в больших организациях многие сотрудники часто увольняются и приходят устраиваться по новой, мне нужно одну временную таблицу из запроса соединить с сотрудниками которые работают на данный момент, у которых трудовой договр заключен в наиболее поздний срок. Просто у нас бывает что физ лицо а сотрудников несколько. Пример: совместительство, договор подряда и тп.
8 StarY
 
25.03.14
10:24
(7) При создании физлица систеиа скажет сама, что физ лицо похожее есть и выберет его. Если вопрос в этом.
9 Maxus43
 
25.03.14
10:35
(7) короче - в типовых отчетах в настройках покапайся, там скорее всего всё уже есть