8.х ЗУП Отчет "Состояния сотрудников на дату"

Тема в разделе ""1С:Зарплата и управление персоналом ЗУП"", создана пользователем Nata_95, 14 май 2019.

  1. TopicStarter Overlay
    Nata_95
    Offline

    Nata_95

    Регистрация:
    14 май 2019
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Доброго времени суток! Задача состоит в том, чтобы составить отчет по сотрудникам заданного подразделения и их состояниям на определенную дату. Я составила запрос, который выводит все записи из РС СостоянияРабортниковОрганизации, но как сделать так, чтобы верно вывел именно текущее состояние сотрудника на заданную дату. Ума не приложу, что делаю не так...
    Код:
    ВЫБРАТЬ
        СостояниеРаботниковОрганизаций.Сотрудник КАК Сотрудник,
        СостояниеРаботниковОрганизаций.Состояние,
        СостояниеРаботниковОрганизаций.Период КАК Период,
        СостояниеРаботниковОрганизаций.ПериодЗавершения,
        СостояниеРаботниковОрганизаций.СостояниеЗавершения,
        МИНИМУМ(СостояниеРаботниковОрганизаций1.Период) КАК Период1,
        СостояниеРаботниковОрганизаций.Сотрудник.ТекущееПодразделениеОрганизации
    ПОМЕСТИТЬ ВТ
    ИЗ
        РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь,
        РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеРаботниковОрганизаций
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеРаботниковОрганизаций1
            ПО СостояниеРаботниковОрганизаций.Сотрудник = СостояниеРаботниковОрганизаций1.Сотрудник
                И СостояниеРаботниковОрганизаций.Период = СостояниеРаботниковОрганизаций1.Период
            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций
            ПО СостояниеРаботниковОрганизаций.Сотрудник.ТекущееПодразделениеОрганизации = ПодразделенияОрганизаций.Ссылка
                И СостояниеРаботниковОрганизаций.Сотрудник.ПодразделениеОрганизации = ПодразделенияОрганизаций.Ссылка
    ГДЕ
        СостояниеРаботниковОрганизаций.Сотрудник.ТекущееПодразделениеОрганизации = &ТекущееПодразделениеОрганизации
        И РегламентированныйПроизводственныйКалендарь.ДатаКалендаря = &ДатаКалендаря
    
    СГРУППИРОВАТЬ ПО
        СостояниеРаботниковОрганизаций.СостояниеЗавершения,
        СостояниеРаботниковОрганизаций.ПериодЗавершения,
        СостояниеРаботниковОрганизаций.Состояние,
        СостояниеРаботниковОрганизаций.Сотрудник,
        СостояниеРаботниковОрганизаций.Период,
        СостояниеРаботниковОрганизаций.Сотрудник.ТекущееПодразделениеОрганизации
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ВТ.Сотрудник КАК Сотрудник,
        ВТ.Состояние КАК СостояниеНачала,
        ВТ.Период КАК ДатаНачалаСостояния,
        ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ЕСТЬNULL(ВТ.ПериодЗавершения, ВТ.Период1), ДЕНЬ), СЕКУНДА, -1) КАК ДатаОкончанияСостояния,
        ВТ.СостояниеЗавершения,
        &ДатаКалендаря
    ПОМЕСТИТЬ Отбор
    ИЗ
        ВТ КАК ВТ
    ГДЕ
        ВТ.Сотрудник.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        Отбор.Сотрудник КАК Сотрудник,
        Отбор.ДатаНачалаСостояния КАК ДатаНачалаСостояния,
        Отбор.ДатаОкончанияСостояния,
        Отбор.СостояниеНачала,
        Отбор.СостояниеЗавершения,
        ВЫБОР
            КОГДА НАЧАЛОПЕРИОДА(&ДатаКалендаря, ДЕНЬ) МЕЖДУ Отбор.ДатаНачалаСостояния И Отбор.ДатаОкончанияСостояния
                    И Отбор.ДатаОкончанияСостояния <> ДАТАВРЕМЯ(1, 1, 1)
                ТОГДА Отбор.СостояниеНачала
            ИНАЧЕ Отбор.СостояниеЗавершения
        КОНЕЦ КАК СостояниеПериод
    ИЗ
        Отбор КАК Отбор
    
    УПОРЯДОЧИТЬ ПО
        Сотрудник,
        ДатаНачалаСостояния УБЫВ
  2. ТехБухПривет
    Offline

    ТехБухПривет Профессионал в 1С Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    733
    Симпатии:
    78
    Баллы:
    54
    Такой запрос написали, а про СрезПоследних не знаете? o_O Он возвращает последние значения на определенную дату..
    Период - ваша дата...

    upload_2019-5-14_8-38-18.png

    РегистрСведений.СостояниеРаботниковОрганизаций.СрезПоследних(&Период, )
    или можете сделать как у вас и заменить Период = ДатаКалендаря

    Ну и Подразделение - я бы подумал про иерархию, если она есть...
    Последнее редактирование: 14 май 2019
  3. TopicStarter Overlay
    Nata_95
    Offline

    Nata_95

    Регистрация:
    14 май 2019
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Благодарю
  4. ТехБухПривет
    Offline

    ТехБухПривет Профессионал в 1С Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    733
    Симпатии:
    78
    Баллы:
    54
    Не за что, обращайтесь) А для благодарности на данном сайте достаточно ткнуть "Мне нравится" у нужного сообщения.