Как исправить ошибку «Обнаружено дублирование ключевых значений» в справочнике Сотрудники 1С:ЗУП

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

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

Анализ причины возникновения ошибки

Разберем ситуацию: почему динамический список, который раньше работал исправно, внезапно начинает выдавать дубли по ключевому полю Ссылка? В 1С:ЗУП 3.1 форма списка справочника Сотрудники — это не просто таблица, а сложный динамический запрос, который собирает данные из множества связанных регистров сведений (кадровые данные, места работы, физические лица и т.д.).

Проанализируем механизм работы: платформа выполняет SQL-запрос к базе данных. Если в одном из регистров, с которыми соединяется справочник (через ЛЕВОЕ СОЕДИНЕНИЕ), появляется две записи для одного и того же сотрудника, результат запроса «размножается». Для платформы это становится критическим сбоем, так как динамический список не может определить, какую именно строку отображать, если уникальный идентификатор (ссылка) перестал быть уникальным в выборке.

Шаг 1. Очистка локального кеша пользователя

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

  1. Завершите работу пользователя в 1С.
  2. Перейдите в каталог временных файлов пользователя. Обычно они находятся по путям:
    • %USERPROFILE%\AppData\Roaming\1C\1Cv8\
    • %USERPROFILE%\AppData\Local\1C\1Cv8\
  3. Удалите все папки с буквенно-цифровыми названиями (например, eb45-d3...).
  4. Важный момент: простое удаление базы из списка и её повторное добавление не всегда эквивалентно полной очистке кеша, так как файлы кэша привязаны к идентификатору базы, который может сохраниться.

Шаг 2. Очистка серверного кеша и настроек формы

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

Попробуйте сбросить настройки динамического списка для конкретного пользователя. Для этого перейдите в Администрирование — Обслуживание — Управление настройками пользователей. Выберите пользователя, найдите настройки формы списка справочника Сотрудники и удалите их. Часто ошибка возникает из-за того, что старые пользовательские отборы или сортировки конфликтуют с обновленным текстом запроса в новом релизе.

Шаг 3. Поиск дублей в регистрах сведений

Перейдем к самой вероятной технической причине — дублированию записей в регистрах. Выясним, какие регистры чаще всего становятся виновниками сбоя в ЗУП 3.1. Основной запрос списка сотрудников соединяется со следующими таблицами:

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

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


ВЫБРАТЬ
    ОсновныеСотрудники.ФизическоеЛицо,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ОсновныеСотрудники.Сотрудник) КАК КоличествоСотрудников
ИЗ
    РегистрСведений.ОсновныеСотрудникиФизическихЛиц КАК ОсновныеСотрудники
СГРУППИРОВАТЬ ПО
    ОсновныеСотрудники.ФизическоеЛицо
ИМЕЮЩИЕ
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ОсновныеСотрудники.Сотрудник) > 1

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

Шаг 4. Проверка прав доступа и RLS

В новых релизах ЗУП (начиная с 3.1.27/30) активно используется механизм производительного RLS (ограничение доступа на уровне записей). Иногда таблицы шаблонов ограничений заполняются некорректно после обновления, что приводит к «размножению» строк при наложении прав доступа.

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

  1. Перейдите в раздел Администрирование — Настройки пользователей и прав.
  2. Найдите пункт Технологические операции (или воспользуйтесь обработкой «Обновление прав доступа»).
  3. Запустите регламентное задание «Обновление параметров ограничений доступа».
  4. В некоторых случаях помогает простая перезапись объекта «Организация» (открыть карточку организации и нажать «Записать и закрыть»), что инициирует обновление связанных индексов доступа.

Шаг 5. Анализ расширений конфигурации

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

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

Специфика платформы 8.3.24.1667

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

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

Итоговый алгоритм действий

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

  1. Проверьте наличие дублей в регистре ОсновныеСотрудникиФизическихЛиц с помощью консоли запросов.
  2. Очистите локальный кеш на компьютере пользователя и настройки формы списка.
  3. Запустите полное обновление прав доступа через регламентные задания.
  4. Если используется клиент-серверный вариант — перезапустите службу сервера 1С и удалите серверный кеш базы.

Соблюдение этой последовательности позволит быстро локализовать проблему и вернуть работоспособность справочника без потери данных.

← На главную