Почему в ЗУП КОРП в карточке сотрудника не отображаются данные трудового договора, хотя в регистрах они есть?

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

При работе с конфигурацией «Зарплата и управление персоналом КОРП» (и версией ПРОФ редакций 3.1) мы можем столкнуться с неочевидной ситуацией. Мы перенесли данные или создали сотрудника, документы приема проведены, в регистрах (таких как Основные данные контракта договора сотрудника) записи присутствуют, но открывая карточку сотрудника (справочник Сотрудники), мы видим пустые поля в разделе трудового договора.

Эта проблема часто ставит в тупик даже опытных специалистов, так как прямая логика «Документ проведен = Данные на форме» здесь не работает напрямую. Разберем детально причины этого поведения и способы решения проблемы.

Архитектура хранения текущих данных

Для начала поймем, как система формирует данные для формы списка и формы элемента справочника Сотрудники. Чтобы не рассчитывать актуальные кадровые данные (подразделение, должность, вид договора, ставку) каждый раз при открытии списка "на лету" (что вызывало бы огромные тормоза), 1С использует механизм кэширования.

Существует специальный служебный регистр сведений — Текущие кадровые данные сотрудников. Именно из него форма сотрудника считывает информацию для быстрого отображения.

Ситуация, описанная в проблеме, называется «рассинхронизацией». Первичные документы сделали движения в основные регистры (например, Кадровая история сотрудников), но регламентное обновление вспомогательного регистра Текущие кадровые данные сотрудников по какой-то причине не произошло.

Причина 1: Инерционность обновления и даты

В ходе обсуждения была выявлена важная особенность платформенной логики работы с периодическими регистрами. Рассмотрим ситуацию с датами.

Если документ приема на работу проведен будущей датой (например, сегодня 1-е число, а прием с 2-го), то запись в регистре сведений физически существует, но на текущий момент времени (на ТекущаяДата()) сотрудник еще не работает. Следовательно, в справочнике Сотрудники, который по умолчанию показывает состояние «на сегодня», поля могут быть пустыми или отображать предыдущее состояние.

В этом случае необходимо проверить:

  1. Дату начала действия трудового договора в документе.
  2. Дату рабочей станции (компьютера).

Как правило, при наступлении даты приема данные в карточке появляются автоматически.

Причина 2: Сбой в регистре «Текущие кадровые данные сотрудников»

Это наиболее частая техническая причина, особенно после переноса данных из других систем или массовой загрузки. Если данные в регистре Основные данные контракта договора сотрудника есть, а на форме пусто — значит, кэш не обновился.

Чтобы диагностировать это без отладчика, выполним следующие действия:

  1. Откроем меню «Функции для технического специалиста» (или «Все функции»).
  2. Найдем регистр сведений Текущие кадровые данные сотрудников.
  3. Сделаем отбор по проблемному сотруднику.

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

Способы обновления данных

Способ А: Перепроведение документов
Самый простой вариант — зайти в кадровый документ (Прием на работу или Кадровый перевод), отменить проведение и провести заново. Это вызывает триггер обновления записи в текущих данных.

Способ Б: Регламентная процедура
В разделе Администрирование -> Обслуживание -> Корректировка данных часто доступны обработки для исправлений. Однако в обычных условиях можно воспользоваться встроенной обработкой проверки целостности.

Также можно воспользоваться программным методом обновления, если у вас много сотрудников с такой проблемой. Рассмотрим пример кода, который инициирует обновление:


// Примерный код для принудительного обновления кадровых данных
// Выполнять в консоли кода или внешней обработке

МассивСотрудников = Новый Массив;
МассивСотрудников.Добавить(СсылкаНаСотрудника); // Ссылка на проблемного сотрудника

// Вызов процедуры обновления из общего модуля КадровыйУчет
КадровыйУчет.ОбновитьДанныеСотрудников(МассивСотрудников);

Причина 3: Программная видимость и Вид занятости

В ЗУП КОРП интерфейс формы очень динамичен. Группа реквизитов «Трудовой договор» может быть скрыта программно, если система считает, что сотрудник не является штатным работником по трудовому договору.

Это зависит от регистра Виды занятости сотрудников. Если там указано, что сотрудник работает по договору ГПХ (или запись вовсе отсутствует), то программа намеренно скроет поля трудового договора, чтобы не вводить пользователя в заблуждение.

Что проверить:

  1. Проверьте регистр сведений Виды занятости сотрудников. Убедитесь, что там есть запись на текущую дату и Вид занятости — «Основное место работы» или «Совместительство».
  2. Убедитесь, что в документе «Прием на работу» или «Начальная штатная расстановка» корректно выбран вид договора. В старых версиях или при переносе это поле могло не заполниться.

Причина 4: Особенности документа «Начальная штатная расстановка»

Если вы наблюдаете проблему сразу после внедрения или переноса данных, обратите внимание на документы ввода начальных данных (Начальная штатная расстановка или Данные на начало эксплуатации).

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

Решение:

  1. Удалите записи регистров по проблемному сотруднику (если это тестовая база и вы диагностируете проблему).
  2. Попробуйте создать на этого сотрудника чистый документ Прием на работу.
  3. Если после этого данные появились — проблема именно в кривом переносе начальных данных. Вам потребуется перезаполнить документ «Начальная штатная расстановка» корректными значениями.

Резюме по диагностике

Если вы столкнулись с отсутствием данных на форме сотрудника, действуйте по следующему алгоритму:

  1. Проверьте даты. Убедитесь, что дата приема не в будущем относительно текущей даты.
  2. Проверьте кэш. Загляните в регистр Текущие кадровые данные сотрудников через функции технического специалиста. Если там пусто — перепроведите кадровый документ.
  3. Проверьте вид занятости. Убедитесь, что система видит сотрудника как «трудового», а не как договорника ГПХ.
  4. Проанализируйте исходный документ. Если это документ переноса данных, убедитесь, что в нем заполнены все обязательные поля, включая номер и дату трудового договора.
← На главную