Как исправить ошибку «Нельзя оформить сотрудника на внутреннее совместительство, так как он не работает в нашей организации» в 1С:ЗУП 3.1?

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

При ведении кадрового учета в программе «1С:Зарплата и управление персоналом» (редакция 3.1) специалисты нередко сталкиваются со сложными системными ошибками, возникающими после переноса данных или некорректного обновления конфигурации. Одной из наиболее частых и досадных проблем является невозможность провести документ приема на работу по внутреннему совместительству. Программа блокирует проведение и выдает предупреждение: «Нельзя оформить сотрудника на внутреннее совместительство, так как он не работает в нашей организации». Чтобы избежать сбоев при техническом обслуживании системы, можно использовать инструмент для автоматического обновления и тестирования баз 1С в «тихом» режиме.

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

Выясняем техническую причину возникновения ошибки

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

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

В этом регистре ключевую роль играет реквизит ОформленПоТрудовомуДоговору. Если при переносе данных из предыдущих версий (например, из ЗУП 2.5) или при проведении документа Начальная штатная расстановка этот флаг по основному месту работы не установился (остался в значении Ложь), система делает ошибочный вывод: у физического лица нет действующего трудового договора в организации. Как результат — программа блокирует проведение совместительства.

Если мы заглянем в конфигуратор, то увидим, что за вывод информации о месте работы отвечает общий модуль СотрудникиФормыБазовый, а именно функция ПоясняющаяНадписьКМестуРаботыСотрудника(ДанныеСотрудника, РеквизитыОрганизации, ДатаСведений). Когда свойство ДанныеСотрудника.ОформленПоТрудовомуДоговору возвращает Ложь, программа считает сотрудника не трудоустроенным.

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

  1. Блокировка проведения документов расчета отпусков и больничных листов с предупреждением «Сотрудник не принят на работу».
  2. Ошибки при взаимодействии с СЭДО (Социальным фондом России) и обработке входящих запросов по больничным листам.

Исключаем методологическую ошибку пользователя

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

Для каждого отдельного трудового договора (будь то основное место или совместительство) в программе должен быть создан отдельный элемент в справочнике «Сотрудники»!

Рассмотрим правильный алгоритм действий кадровика:

  1. Для основного места работы в справочнике Сотрудники создается первая карточка.
  2. При приеме на работу по внутреннему совместительству необходимо зайти в справочник Сотрудники, нажать кнопку «Создать» и ввести ФИО сотрудника.
  3. Программа автоматически распознает, что физическое лицо с такими данными уже есть в базе, и предложит выбрать его (появится диалоговое окно «Найден человек со схожими данными»). Необходимо нажать кнопку «Да, это тот, кто мне нужен».
  4. Будет создана вторая карточка сотрудника, которая привяжется к тому же самому элементу справочника Физические лица.
  5. Именно эту новую карточку сотрудника нужно выбирать в документе приема на работу по внутреннему совместительству.

Если кадровик пытается выбрать в качестве совместителя ту же самую («основную») карточку сотрудника, программа закономерно выдаст ошибку проведения. Если же методология соблюдена, а ошибка все равно появляется — дело в технических данных регистра. Перейдем к их исправлению.

Способ 1. Ручная корректировка регистра «Текущие кадровые данные сотрудников»

Рассмотрим самый быстрый способ решения проблемы, если она носит единичный характер (касается одного или нескольких конкретных сотрудников).

Выполним следующие шаги для ручного редактирования регистра:

  1. Откроем главное меню программы (кнопка с изображением стрелки/шестеренки в правом верхнем углу окна) и выберем пункт «Функции для технического специалиста» (в старых релизах этот пункт называется «Все функции»). Если этот пункт меню недоступен, его необходимо включить в настройках параметров системы (Настройки — Параметры — Отображать команду "Функции для технического специалиста").
  2. В появившемся дереве объектов найдем раздел «Регистры сведений».
  3. Найдем и откроем регистр сведений Текущие кадровые данные сотрудников.
  4. В окне списка записей воспользуемся поиском и найдем нашего проблемного сотрудника по основному месту работы.
  5. Откроем запись и проанализируем реквизиты. Мы увидим, что дата приема и организация заполнены правильно, однако флаг «Оформлен по трудовому договору» снят.
  6. Вручную установим этот флаг в положение Истина (поставим галочку) и нажмем кнопку «Записать и закрыть».

