Почему в карточке сотрудника в 1С:ЗУП 3.1 отображается неверный оклад и как это исправить?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом
← На главную

СИТУАЦИЯ: расчетчик или кадровик обнаруживает, что в карточке сотрудника в программе «1С:Зарплата и управление персоналом 3.1» отображается неверный оклад (тарифная ставка). При этом в регистре сведений ТекущаяТарифнаяСтавкаСотрудников данные указаны абсолютно верно. Более того, при расчете заработной платы за месяц программа начисляет сотруднику правильную сумму, соответствующую его реальному окладу. Почему же в карточке сотрудника и в формах подбора "висит" старая или некорректная информация?

В этой статье мы подробно разберем, по какому механизму программа 1С:ЗУП 3.1 выводит показатели оплаты труда на форму карточки сотрудника, почему возникает рассинхронизация данных в регистрах и какими способами можно быстро и безопасно исправить эту ошибку.

Почему возникает рассинхронизация данных в 1С:ЗУП 3.1?

Для того чтобы понять природу этой ошибки, проанализируем архитектуру хранения данных в программе. В 1С:ЗУП 3.1 расчетные механизмы и механизмы отображения информации в интерфейсе разнесены по разным физическим таблицам базы данных (регистрам сведений):

  1. Данные для расчета зарплаты. При расчете начислений программа напрямую обращается к периодическим регистрам сведений, таким как ПлановыеНачисления и ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников. Там хранятся точные исторические записи, привязанные к кадровым документам (приказам о приеме, переводе, изменении оплаты). Если в этих регистрах данные верны, то расчет за месяц всегда будет правильным.
  2. Данные для отображения в формах и отчетах. Для оптимизации быстродействия программы (чтобы при открытии списка сотрудников или карточки система не пересчитывала сложные формулы "на лету") используются специальные интервальные и вспомогательные регистры сведений. К ним относятся:
    • РегистрСведений.ПлановыйФОТИтоги — главный источник, откуда карточка сотрудника забирает информацию об окладе и совокупной тарифной ставке (СТС);
    • РегистрСведений.ДанныеОбОплатеТрудаДляПодбораСотрудников — используется для быстрого вывода информации в формах подбора;
    • РегистрСведений.ТекущиеКадровыеДанныеСотрудников — хранит агрегированные сведения для списка сотрудников.

Проблема возникает тогда, когда в системе происходит сбой при записи данных в оптимизационные регистры. В итоге реальные плановые начисления обновились, а в регистре ПлановыйФОТИтоги остались старые "зависшие" значения. Карточка сотрудника обращается именно к этому регистру и выводит неверную сумму.

Типичные причины сбоя

Рассмотрим подробнее сценарии, из-за которых ломается запись в интервальные регистры:

Выясним, как исправить эту ситуацию с помощью различных методов: от простых пользовательских манипуляций до системных административных инструментов.

Способ 1. Метод полной перезаписи документов (Быстрое решение)

Как показывает практика, простое нажатие кнопки "Записать и провести" в кадровом документе часто не решает проблему, так как программа оптимизирует транзакции и не перезаписывает уже существующие интервалы, если не видит явных изменений. Нам необходимо принудительно очистить старые движения документа.

Разберем этот процесс по шагам:

  1. Откроем карточку сотрудника и перейдем по ссылке "История изменения оплаты труда" или найдем последний кадровый документ, установивший оклад (например, Кадровый перевод или Изменение оплаты труда).
  2. Нажмем правой кнопкой мыши по этому документу в списке и выберем команду "Отменить проведение". Очень важно сначала полностью снять документ с проведения, чтобы программа физически удалила все его записи из интервальных регистров.
  3. Затем снова откроем документ и нажмем кнопку "Провести и закрыть". При повторном "чистом" проведении алгоритмы платформы заново сформируют записи в регистре ПлановыйФОТИтоги.
  4. Вернемся в карточку сотрудника и проверим оклад. В большинстве случаев данные синхронизируются.

