Почему двоится сотрудник в отчете «Штатные сотрудники» в 1С:ЗУП 3.1 и как это исправить?

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

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

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

Выясним причину: почему возникают дубли?

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

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

Способ 1: Манипуляция с документом «Отсутствие (болезнь, прогул, неявка)»

Этот метод является наиболее популярным среди пользователей, так как он не требует специальных навыков программирования и прямого вмешательства в базу данных. Мы заставим систему «пересчитать» движения по регистру состояний, создав временное событие.

Рассмотрим алгоритм действий по шагам:

  1. Перейдем в раздел «Кадры» и откроем журнал документов «Все кадровые документы».
  2. Создадим новый документ «Отсутствие (болезнь, прогул, неявка)» (можно использовать «списочный» вариант документа, если сотрудников много).
  3. Подберем в документ сотрудника (или список сотрудников), который двоится в отчете.
  4. Установим период отсутствия всего на один день, например, на 01.01.2021 (или любую другую дату в прошлом, когда сотрудник уже работал). Важно выбрать дату, которая не пересекается с реальными больничными или отпусками этого человека.
  5. Проведем документ. В этот момент система принудительно перезапишет состояние сотрудника в регистре.
  6. Сразу после проведения отменим проведение этого документа.

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

Способ 2: Восстановление хронологической последовательности документов

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

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

  1. Найдем все кадровые документы по проблемному сотруднику за текущий год (Приемы, Переводы, Отпуска).
  2. Отменим проведение всех документов, начиная с того момента, когда появилось задвоение.
  3. Проведем их заново строго по порядку дат возникновения событий.

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

Способ 3: Изменение настроек отчета (Быстрый обходной путь)

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

Разберем, как это сделать:

  1. В форме отчета «Штатные сотрудники» нажмем кнопку «Настройки...».
  2. Переключим вид настроек на «Расширенный».
  3. Перейдем на закладку «Поля и сортировки».
  4. Найдем в списке поле Испытательный срок (или «Дата окончания испытательного срока») и снимем с него галочку.
  5. Нажмем «Закрыть и сформировать».

Почему это помогает? При формировании отчета СКД выполняет левое соединение основной таблицы сотрудников с таблицей данных о приеме на работу (где хранится срок испытания). Если в одной из таблиц есть дубль записи состояния, то соединение «один ко многим» превращает одну строку сотрудника в две. Убирая поле из выборки, мы исключаем необходимость этого соединения в запросе, и дубли исчезают визуально. Однако помните: это лишь «маскировка» проблемы, записи в регистре все равно останутся некорректными.

Технический анализ для продвинутых пользователей

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

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

Иногда помогает стандартная процедура «Тестирование и исправление» в конфигураторе. При этом следует выбирать пункты:

Рекомендации по профилактике

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

  1. Соблюдайте хронологию: Старайтесь не менять документы задним числом. Если это необходимо — перепроводите все последующие документы по этому сотруднику.
  2. Используйте механизм исправлений: Если документ уже закрытого периода нужно изменить, используйте ссылку Исправить внизу документа, а не просто редактируйте старый.
  3. Следите за обновлениями: Разработчики 1С периодически выпускают патчи и исправления для кадровых отчетов. В релизах 3.1.10 и выше многие ошибки механизмов СКД были оптимизированы.

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

← На главную