После этой простой манипуляции попробуем заново провести документ приема на работу по внутреннему совместительству. Программа больше не будет выдавать ошибку.

Способ 2. Проверка технического документа «Перенос данных» (ТДК)

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

Давайте проверим эти данные по шагам:

  1. Перейдем в раздел «Администрирование» — «Перенос данных».
  2. Найдем в списке документы с префиксом номера ТДК (данные документы отвечают за перенос сведений о договорах и контрактах сотрудников).
  3. Откроем документ и перейдем на вкладку регистра Сведения контракта, договора сотрудника.
  4. Проверим наличие записи по нашему сотруднику. Если строки нет, или данные в ней заполнены с ошибками, необходимо аккуратно внести изменения или добавить строку вручную, указав параметры основного трудового договора сотрудника.
  5. Проведем документ переноса данных. Это автоматически обновит зависимый регистр текущих кадровых данных.

Способ 3. Перепроведение документов «Начальная штатная расстановка»

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

Документ Начальная штатная расстановка при проведении делает комплексные движения по всем кадровым регистрам, включая и Текущие кадровые данные сотрудников.

  1. Перейдем в раздел «Кадры» — «См. также» — «Начальная штатная расстановка».
  2. Найдем документ, которым был принят наш сотрудник.
  3. Распроведем этот документ (отменим проведение).
  4. Снова проведем документ. При повторном проведении программа корректно перезапишет все регистры кадровых сведений и автоматически установит флаг «Оформлен по трудовому договору» в значение ИСТИНА.

Важное предупреждение: Данный способ категорически запрещено использовать, если после начальной штатной расстановки по сотрудникам уже вводились последующие кадровые документы (переводы, изменения оплаты), рассчитывалась заработная плата или закрывались прошлые периоды! Распроведение ввода остатков нарушит ссылочную целостность кадровой истории и приведет к серьезным ошибкам в расчетах.

Способ 4. Групповое изменение реквизитов (для множественных ошибок)

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

Рассмотрим алгоритм группового исправления данных:

  1. Перейдем в раздел «Администрирование» — «Обслуживание» — «Корректировка данных».
  2. Откроем ссылку «Групповое изменение реквизитов».
  3. В поле «Выбирать элементы» выберем регистр сведений Текущие кадровые данные сотрудников.
  4. Нажмем ссылку «Добавить отбор» и настроим условие: Оформлен по трудовому договору равно Ложь. Дополнительно можно установить отбор по конкретной организации, если учет ведется по нескольким фирмам.
  5. В табличной части доступных для изменения реквизитов найдем строку Оформлен по трудовому договору, установим галочку в колонке «Изменять» и в колонке «Новое значение» выберем «Да» (Истина).
  6. Нажмем кнопку «Изменить реквизиты».

Программа в фоновом режиме обработает все записи регистра по настроенному нами фильтру и принудительно проставит признак активного договора. Это полностью решит проблему для всех сотрудников сразу.

Способ 5. Программное исправление регистра сведений (для разработчиков)

Если вы являетесь программистом или администратором 1С, вы можете написать простую внешнюю обработку, которая автоматически сопоставит данные регистра Виды занятости сотрудников с регистром Текущие кадровые данные сотрудников и точечно исправит расхождения.

Рассмотрим пример программного кода для автоматизации этого процесса:


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

Данный скрипт безопасно обходит всю базу данных, находит только те записи, в которых действительно присутствует расхождение кадровой логики, и аккуратно перезаписывает их, не нарушая остальную информацию по сотрудникам.

Подведем итоги

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

← На главную