Прелюдия. Вот решили наши кадровики оформить реорганизацию и подготовили сразу пачку приказов будущим периодом, но всё не стоит на месте, и им приходится править ещё не вступившие в силу приказы. Смотрят они в справочник и ничего уже понять не могут.
Описание проблемы. Для отображения в списке справочника Сотрудники организации сведений о должности и подразделении работника 1С:ЗУП использует вспомогательные реквизиты справочника. К сожалению, штатно не предусмотрено поддержание их в актуальном состоянии на текущий день. Исправить этот недочёт достаточно просто.
Облегчим жизнь кадровикам вот таким кодом (можно воспользоваться приложенной обработкой):
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РаботникиОрганизацийСрезПоследних.Должность,
| РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации,
| СотрудникиОрганизаций.Ссылка,
| СотрудникиОрганизаций.ТекущееПодразделениеОрганизации,
| СотрудникиОрганизаций.ТекущаяДолжностьОрганизации
| ИЗ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
| СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&ТекущаяДата) КАК РаботникиОрганизацийСрезПоследних
| ПО РаботникиОрганизацийСрезПоследних.Сотрудник = СотрудникиОрганизаций.Ссылка";
Запрос.УстановитьПараметр("ТекущаяДата", КонецДня(ТекущаяДата()));
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Актуализирован = Ложь;
Если Не ВыборкаДетальныеЗаписи.Должность = ВыборкаДетальныеЗаписи.ТекущаяДолжностьОрганизации Тогда
Сотрудник = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
Сотрудник.ТекущаяДолжностьОрганизации = ВыборкаДетальныеЗаписи.Должность;
Актуализирован = Истина;
КонецЕсли;
Если Не ВыборкаДетальныеЗаписи.ПодразделениеОрганизации = ВыборкаДетальныеЗаписи.ТекущееПодразделениеОрганизации Тогда
Если ПустаяСтрока(Сотрудник) Тогда
Сотрудник = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
КонецЕсли;
Сотрудник.ТекущееПодразделениеОрганизации = ВыборкаДетальныеЗаписи.ПодразделениеОрганизации;
Актуализирован = Истина;
КонецЕсли;
Если Актуализирован Тогда
Сотрудник.ПолучитьКадровыеДанныеФизлица = Ложь;
Сотрудник.Записать();
КонецЕсли;
КонецЦикла;
А себе облегчим жизнь создав регламентное задание, которое будет раз в день актуализировать данные.
ЗЫ В описании решения букв больше чем в самом решении.