8.х ЗУП Некорректно работает срез последних регистра РаботникиОрганизации

Тема в разделе ""1С:Зарплата и управление персоналом ЗУП"", создана пользователем Ivan2014, 15 дек 2015.

  1. TopicStarter Overlay
    Ivan2014
    Offline

    Ivan2014 Опытный в 1С

    Регистрация:
    10 апр 2014
    Сообщения:
    384
    Симпатии:
    2
    Баллы:
    29
    Здравствуйте.
    Вот такой запрос:
    Код:
            "ВЫБРАТЬ
            |    ВЫБОР
            |        КОГДА РаботникиОрганизацииСрезПоследних.ПериодЗавершения <= &ДатаАктуальности
            |                И РаботникиОрганизацииСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
            |            ТОГДА РаботникиОрганизацииСрезПоследних.ПодразделениеОрганизацииЗавершения
            |        ИНАЧЕ РаботникиОрганизацииСрезПоследних.ПодразделениеОрганизации
            |    КОНЕЦ КАК ПодразделениеОрганизации
            |ПОМЕСТИТЬ РаботникиОрганизацииСрезПоследних
            |ИЗ
            |    РегистрСведений.РаботникиОрганизаций.СрезПоследних(&ДатаАктуальности, Сотрудник.ФизЛицо = &ФизЛицо) КАК РаботникиОрганизацииСрезПоследних
            |;
    Но он работает не корректно, в некоторых случаях подбираются сотрудники, которые уже давно уволены (к одному физлицу два сотрудника привязано, текущий и уволенный).
    Подозреваю, дело в связке
    Сотрудник.ФизЛицо = &ФизЛицо
    как это обойти?
    Спасибо.
    --- Объединение сообщений, 15 дек 2015 ---
    Причем на файловой базе дает одни результаты (вроде бы верные, не уверен), а на sql - нет.
  2. LordMaverick
    Online

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.443
    Симпатии:
    375
    Баллы:
    104
    а может дело в рабочей дате, как она задана?

    да и какой ЗУП то? 2.5 или 3.0
    Ivan2014 нравится это.
  3. Draco
    Online

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    НУ Вам надо еще поставить отбор на Причину изменения состояния. Не равно уволен.
    Ivan2014 нравится это.
  4. TopicStarter Overlay
    Ivan2014
    Offline

    Ivan2014 Опытный в 1С

    Регистрация:
    10 апр 2014
    Сообщения:
    384
    Симпатии:
    2
    Баллы:
    29
    Рабочая дата - формат дата, переменная.
    --- Объединение сообщений, 15 дек 2015 ---
    Не, так нельзя - в отчет и уволенные сотрудники подбираются.
    --- Объединение сообщений, 15 дек 2015 ---
    Вопрос получилось решить только промежуточным отбором в таблицы значений, сортировке ее по периоду и отбору необходимой даты.
  5. Draco
    Online

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Ну ясное дело. Вам одним таким запросом не отделаться.
    выберете одним запросом срез последних на дату без уволенных.
    и объеденяете со вторым запросом который берется за период и там движения уволлными
  6. tsd
    Offline

    tsd Опытный в 1С

    Регистрация:
    19 авг 2008
    Сообщения:
    68
    Симпатии:
    2
    Баллы:
    29
    СрезПоследних(<КонецПериода>, <Отбор>)

    Записи подбираются для каждого СОЧЕТАНИЯ из всех имеющихся значений измерений регистра.
  7. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    Код:
    ВЫБРАТЬ ПЕРВЫЕ 1
      РаботникиОрганизацииСрезПоследних.Сотрудник
    ПОМЕСТИТЬ ПоследнийСотрудникФЛ
    ИЗ
      РегистрСведений.РаботникиОрганизаций.СрезПоследних(&ДатаАктуальности, Сотрудник.ФизЛицо = &ФизЛицо) КАК РаботникиОрганизацииСрезПоследних
    УПОРЯДОЧИТЬ ПО
      РаботникиОрганизацийСрезПоследних.Период УБЫВ
    
    и потом уже ваш срез последних с отбором по сотруднику, попавшему в эту временную таблицу

    ну или решить мою любимую задачку на собеседованиях - построить срез последних без использования виртуальной таблицы СрезПоследних
  8. Draco
    Online

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Николай твоя задача по срезу последних немного отличается от того что ему надо.
    В товей задаче есть период и там на каждую датуу надо получить срез последних, ну насколько я понимаю.
    у него же стандартная задача.
    Есть период за этот период сотрудник может на начало периода быть в одном подразделении в середине периода его перевели, или уволили.
    Так вот насколько я понял ему за период надо получить всех сотрудников работающих в этот период с их подразделениями за этот период.
    Эта стандартная задача она даже в курсе по расчетным задачам есть
  9. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    не, то была задачка с позапрошллой работы :)
    а тут просто тупой срез последних. без всяких дополнительных хитростей снаружи. они внутри.

Поделиться этой страницей