В процессе ведения кадрового учета в программе 1С:Зарплата и управление персоналом нередко возникает задача пакетной корректировки реквизитов большого массива документов — например, когда требуется изменить дату оформления или дату вступления в силу перевода сразу для сотен сотрудников. Разберем подробно, какими штатными и программными средствами можно решить эту задачу, как правильно настроить отборы и избежать типичных учетных ошибок.
Прежде чем приступать к массовой корректировке, выясним принципиальное различие между двумя реквизитами в документе кадрового перевода:
Дата) — дата регистрации распоряжения или приказа в информационной базе. Она влияет на хронологию документов в журнале и на проверку даты запрета изменения данных.Дата начала) — фактическая дата, с которой сотрудник переводится на новую должность, в другое подразделение или с которой меняются условия оплаты труда.Проанализируем механику движений: записи в периодические регистры сведений (такие как Кадровая история сотрудников, Плановые начисления и Занятость позиций штатного расписания) формируются именно на дату начала события, а не на дату документа. Если цель состоит в изменении момента вступления в силу кадровых условий, необходимо корректировать именно поле Дата начала (или оба реквизита одновременно).
Рассмотрим по шагам выполнение пакетной корректировки с помощью встроенной административной обработки:
Кадровый перевод или Кадровый перевод списком.Дата в платформе 1С:Предприятие. Поле даты всегда содержит время (часы, минуты, секунды). При использовании условия Равно поиск выполняется на точное совпадение со временем 00:00:00. Если документы создавались в течение дня, отбор «Равно» вернет пустой список. Поэтому задаем интервал: добавляем условия Больше или равно (Начало дня) и Меньше или равно (Конец дня) либо вид сравнения В интервале.Дата и/или Дата начала), установим флаг напротив него и укажем новое значение.Если документы уже сгруппированы в общем списке кадровых документов или их легко выделить визуально, воспользуемся контекстным методом пакетного редактирования:
Shift или комбинации Ctrl+A.Этот метод исключает необходимость сложной ручной настройки условий фильтрации, так как список целевых документов формируется непосредственно в таблице журнала.
Если правила изменения даты требуют сложного алгоритма (например, индивидуального смещения даты на определенное число рабочих дней для каждого документа), применим программный код. Разберем пример реализации безопасного пакетного проведения документов:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КадровыйПеревод.Ссылка КАК Ссылка
|ИЗ
| Документ.КадровыйПеревод КАК КадровыйПеревод
|ГДЕ
| КадровыйПеревод.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
| И КадровыйПеревод.Проведен = ИСТИНА";
Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ИсходнаяДата));
Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(ИсходнаяДата));
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ДокументОбъект = Выборка.Ссылка.ПолучитьОбъект();
ДокументОбъект.Дата = НоваяДатаДокумента;
ДокументОбъект.ДатаНачала = НоваяДатаСобытия;
Попытка
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
Исключение
Сообщить("Ошибка проведения документа " + Строка(Выборка.Ссылка) + ": " + ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
После успешной пакетной смены дат и перепроведения документов обязательно проверим следующие контрольные точки: