Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Регистр сведений срез последних

Регистр сведений срез последних
Я
   Len1vec
 
17.10.18 - 15:46
Добрый день. Разъясните, пожалуйста.
ЗУП 3.1. Был создан документ кадрового перевода, который переводил сотрудника Иванова с подразделения "Смена 1" на подразделение "Смена 2" с 15.09 по 11.10 нынешнего года, который породил в регистре сведений "КадроваяИсторияСотрудников" запись.
Имеется заполнялка в документе (не стандартном), которая подставляет сотрудника в ТЧ по указанному подразделению.

ВЫБРАТЬ
    КадроваяИсторияСотрудниковСрезПоследних.Сотрудник КАК Сотрудник,
    КадроваяИсторияСотрудниковСрезПоследних.ФизическоеЛицо КАК ФизическоеЛицо
ИЗ
    РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(&НачалоПериода, ) КАК КадроваяИсторияСотрудниковСрезПоследних
ГДЕ
    КадроваяИсторияСотрудниковСрезПоследних.Подразделение = &Подразделение

УПОРЯДОЧИТЬ ПО
    КадроваяИсторияСотрудниковСрезПоследних.Сотрудник.Наименование

    Запрос.УстановитьПараметр("Подразделение", Объект.Подразделение);
    Запрос.УстановитьПараметр("НачалоПериода", Объект.Дата);


Вопрос. Должен ли добавиться в ТЧ документа сотрудник Иванов на сегодняшнее число, если указать подразделение "Смена 1"?

Я считаю, что нет, т.к. последняя запись в регистре сведений КадроваяИсторияСотрудниковСрезПоследних указана с подразделением "Смена 2".
Поэтому я изменил запрос следующим образом, который выводит данные корректно:

ВЫБРАТЬ
    КадроваяИсторияСотрудниковСрезПоследних.Сотрудник КАК Сотрудник,
    КадроваяИсторияСотрудниковСрезПоследних.ФизическоеЛицо КАК ФизическоеЛицо
ИЗ
    РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(&НачалоПериода, ) КАК КадроваяИсторияСотрудниковСрезПоследних
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников.СрезПервых КАК КадроваяИсторияСотрудниковСрезПервых
        ПО КадроваяИсторияСотрудниковСрезПоследних.Сотрудник = КадроваяИсторияСотрудниковСрезПервых.Сотрудник
ГДЕ
    ВЫБОР
            КОГДА КадроваяИсторияСотрудниковСрезПоследних.ДействуетДо >= &ТекущаяДата
                ТОГДА КадроваяИсторияСотрудниковСрезПоследних.Подразделение = &Подразделение
            ИНАЧЕ КадроваяИсторияСотрудниковСрезПервых.Подразделение = &Подразделение
        КОНЕЦ

УПОРЯДОЧИТЬ ПО
    КадроваяИсторияСотрудниковСрезПоследних.Сотрудник.Наименование

    Запрос.УстановитьПараметр("Подразделение", Объект.Подразделение);
    Запрос.УстановитьПараметр("НачалоПериода", Объект.Дата);
    Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата());

Корректен ли мой запрос?
 
 
   piter3
 
1 - 17.10.18 - 16:25
гугл,представления.
   aleks_default
 
2 - 17.10.18 - 16:53
(0) Срез первых без указания даты среза вернет самую первую запись регистра, а не ту что нужно - предпоследнюю.
   Len1vec
 
3 - 18.10.18 - 08:18
В общем и мой запрос не корректен.
Можете, пожалуйста, помочь разобраться в этом вопросе?
   1Сергей
 
4 - 18.10.18 - 08:48
Ничего не понял. Чего вам в ТЧ вставить нужно?
   catena
 
5 - 18.10.18 - 09:07
А почему не воспользоваться процедурами ЗУП?
   Len1vec
 
6 - 18.10.18 - 09:22
(4) Сотрудника, который в настоящий момент работает в определенном подразделении
   Len1vec
 
7 - 18.10.18 - 09:24
(5) Вы про какие говорите?
   catena
 
8 - 18.10.18 - 09:44
(7)Моя версия может немного отличаться от вашей, но, например, посмотрите вот эти процедуры. В коментариях к ним написано про использование.

ПараметрыПолученияСотрудников                  = КадровыйУчет.ПараметрыПолученияСотрудниковОрганизацийПоСпискуФизическихЛиц();
ПараметрыПолученияСотрудников.Организация      = Организация;
ПараметрыПолученияСотрудников.Подразделение    = Подразделение;
ПараметрыПолученияСотрудников.ОкончаниеПериода = Период;
ТаблицаСотрудников = КадровыйУчет.СотрудникиОрганизации(Истина, ПараметрыПолученияСотрудников);
   aleks_default
 
9 - 18.10.18 - 09:50
(3) В старой версии ЗУП специально для таких случаев был ресурс ПодразделениеОкончания, в новых вроде как его уже удалили.
Можно покопаться в ЗУП, поискать как решается сейчас эта ситуация типовыми средствами. Но мне лень.
Лично я, если бы возникла такая необходимость, решил бы так:
1. Срез последних где ДействуетДо < ТекущаяДата
2. Таблица Срез последних на каждую дату в первой таблице
   НЕА123
 
10 - 18.10.18 - 10:29
(0)
почти ОФФ.

в первом запросе, вторым параметром таблицы поставить 
ФизическоеЛицо = ФизическоеЛицо
не спасает?
 
 Рекламное место пустует
   Len1vec
 
11 - 18.10.18 - 10:36
(10) немного не понял о чем Вы.
   Len1vec
 
