Многие пользователи программы «1С:Зарплата и управление персоналом 8», редакция 3.1, сталкиваются с неприятной ситуацией: при формировании стандартного отчета «Штатные сотрудники», «Штатная расстановка», одна и та же фамилия сотрудника выводится в списке дважды. При этом в итоговой строке «Всего сотрудников» цифра остается верной, а в справочнике «Сотрудники» никаких дублей или копий физических лиц нет. Ситуация кажется мистической, но на самом деле она имеет под собой четкую техническую причину, связанную с механизмами хранения данных в системе.
В этой статье мы подробно разберем, почему возникает такое поведение программы, проанализируем структуру регистров и рассмотрим несколько способов решения проблемы — от простых пользовательских манипуляций до системных правок, включая редактирование движений в регистрах документа «Перенос данных».
Первым делом нам необходимо понять, откуда отчет берет данные. Основные кадровые отчеты в ЗУП 3.1 строятся на базе сложной системы запросов к различным регистрам. Ключевым звеном здесь является регистр сведений Состояния сотрудников. В этом регистре хранится информация о том, в каком статусе находится человек на определенную дату: «Работает», «В отпуске», «Болеет» и так далее.
Проблема задвоения чаще всего возникает из-за нарушения логической целостности в этом регистре. Рассмотрим ситуацию: программа ожидает, что на один момент времени у сотрудника может быть только одно состояние. Однако из-за сбоев, проведения документов «задним числом» или ошибок при обновлении, в регистре могут появиться две записи с состоянием «Работа» на одну и ту же дату (или перекрывающие друг друга периоды). Система компоновки данных (СКД), пытаясь соединить эти записи с данными о должности и подразделении, создает две строки в отчете вместо одной.
Этот метод является наиболее популярным среди пользователей, так как он не требует специальных навыков программирования и прямого вмешательства в базу данных. Мы заставим систему «пересчитать» движения по регистру состояний, создав временное событие.
Рассмотрим алгоритм действий по шагам:
В чем секрет этого метода? При проведении и последующей отмене проведения документа «Отсутствие», программа инициирует механизм обновления записей в регистре Состояния сотрудников. Лишние, «зависшие» записи при этом часто удаляются автоматически, так как система восстанавливает актуальное состояние «Работа» на основании первичных кадровых приказов.
Часто проблема возникает из-за того, что кадровики нарушают последовательность ввода данных. Например, сначала провели Кадровый перевод от 10-го числа, а затем решили ввести документ отклонения (например, отпуск) за предыдущий месяц. В таких случаях записи в регистрах могут «наложиться» друг на друга.
Проанализируем ситуацию: если у сотрудника в регистре состояний зафиксировано несколько записей «Работа» с разными датами начала, нам необходимо перепровести цепочку документов в строгой последовательности.
Это позволит системе корректно сформировать записи в регистре Данные состояний сотрудников и Состояния сотрудников. Помните, что 1С очень чувствительна к последовательности проведения, особенно в части учета стажей и состояний, поэтому иногда требуется корректировка (сторно) движений документа.
Если вам нужно срочно сдать отчет, а времени на исправление данных в регистрах нет, можно прибегнуть к изменению настроек самого отчета. Замечено, что задвоение часто проявляется только тогда, когда в отчет выводится поле «Испытательный срок».
Разберем, как это сделать:
Испытательный срок (или «Дата окончания испытательного срока») и снимем с него галочку.Почему это помогает? При формировании отчета СКД выполняет левое соединение основной таблицы сотрудников с таблицей данных о приеме на работу (где хранится срок испытания). Если в одной из таблиц есть дубль записи состояния, то соединение «один ко многим» превращает одну строку сотрудника в две. Убирая поле из выборки, мы исключаем необходимость этого соединения в запросе, и дубли исчезают визуально. Однако помните: это лишь «маскировка» проблемы, записи в регистре все равно останутся некорректными.
Если вы обладаете правами администратора или программиста, мы рекомендуем проверить содержимое регистра напрямую. Для этого можно воспользоваться обработкой «Просмотр и редактирование регистров» или встроенным инструментом «Функции для технического специалиста».
Посмотрите на записи регистра сведений Состояния сотрудников с отбором по конкретному человеку. Если вы видите две активные записи с состоянием «Работа», которые начинаются в разные даты, но не имеют даты окончания (или даты перекрываются), значит, вы нашли корень зла.
Иногда помогает стандартная процедура «Тестирование и исправление» в конфигураторе. При этом следует выбирать пункты:
Чтобы в будущем не сталкиваться с «двоением» сотрудников, придерживайтесь следующих правил при работе в ЗУП 3.1:
Исправить внизу документа, а не просто редактируйте старый.Таким образом, мы выяснили, что дубли в отчетах — это не ошибка в справочнике сотрудников, а следствие «грязных» данных в регистрах состояний. Использование метода с временным документом Отсутствие является самым быстрым и эффективным способом «вылечить» базу без привлечения программистов.