СИТУАЦИЯ: расчетчик или кадровик обнаруживает, что в карточке сотрудника в программе «1С:Зарплата и управление персоналом 3.1» отображается неверный оклад (тарифная ставка). При этом в регистре сведений ТекущаяТарифнаяСтавкаСотрудников данные указаны абсолютно верно. Более того, при расчете заработной платы за месяц программа начисляет сотруднику правильную сумму, соответствующую его реальному окладу. Почему же в карточке сотрудника и в формах подбора "висит" старая или некорректная информация?
В этой статье мы подробно разберем, по какому механизму программа 1С:ЗУП 3.1 выводит показатели оплаты труда на форму карточки сотрудника, почему возникает рассинхронизация данных в регистрах и какими способами можно быстро и безопасно исправить эту ошибку.
Для того чтобы понять природу этой ошибки, проанализируем архитектуру хранения данных в программе. В 1С:ЗУП 3.1 расчетные механизмы и механизмы отображения информации в интерфейсе разнесены по разным физическим таблицам базы данных (регистрам сведений):
ПлановыеНачисления и ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников. Там хранятся точные исторические записи, привязанные к кадровым документам (приказам о приеме, переводе, изменении оплаты). Если в этих регистрах данные верны, то расчет за месяц всегда будет правильным.РегистрСведений.ПлановыйФОТИтоги — главный источник, откуда карточка сотрудника забирает информацию об окладе и совокупной тарифной ставке (СТС);РегистрСведений.ДанныеОбОплатеТрудаДляПодбораСотрудников — используется для быстрого вывода информации в формах подбора;РегистрСведений.ТекущиеКадровыеДанныеСотрудников — хранит агрегированные сведения для списка сотрудников.Проблема возникает тогда, когда в системе происходит сбой при записи данных в оптимизационные регистры. В итоге реальные плановые начисления обновились, а в регистре ПлановыйФОТИтоги остались старые "зависшие" значения. Карточка сотрудника обращается именно к этому регистру и выводит неверную сумму.
Рассмотрим подробнее сценарии, из-за которых ломается запись в интервальные регистры:
ПлановыйФОТИтоги.Выясним, как исправить эту ситуацию с помощью различных методов: от простых пользовательских манипуляций до системных административных инструментов.
Как показывает практика, простое нажатие кнопки "Записать и провести" в кадровом документе часто не решает проблему, так как программа оптимизирует транзакции и не перезаписывает уже существующие интервалы, если не видит явных изменений. Нам необходимо принудительно очистить старые движения документа.
Разберем этот процесс по шагам:
Кадровый перевод или Изменение оплаты труда).ПлановыйФОТИтоги.Если сотрудников с подобной проблемой много, либо перепроведение документов вручную не помогает (или период уже закрыт для редактирования пользователями), воспользуемся специализированным штатным инструментом 1С.
Проанализируем порядок действий для запуска перерасчета:
Примечание: Если данный пункт меню скрыт в вашей интерфейсной панели, откройте форму через "Функции для технического специалиста" (ранее "Все функции"), выбрав раздел "Обработки" -> "Перерасчет планового ФОТ".
Программа в фоновом режиме перечитает все документы-регистраторы плановых начислений сотрудника, очистит ошибочные данные в регистре ПлановыйФОТИтоги и запишет туда актуальные сведения на каждую дату изменения оклада. Этот метод является наиболее безопасным и корректным с точки зрения логики системы.
Если предыдущие методы не дали результата, это сигнализирует о наличии в базе так называемых "битых" записей в регистрах сведений — строк, у которых отсутствует документ-регистратор или нарушена логика периодичности. Проверим эти регистры вручную.
Выполним следующие действия:
Shift + F11 или меню "Функции для технического специалиста", перейдем по ссылке к регистру сведений РегистрСведений.ПлановыеНачисленияИнтервальный.Сотрудник.Дата начала и Дата окончания). Если мы видим пересекающиеся периоды с разными окладами или пустые даты окончания там, где должен быть закрыт интервал, это указывает на ошибку в базе.РегистрСведений.ПлановыйФОТИтоги.Для разработчиков, столкнувшихся с массовой проблемой, приведем пример небольшого программного кода для принудительного обновления ФОТ по конкретному физическому лицу через стандартные механизмы конфигурации ЗУП:
// Пример программного вызова перерасчета ФОТ для сотрудника
СсылкаНаСотрудника = Справочники.Сотрудники.НайтиПоРеквизиту("Код", "00000001");
СписокСотрудников = Новый Массив;
СписокСотрудников.Добавить(СсылкаНаСотрудника);
// Вызов процедуры перерасчета из общего модуля ЗУП
РасчетЗарплатыРасширенный.ПересчитатьПлановыйФОТСотрудников(СписокСотрудников);
После выполнения данного кода система автоматически актуализирует все связанные регистры, включая ДанныеОбОплатеТрудаДляПодбораСотрудников.
Чтобы минимизировать появление неверных окладов в карточках сотрудников в будущем, рекомендуем кадровой службе соблюдать простые правила работы в 1С:ЗУП 3.1:
Кадровый перевод. Не нужно создавать отдельный "Кадровый перевод" и отдельное "Изменение оплаты труда" на одну и ту же дату.ОбновлениеДанныхОплатыТрудаДляПодбора (или аналогичные фоновые задания по обновлению ФОТ). Они предназначены для автоматического исправления подобных коллизий во внерабочее время.Мы подробно разобрали причины расхождения оклада в карточке сотрудника 1С:ЗУП 3.1 и изучили три эффективных метода решения проблемы. Применяйте эти знания на практике, чтобы данные в ваших базах всегда оставались согласованными и корректными!