Способ 2. Использование обработки "Перерасчет планового ФОТ" (Штатный метод)

Если сотрудников с подобной проблемой много, либо перепроведение документов вручную не помогает (или период уже закрыт для редактирования пользователями), воспользуемся специализированным штатным инструментом 1С.

Проанализируем порядок действий для запуска перерасчета:

  1. Перейдем в раздел меню Зарплата, затем выберем пункт Сервис и откроем обработку "Перерасчет планового ФОТ".

    Примечание: Если данный пункт меню скрыт в вашей интерфейсной панели, откройте форму через "Функции для технического специалиста" (ранее "Все функции"), выбрав раздел "Обработки" -> "Перерасчет планового ФОТ".

  2. В открывшейся форме выберем необходимую организацию (или оставим поле пустым для обработки всей базы).
  3. Мы можем выполнить перерасчет как по всей организации целиком, так и по конкретному сотруднику. Для точечного исправления нажмем кнопку "Подбор" и выберем проблемного сотрудника.
  4. Нажмем кнопку "Выполнить перерасчет".

Программа в фоновом режиме перечитает все документы-регистраторы плановых начислений сотрудника, очистит ошибочные данные в регистре ПлановыйФОТИтоги и запишет туда актуальные сведения на каждую дату изменения оклада. Этот метод является наиболее безопасным и корректным с точки зрения логики системы.

Способ 3. Прямая проверка и чистка интервальных регистров (Для программистов и администраторов)

Если предыдущие методы не дали результата, это сигнализирует о наличии в базе так называемых "битых" записей в регистрах сведений — строк, у которых отсутствует документ-регистратор или нарушена логика периодичности. Проверим эти регистры вручную.

Выполним следующие действия:

  1. Используя сочетание клавиш Shift + F11 или меню "Функции для технического специалиста", перейдем по ссылке к регистру сведений РегистрСведений.ПлановыеНачисленияИнтервальный.
  2. Установим отбор по нашему проблемному сотруднику в поле Сотрудник.
  3. Внимательно проанализируем интервалы дат (колонки Дата начала и Дата окончания). Если мы видим пересекающиеся периоды с разными окладами или пустые даты окончания там, где должен быть закрыт интервал, это указывает на ошибку в базе.
  4. Аналогичным образом проверим регистр сведений РегистрСведений.ПлановыйФОТИтоги.
  5. При обнаружении некорректных записей, которые не привязаны к реальным документам, удалим их программно или с помощью ручного редактирования (если у пользователя есть соответствующие права "Администратор системы").

Для разработчиков, столкнувшихся с массовой проблемой, приведем пример небольшого программного кода для принудительного обновления ФОТ по конкретному физическому лицу через стандартные механизмы конфигурации ЗУП:


// Пример программного вызова перерасчета ФОТ для сотрудника
СсылкаНаСотрудника = Справочники.Сотрудники.НайтиПоРеквизиту("Код", "00000001");
СписокСотрудников = Новый Массив;
СписокСотрудников.Добавить(СсылкаНаСотрудника);

// Вызов процедуры перерасчета из общего модуля ЗУП
РасчетЗарплатыРасширенный.ПересчитатьПлановыйФОТСотрудников(СписокСотрудников);

После выполнения данного кода система автоматически актуализирует все связанные регистры, включая ДанныеОбОплатеТрудаДляПодбораСотрудников.

Профилактика ошибок: как избежать расхождения данных в будущем?

Чтобы минимизировать появление неверных окладов в карточках сотрудников в будущем, рекомендуем кадровой службе соблюдать простые правила работы в 1С:ЗУП 3.1:

Мы подробно разобрали причины расхождения оклада в карточке сотрудника 1С:ЗУП 3.1 и изучили три эффективных метода решения проблемы. Применяйте эти знания на практике, чтобы данные в ваших базах всегда оставались согласованными и корректными!

← На главную