Почему не открывается раздел «Сотрудники» в 1С:Бухгалтерия 3.0 и как исправить ошибку дублирования данных?

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

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

Разберем причину возникновения ошибки

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

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

Чаще всего такая проблема возникает после переноса данных, когда логика хранения кадровой истории в 1С 7.7 вступает в конфликт со строгими правилами контроля целостности в 1С 8.3.

Выясним, какие регистры могут содержать дубли

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

  1. ТекущиеКадровыеДанныеСотрудников — самый частый виновник. Здесь хранится информация о текущей организации, подразделении и должности.
  2. ТекущаяТарифнаяСтавкаСотрудников — сведения об окладах и авансах.
  3. РолиСотрудников — признаки того, является ли человек работником по трудовому договору или договорником ГПХ.
  4. ОсновныеСотрудникиФизическихЛиц — регистр, определяющий приоритетную карточку сотрудника для физлица.
  5. ДанныеСостоянийСотрудников — информация о том, работает сотрудник или находится в отпуске/уволен.

Использование консоли запросов для поиска проблемных записей

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

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


ВЫБРАТЬ РАЗРЕШЕННЫЕ
    СправочникСотрудники.Ссылка КАК Ссылка,
    СправочникСотрудники.Наименование КАК Наименование,
    ЕСТЬNULL(ТекущиеКадровыеДанныеСотрудников.ТекущаяОрганизация, ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка)) КАК ТекущаяОрганизация
ПОМЕСТИТЬ ВТ_Данные
ИЗ
    Справочник.Сотрудники КАК СправочникСотрудники
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников
    ПО (ТекущиеКадровыеДанныеСотрудников.Сотрудник = СправочникСотрудники.Ссылка);

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Данные.Ссылка
ИЗ
    ВТ_Данные КАК ВТ_Данные
СГРУППИРОВАТЬ ПО
    ВТ_Данные.Ссылка
ИМЕЮЩИЕ
    КОЛИЧЕСТВО(*) > 1

Если этот запрос вернул список сотрудников, значит, по ним действительно есть задублированные записи в регистре ТекущиеКадровыеДанныеСотрудников.

Пошаговая инструкция по удалению дублей через «Функции для технического специалиста»

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

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

Особенности работы с датой 31.12.3999

В процессе анализа регистров вы можете встретить дату 31.12.3999. Не пугайтесь — это не ошибка. В системе 1С это служебное значение, которое интерпретируется как «бесконечность» или «открытая дата». Она используется для обозначения того, что кадровое состояние (например, работа в должности) актуально на текущий момент и не имеет установленной даты завершения.

Важный момент: Проблема возникает не из-за самой даты, а если в регистре присутствуют две записи для одного сотрудника: одна с реальной датой (например, 2023 год), а вторая — с 3999 годом, и система не может приоритезировать их для вывода в список.

Что делать, если стандартные методы не помогают?

Если ручная очистка регистров через интерфейс не дает результата или вы не можете найти «невидимый» дубль, попробуем запустить Тестирование и исправление информационной базы в Конфигураторе: при работе с несколькими базами для этого применяется автоматическое тестирование и архивирование баз 1С.

При запуске тестирования обязательно установите галочки:

В настройках выберите вариант «Очищать ссылки» для объектов, которые невозможно восстановить. Это часто помогает вычистить «хвосты», оставшиеся после некорректного обмена данными с 1С 7.7. Для исправления поврежденных записей и объектов также подойдёт обработка для восстановления битых ссылок.

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

← На главную