ЗУП. Актуальные сведения о должности и подразделении в списке справочника Сотрудники

Справочник СотрудникиОрганизации имеет вспомогательные реквизиты, данные в которых служат для отображения текущих значений должности и подразделения сотрудника. К сожалению, в конфигурации не предусмотрено механизма поддержания актуальности этих сведений на текущую дату. А так как 1С должна использоваться не только для учёта, но и для подготовки кадровых приказов, может возникнуть ситуация когда в списке справочника отображаются неактуальные сведения.

Прелюдия. Вот решили наши кадровики оформить реорганизацию и подготовили сразу пачку приказов будущим периодом, но всё не стоит на месте, и им приходится править ещё не вступившие в силу приказы. Wink Смотрят они в справочник и ничего уже понять не могут. Cry

 

Описание проблемы. Для отображения в списке справочника Сотрудники организации сведений о должности и подразделении работника 1С:ЗУП использует вспомогательные реквизиты справочника. К сожалению, штатно не предусмотрено поддержание их в актуальном состоянии на текущий день. Исправить этот недочёт достаточно просто.

 

Облегчим жизнь кадровикам вот таким кодом (можно воспользоваться приложенной обработкой):

            Запрос = Новый Запрос;

            Запрос.Текст =

                        «ВЫБРАТЬ

                        |           РаботникиОрганизацийСрезПоследних.Должность,

                        |           РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации,

                        |           СотрудникиОрганизаций.Ссылка,

                        |           СотрудникиОрганизаций.ТекущееПодразделениеОрганизации,

                        |           СотрудникиОрганизаций.ТекущаяДолжностьОрганизации

                        |           ИЗ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций

                        |                       СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&ТекущаяДата) КАК РаботникиОрганизацийСрезПоследних

                        |                                  ПО РаботникиОрганизацийСрезПоследних.Сотрудник = СотрудникиОрганизаций.Ссылка»;

            Запрос.УстановитьПараметр(«ТекущаяДата», КонецДня(ТекущаяДата()));

            Результат = Запрос.Выполнить();

 

            ВыборкаДетальныеЗаписи = Результат.Выбрать();

 

            Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

                        Актуализирован = Ложь;

                        Если Не ВыборкаДетальныеЗаписи.Должность = ВыборкаДетальныеЗаписи.ТекущаяДолжностьОрганизации Тогда

                                   Сотрудник = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();

                                   Сотрудник.ТекущаяДолжностьОрганизации = ВыборкаДетальныеЗаписи.Должность;

                                   Актуализирован = Истина;

                        КонецЕсли;

                        Если Не ВыборкаДетальныеЗаписи.ПодразделениеОрганизации = ВыборкаДетальныеЗаписи.ТекущееПодразделениеОрганизации Тогда

                                   Если ПустаяСтрока(Сотрудник) Тогда

                                               Сотрудник = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();

                                   КонецЕсли;

                                    Сотрудник.ТекущееПодразделениеОрганизации = ВыборкаДетальныеЗаписи.ПодразделениеОрганизации;

                                   Актуализирован = Истина;

                        КонецЕсли;

                       

                        Если Актуализирован Тогда

                                   Сотрудник.ПолучитьКадровыеДанныеФизлица = Ложь;

                                    Сотрудник.Записать();

                        КонецЕсли;

            КонецЦикла;

 

А себе облегчим жизнь создав регламентное задание, которое будет раз в день актуализировать данные.

 

ЗЫ В описании решения букв больше чем в самом решении. Cool

 

 

 

9 Comments

  1. AHDP

    Для регламентного задания, только актуализирующего состояние справочника следует использовать этот код:

    Запрос = Новый Запрос;

    Запрос.Текст =

    «ВЫБРАТЬ

    |РаботникиОрганизацийСрезПоследних.Должность,

    |РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации,

    |СотрудникиОрганизаций.Ссылка

    | ИЗ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций

    | СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&ТекущаяДата) КАК РаботникиОрганизацийСрезПоследних

    | ПО РаботникиОрганизацийСрезПоследних.Сотрудник = СотрудникиОрганизаций.Ссылка

    | И Не (РаботникиОрганизацийСрезПоследних.Должность = СотрудникиОрганизаций.ТекущаяДолжностьОрганизации Или РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации = СотрудникиОрганизаций.ТекущееПодразделениеОрганизации)»;

    Запрос.УстановитьПараметр(«ТекущаяДата», КонецДня(ТекущаяДата()));

    ВыборкаДетальныеЗаписи = Запрос.Выполнить().Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

    Сотрудник = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();

    Сотрудник.ТекущаяДолжностьОрганизации = ВыборкаДетальныеЗаписи.Должность;

    Сотрудник.ТекущееПодразделениеОрганизации = ВыборкаДетальныеЗаписи.ПодразделениеОрганизации;

    Сотрудник.ПолучитьКадровыеДанныеФизлица = Ложь;

    Сотрудник.Записать();

    КонецЦикла;

    Reply
  2. elf78
    Reply
  3. AHDP

    elf78, Вы не внимательно прочитали анотацию. Предлагеаемое регламентное задание и предназначено для борьбы с «последствиями» указанного вами алгориртма.

    ЗЫ Оно родилось из обработки, разгребавшей «кадровые» истории.

    Reply
  4. elf78

    Понятно.. я смотрю в российском ЗУП нет последовательности кадровых документов

    Reply
  5. petrov_al

    (3) а вот такая ситуация 01.10.2012 у сотрудника было текущее подразделение «А». С 02.10.2012 сотрудника перевели приказом в подразделение «В» с периодом завершения 03.10.2012. Какое текущее подразделение будет в справочнике сотрудники и какое фактически допустим 04.10.2012? Помоему у вас в запросе это неучитывается.

    Reply
  6. chmv

    и не работатает

    Reply
  7. mikhailovaew

    А в древних релизах ЗУП в справочнике Сотрудники отображались актуальные должность и подразделение, не из реквизитов, а динамически рассчитываемые… Потом от этого отказались. «Это поведения было отменено как излишне ресурсоемкое более трех лет назад. Показ «актуальных» данных приводит к проблемам с пролистыванием списка сотрудников.»

    Reply
  8. mip128

    А с ГПХшниками что ты делаешь?

    Reply
  9. Gasilin

    Полезное регламентное задание. В частности в карточке сотрудника при временном перемещении пишет должность завершения, а не текущую.

    +

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *