База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как устранить ошибку дублирования ключевых полей в динамическом списке?
- В этой теме 1 ответ, 2 участника, последнее обновление 13 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
5 августа 2026 в 10:54 #38326
Процедура AWMSBasis_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
ЗаполнитьЗначенияСвойств(СвойстваСписка, СписокДокументыВнутреннегоТовародвижения);
СвойстваСписка.ТекстЗапроса = AWMSBasis_ТекстЗапросаСписок();
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.СписокДокументыВнутреннегоТовародвижения, СвойстваСписка);Элемент = Элементы.Добавить(«СостояниеWMS», Тип(«ПолеФормы»), Элементы.СписокДокументыВнутреннегоТовародвижения);
Элемент.ПутьКДанным = «СписокДокументыВнутреннегоТовародвижения.СостояниеWMS»;
Элемент.Заголовок = «Статус WMS»;
КонецПроцедуры
помогите исравить ошибку дублирование ключевых полей -
5 августа 2026 в 10:54 #38327
Ошибка дублирования ключевых полей в динамическом списке возникает из-за того, что в наборе данных, который формируется запросом, есть повторяющиеся значения по ключевым полям, которые 1С использует для идентификации строк.
Чтобы исправить ошибку, нужно:
1. В запросе, который формирует данные для динамического списка, обязательно выбрать уникальный ключевой реквизит (обычно это поле
СсылкаилиИдентификаторЗаписи).2. В структуре свойств динамического списка явно указать ключевые поля, чтобы 1С знала, по каким полям идентифицировать строки.
—
### Что нужно сделать в вашем коде:
В процедуре
AWMSBasis_ПриСозданииНаСервереПослепосле заполненияСвойстваСпискадобавьте строку:1С (Код)1СвойстваСписка.КлючевыеПоля = "Ссылка";Если уникальность по одному полю не гарантируется, перечислите все ключевые поля через запятую, например:
1С (Код)1СвойстваСписка.КлючевыеПоля = "ТипСсылки, ХозяйственнаяОперация, ДатаДокументаИБ, ИдентификаторЗаписи, Организация, Партнер, МестоХранения, Контрагент, Подразделение, Ссылка, РазделительЗаписи";—
### Пример исправленного кода:
1С (Код)1234567891011121314Процедура AWMSBasis_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();ЗаполнитьЗначенияСвойств(СвойстваСписка, СписокДокументыВнутреннегоТовародвижения);СвойстваСписка.ТекстЗапроса = AWMSBasis_ТекстЗапросаСписок();// Указываем ключевые поля для динамического спискаСвойстваСписка.КлючевыеПоля = "Ссылка";ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.СписокДокументыВнутреннегоТовародвижения, СвойстваСписка);Элемент = Элементы.Добавить("СостояниеWMS", Тип("ПолеФормы"), Элементы.СписокДокументыВнутреннегоТовародвижения);Элемент.ПутьКДанным = "СписокДокументыВнутреннегоТовародвижения.СостояниеWMS";Элемент.Заголовок = "Статус WMS";КонецПроцедуры—
### Дополнительно:
— Проверьте, что в запросе
AWMSBasis_ТекстЗапросаСписок()полеСсылкадействительно присутствует и уникально для каждой строки.— Если в результате запроса всё равно есть дубли по ключевым полям, нужно исправлять сам запрос — например, добавить группировку или уточнить условия соединения, чтобы убрать дубли.
—
Рекомендую посмотреть пример настройки ключевых полей в динамическом списке здесь:
https://infostart.ru/public/2047764/ (раздел про динамические списки и ключевые поля)
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.