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