12 - 18.10.18 - 11:03
(8) В предложенном Вами решении в ТаблицаСотрудников имеются записи, которые по идее не должны присутствовать.
Пример:
Иванов изначально работал в подразделении "Смена 1". С 1 по 5 октября был кадровый перевод в "Смена 2". Сегодня заполняется документ по подразделению "Смена 2", где в ТаблицаСотрудников имеется запись Иванов, т.к. он когда был в "Смена 2". Хотя записи не должно быть.
   piter3
 
13 - 18.10.18 - 11:05
не мучься ищи готовую функцию,вроде на форуме приводили примеры.Для понимания кадровая история обрастала всякими интервальными регистрами сестрами
   catena
 
14 - 18.10.18 - 11:09
(12)Я же говорю, что мой вариант может отличаться от вашего. Читайте описания к процедурам в общих модулях. Смотрите, как заполняются типовые документы.

Есть мнение, что в ЗУП3 решать запросами опасно и не выгодно, во-первых, структура и логика данных может меняться, во-вторых, они действительно намудрили с регистрами, а подробного описания к каждому релизу нет.
Переучивайтесь на использование уже существующих механизмов.
   Len1vec
 
15 - 18.10.18 - 11:38
(14) в любом случае спасибо огромное!
   Temai
 
16 - 18.10.18 - 11:46
Может быть пригодится:

ВЫБРАТЬ
    КадроваяИсторияСотрудниковСрезПоследних.Сотрудник КАК Сотрудник,
    КадроваяИсторияСотрудниковСрезПоследних.ГоловнаяОрганизация КАК Организация,
    КадроваяИсторияСотрудниковСрезПоследних.ГоловнаяОрганизация.ОГРН КАК ОГРН,
    КадроваяИсторияСотрудниковСрезПоследних.Подразделение КАК Подразделение,
    КадроваяИсторияСотрудниковСрезПоследних.Сотрудник.Представление КАК ФИО,
    КадроваяИсторияСотрудниковСрезПоследних.Сотрудник.Код КАК Код,
    КадроваяИсторияСотрудниковСрезПоследних.ФизическоеЛицо.ИНН КАК ИНН,
    КадроваяИсторияСотрудниковСрезПоследних.ФизическоеЛицо.СтраховойНомерПФР КАК Снилс,
    КадроваяИсторияСотрудниковСрезПоследних.Сотрудник.ФизическоеЛицо.ДатаРождения КАК ДатаРождения,
    КадроваяИсторияСотрудниковСрезПоследних.Сотрудник.ФизическоеЛицо.Пол КАК Пол,
    КадроваяИсторияСотрудниковСрезПоследних.Должность КАК Должность,
    КадроваяИсторияСотрудниковСрезПоследних.ВидДоговора КАК ВидДоговора,
    ВидЗанятостиСотрудникаСрезПоследних.ВидЗанятости КАК ТипЗанятости,
    ГрафикРаботыСотрудниковСрезПоследних.ГрафикРаботы КАК ГрафикРаботы,
    КадроваяИсторияСотрудниковСрезПервых.Период КАК ДатаПриема

ИЗ
    РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних КАК КадроваяИсторияСотрудниковСрезПоследних
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников.СрезПервых(, ВидСобытия = ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.Прием)) КАК КадроваяИсторияСотрудниковСрезПервых
        ПО (КадроваяИсторияСотрудниковСрезПервых.Сотрудник = КадроваяИсторияСотрудниковСрезПоследних.Сотрудник)
            И (КадроваяИсторияСотрудниковСрезПервых.ГоловнаяОрганизация = КадроваяИсторияСотрудниковСрезПоследних.ГоловнаяОрганизация)
            И (КадроваяИсторияСотрудниковСрезПервых.ФизическоеЛицо = КадроваяИсторияСотрудниковСрезПоследних.ФизическоеЛицо)
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ВидыЗанятостиСотрудников.СрезПоследних КАК ВидЗанятостиСотрудникаСрезПоследних
        ПО (ВидЗанятостиСотрудникаСрезПоследних.Сотрудник = КадроваяИсторияСотрудниковСрезПоследних.Сотрудник)
            И (ВидЗанятостиСотрудникаСрезПоследних.ГоловнаяОрганизация = КадроваяИсторияСотрудниковСрезПоследних.ГоловнаяОрганизация)
            И (ВидЗанятостиСотрудникаСрезПоследних.ФизическоеЛицо = КадроваяИсторияСотрудниковСрезПоследних.ФизическоеЛицо)
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикРаботыСотрудников.СрезПоследних КАК ГрафикРаботыСотрудниковСрезПоследних
        ПО КадроваяИсторияСотрудниковСрезПоследних.Сотрудник = ГрафикРаботыСотрудниковСрезПоследних.Сотрудник
            И КадроваяИсторияСотрудниковСрезПоследних.ГоловнаяОрганизация = ГрафикРаботыСотрудниковСрезПоследних.ГоловнаяОрганизация
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.Увольнение.ДополнительныеРеквизиты КАК УвольнениеДополнительныеРеквизиты
        ПО КадроваяИсторияСотрудниковСрезПоследних.Регистратор = УвольнениеДополнительныеРеквизиты.Ссылка
            И (УвольнениеДополнительныеРеквизиты.Свойство.Наименование = "Внутрифирменный перевод (Увольнения)")
   aleks_default
 
17 - 18.10.18 - 11:51
(16) А может и не пригодится
   Temai
 
18 - 18.10.18 - 12:12
(17) Может и так, мне не жалко

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует