Ошибка при открытии справочника "Сотрудники" в 1С:ЗКГУ 3.0: что делать при дублировании ключевых значений?

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

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

Основные причины возникновения ошибки

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

  1. Проблемы с обновлениями: Часто ошибка проявляется после установки обновлений конфигурации, например, на версиях 3.1.14.436 или 3.1.17.94. Несмотря на то, что для ошибки 10228645 (задвоение сотрудников в отчетах) заявлялось исправление в версиях 3.1.14.394 и 3.1.16.133, пользователи продолжают сталкиваться с аналогичными проблемами.
  2. Некорректное использование обработок: Применение внешних обработок, таких как ОбновитьСостоянияСотрудника.epf, предназначенных для исправления других ошибок, может непреднамеренно привести к появлению или повторному возникновению дубликатов в регистре СостоянияСотрудников. Отмечено, что даже после очистки базы этой обработкой, новые задвоенные записи могут появляться после ввода очередных документов отсутствия (например, больничных листов или отпусков).
  3. Ошибки данных при кадровых операциях: Дублирование может возникать из-за незакрытых кадровых переводов или других операций, которые некорректно формируют записи в регистрах.
  4. Синхронизация данных: В случае синхронизации между ЗУП/ЗКГУ и Бухгалтерией, некорректные настройки или ошибки в процессе обмена также могут приводить к задвоению физических лиц и, как следствие, проблемам с сотрудниками.

Шаги по диагностике проблемы

Для того чтобы эффективно устранить ошибку, необходимо сначала правильно ее диагностировать. Разберем основные методы диагностики:

Проверка журнала регистрации

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

Использование консоли запросов для выявления дубликатов

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

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

Мы будем искать сотрудников, у которых в регистре СостоянияСотрудников есть несколько записей с пустым значением даты окончания (ДействуетДо = ДАТАВРЕМЯ(1, 1, 1)). Это часто указывает на незакрытые или некорректно сформированные состояния.

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


ВЫБРАТЬ
    СостоянияСотрудников.Сотрудник КАК Сотрудник
ИЗ
    РегистрСведений.СостоянияСотрудников КАК СостоянияСотрудников
ГДЕ
    СостоянияСотрудников.ДействуетДо = ДАТАВРЕМЯ(1, 1, 1)
СГРУППИРОВАТЬ ПО
    СостоянияСотрудников.Сотрудник
ИМЕЮЩИЕ
    КОЛИЧЕСТВО(СостоянияСотрудников.ДействуетДо) > 1

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

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

Временные обходные пути и модификация формы

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

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

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

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

Методы устранения ошибки

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

Ручное удаление проблемных записей

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

  1. Включите режим технического специалиста: Это можно сделать через «Главное меню» -> «Настройки» -> «Параметры» или при запуске базы под Администратором.
  2. Откройте регистр сведений СостоянияСотрудников: Найдите его в списке регистров сведений через режим технического специалиста.
  3. Найдите проблемного сотрудника: Отфильтруйте записи по сотруднику, у которого были обнаружены дубликаты.
  4. Проанализируйте записи: Внимательно просмотрите все записи для этого сотрудника. Вам нужно будет определить, какая из задвоенных записей является "левой" или некорректной. Обычно это записи с явно ошибочными датами (например, 01.01.0001) или полные дубликаты, которые не должны существовать одновременно.
  5. Удалите некорректную запись: Выделите некорректную запись и удалите ее. Критически важно: перед удалением убедитесь, что вы удаляете именно лишнюю запись, а не актуальные данные. Обязательно сделайте резервную копию базы данных перед выполнением любых ручных корректировок.

