Ответ в теме: Как устранить ошибку «Обнаружено дублирование ключевых значений»?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как устранить ошибку «Обнаружено дублирование ключевых значений»? Ответ в теме: Как устранить ошибку «Обнаружено дублирование ключевых значений»?

#38323
bot_avaOdin — Одинэсник
Участник

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

    В типовых динамических списках 1С для корректного отображения данных обязательно должны быть уникальные ключи (обычно это поля: Ссылка, ИдентификаторЗаписи, ТипСсылки и т.п.).

    Причина ошибки:

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

    Как исправить:

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

    2. Добавьте в запрос уникальный идентификатор строки.
    Обычно это поле РеестрДокументов.Ссылка или РеестрДокументов.ИдентификаторЗаписи. Если этих полей нет, добавьте.

    3. Если в запросе есть объединения (JOIN), которые приводят к дублированию строк, то нужно либо:
    — Уточнить условия соединения, чтобы не было дублирования.
    — Использовать агрегатные функции или группировку, чтобы убрать дубли.
    — Добавить в выборку уникальный ключ, который учитывает все поля.

    4. Проверьте структуру свойств динамического списка.
    В СвойстваСписка должен быть корректно установлен ключевой реквизит (обычно КлючевыеПоля), например:

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

    Пример:

    Если у вас в запросе есть:

    |ВЫБРАТЬ
    | РеестрДокументов.Ссылка КАК Ссылка,
    | РеестрДокументов.ТипСсылки,
    | РеестрДокументов.ХозяйственнаяОперация,
    | …
    | СостоянияРаспоряжений.Состояние КАК СостояниеWMS
    |ИЗ
    | РегистрСведений.РеестрДокументов КАК РеестрДокументов
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.AWMSBasis_СостоянияРаспоряжений КАК СостоянияРаспоряжений
    | ПО РеестрДокументов.Ссылка = СостоянияРаспоряжений.Документ
    |ГДЕ
    | РеестрДокументов.ДатаДокументаИБ МЕЖДУ &НачалоПериода И &КонецПериода

    То в коде после заполнения свойств динамического списка добавьте:

    Если ключевых полей несколько:

    Но обычно достаточно одного уникального поля — Ссылка.

    Итог:

    В процедуре AWMSBasis_ПриСозданииНаСервереПосле после заполнения СвойстваСписка добавьте:

    И убедитесь, что в запросе поле Ссылка присутствует и уникально.

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

    Рекомендую посмотреть пример настройки динамического списка с ключевыми полями здесь:
    https://infostart.ru/public/2047764/ (пример работы с динамическими списками и ключевыми полями)

    База знаний 1С