При нетиповом переносе кадровой истории и плановых начислений в программу 1С:Зарплата и управление персоналом 3.1 пользователи часто сталкиваются с ситуацией, когда документ Начисление зарплаты и взносов не заполняется по кнопке Заполнить, хотя при ручном подборе сотрудники отображаются. Также сотрудники могут отсутствовать в общем списке работающих.
Разберем причины такого поведения платформы, проанализируем взаимосвязь кадровых регистров и рассмотрим пошаговый алгоритм исправления ошибок переноса данных.
В конфигурации 1С:ЗУП 3.1 механизм автозаполнения расчетных документов кардинально отличается от ранних версий (например, ЗУП 2.5 или ЗиК 7.7). Алгоритмы заполнения опираются не только на регистраторы и основные срезы последних, но и на специализированные интервальные регистры и агрегирующие структуры данных:
ГоловнойСотрудник: в справочнике Сотрудники и регистрах сведений КадроваяИсторияСотрудников и КадроваяИсторияСотрудниковИнтервальный для основных сотрудников этот реквизит должен ссылаться на самого себя, а для совместителей — на основного сотрудника. Если при переносе образовалось значение <Объект не найден>, типовые запросы исключают сотрудника из выборки.КадроваяИсторияСотрудниковИнтервальный, ВидыЗанятостиСотрудниковИнтервальный и ПлановыеНачисленияИнтервальный содержат поля ДатаНачала, ДатаОкончания и ПериодПредыдущейЗаписи. При прямой записи данных эти границы часто формируются некорректно.ТекущиеКадровыеДанныеСотрудников: фильтрация в формах списков и автоподбор работающих сотрудников опираются на срез текущего состояния.Прием на работу и Кадровый перевод созданы на один день со временем 00:00:00, платформа при проведении перевода сообщает, что сотрудник еще не принят на работу.Проанализируем состояние справочника Сотрудники. Для устранения битых ссылок необходимо программно или с помощью группового изменения реквизитов установить корректные значения.
Посмотрим на пример обработки для восстановления реквизита ГоловнойСотрудник у основных работников:
Выборка = Справочники.Сотрудники.Выбрать();
Пока Выборка.Следующий() Цикл
СотрудникОбъект = Выборка.ПолучитьОбъект();
Если СотрудникОбъект.ЭтоГоловнойСотрудник ИЛИ СотрудникОбъект.ГоловнойСотрудник.ПолучитьОбъект() = Неопределено Тогда
СотрудникОбъект.ГоловнойСотрудник = СотрудникОбъект.Ссылка;
СотрудникОбъект.Записать();
КонецЕсли;
КонецЦикла;
Если при попытке провести Кадровый перевод возникает ошибка «Сотрудник не принят на дату кадрового перемещения», разберем порядок действий:
Прием на работу время 00:00:00, а для последующих кадровых переводов на ту же дату — время 12:00:00 или более позднее.После проведения документов необходимо перезаполнить интервальные таблицы конфигурации, чтобы типовые механизмы расчета зарплаты увидели актуальные срезы данных.
Рассмотрим, как запустить обновление интервалов:
КадроваяИсторияСотрудниковИнтервальный.ВидыЗанятостиСотрудниковИнтервальный и ПлановыеНачисленияИнтервальный.Также обновление интервальных данных можно вызвать программно с помощью процедур общего модуля конфигурации:
ЗарплатаКадрыОбщиеНаборыДанных.ОбновитьИнтервальныйРегистр("КадроваяИсторияСотрудников");
ЗарплатаКадрыОбщиеНаборыДанных.ОбновитьИнтервальныйРегистр("ПлановыеНачисления");
ЗарплатаКадрыОбщиеНаборыДанных.ОбновитьИнтервальныйРегистр("ВидыЗанятостиСотрудников");
Чтобы избежать ошибок с рассинхронизацией кадровой истории и битыми ссылками при переходе со старых версий (1С:ЗиК 7.7, 1С:ЗУП 2.5), рекомендуется использовать регламентированный вариант переноса остатков:
После устранения битых ссылок и перезаполнения интервальных регистров создадим новый документ Начисление зарплаты и взносов и нажмем Заполнить — сотрудники и их плановые начисления отразятся в табличной части автоматически.