Использование внешней обработки ОбновитьСостоянияСотрудника.epf

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

  1. Получите обработку: Обратитесь в Линию Консультации 1С или к вашему партнеру 1С для получения актуальной версии обработки ОбновитьСостоянияСотрудника.epf.
  2. Запустите обработку: Откройте базу данных 1С, зайдите в раздел «Файл» -> «Открыть» и выберите файл обработки.
  3. Выполните обработку без выбора сотрудника: Ключевой момент – запустить обработку, не выбирая конкретного сотрудника. Это позволит обработать весь регистр СостоянияСотрудников по всем сотрудникам, что обычно приводит к устранению задвоенных записей и нормализации данных. Пользователи подтверждают, что этот подход часто успешно решает проблему открытия справочника.

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

Устранение рецидивов

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

  1. Проверка обновлений: Убедитесь, что ваша конфигурация обновлена до последних актуальных версий, в которых заявлено исправление подобных ошибок. Однако, как показывает опыт, даже после обновлений проблема может сохраняться.
  2. Последовательное перепроведение документов: Если задвоение возникает после ввода конкретного документа (например, больничного листа), мы можем попробовать следующий подход:
    1. Снимите с проведения все документы, которые оставляют записи в регистре СостоянияСотрудников для проблемного сотрудника. Это могут быть «Прием на работу», «Кадровый перевод», «Больничный лист», «Отпуск» и другие.
    2. Запустите обработку ОбновитьСостоянияСотрудника.epf без выбора сотрудника, чтобы очистить все некорректные записи.
    3. Заново поочередно проведите документы, начиная с самого раннего («Прием на работу»), затем все «Больничные листы», «Отпуска» и другие, строго следуя хронологии.

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

  3. Регулярное использование обработки: Если проблема сохраняется, возможно, придется использовать обработку ОбновитьСостоянияСотрудника.epf на регулярной основе, запуская ее после ввода пакета кадровых документов или по мере возникновения ошибки.

Использование стандартной обработки «Поиск и удаление дублей»

В 1С также существует стандартная обработка «Поиск и удаление дублей», расположенная в разделе «Администрирование» -> «Поддержка и обслуживание». Хотя она в основном предназначена для справочников «Физические лица» или «Сотрудники», она может помочь в случаях, если сама ссылка на сотрудника или физическое лицо задвоилась. С ее помощью мы можем найти и объединить задублированные элементы, перенося все связанные документы на одну корректную карточку и помечая дубли на удаление. Этот метод полезен, если проблема лежит глубже, чем просто дубликаты в регистре состояний.

Анализ связанных регистров

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

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

Радикальный способ исправления (с особой осторожностью)

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

Алгоритм действий следующий:

  1. Распроведите все кадровые документы: Отмените проведение всех кадровых документов (Прием, Кадровый перевод, Увольнение, Отпуск, Больничный лист) для проблемных сотрудников или, в крайнем случае, для всех сотрудников.
  2. Удалите все записи регистра: В режиме технического специалиста полностью удалите все записи регистра СостоянияСотрудников (или ОсновныеСотрудникиФизическихЛиц, если это старая версия) по проблемным сотрудникам. В крайне тяжелых случаях, возможно, придется удалять все записи регистра.
  3. Последовательно проведите кадровые документы заново: Начните проводить документы заново, строго соблюдая хронологию, небольшими порциями. Это позволит системе пересоздать все записи в регистрах с нуля, надеясь на то, что на этот раз они будут сформированы корректно.

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

Заключение

Ошибка при открытии справочника «Сотрудники» из-за дублирования ключевых значений является достаточно распространенной проблемой в 1С:ЗКГУ/ЗУП 3.0. Мы рассмотрели основные причины ее возникновения, а также подробно разобрали методы диагностики и устранения. Начиная от проверки журнала регистрации и использования консоли запросов для выявления проблемных записей, до применения специализированных внешних обработок и ручной корректировки данных, а также методов борьбы с рецидивами. Помните, что при любых действиях по изменению данных в базе 1С, особенно при работе с регистрами напрямую, крайне важно предварительно создать актуальную резервную копию вашей информационной базы. Если вы не уверены в своих действиях, всегда лучше обратиться за помощью к опытным специалистам 1С.

← На главную