Обнаружено дублирование ключевых значений в колонке Ссылка при отборе

1. AleksandrLeshkov 04.08.21 11:08 Сейчас в теме
Добрый день! Не могу понять, что сделал не так, подскажите, пожалуйста. Вот код
Отбор=Список.Отбор.Элементы;
	
	ПолеОтбора=Новый ПолеКомпоновкиДанных("Ссылка.ДокументыДляПоступления.ДокументДляПоступления");
	Если Отбор.количество()>0 тогда
		Для Каждого ТекОтбор Из Отбор Цикл
			Если ТекОтбор.ЛевоеЗначение=ПолеОтбора Тогда
				Если ЗначениеЗаполнено(ОтборДокументыДляПоступления) Тогда
					ТекОтбор.ПравоеЗначение=ОтборДокументыДляПоступления;
					ТекОтбор.Использование=Истина;
				Иначе
					ТекОтбор.Использование=Ложь;
				КонецЕсли;
				Возврат;
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	УсловиеОтбора=Отбор.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	УсловиеОтбора.ЛевоеЗначение=ПолеОтбора;
	УсловиеОтбора.ВидСравнения=ВИдСравненияКомпоновкиДанных.Равно;
	УсловиеОтбора.ПравоеЗначение=ОтборДокументыДляПоступления;
	УсловиеОтбора.Использование=Истина;
Показать


Проблема в следующем: по некоторым видам документов фильтрует без проблем, а на некоторых выдаёт ошибку
Обнаружено дублирование ключевых значений в колонках: "Ссылка".
Отображение данных в списке невозможно.
Это всё в динамическом списке
Не могу понять как решить
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. RocKeR_13 1376 04.08.21 11:20 Сейчас в теме
(1) А запрос динамического списка? Если на БСП, то проще использовать ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка
3. AleksandrLeshkov 04.08.21 11:24 Сейчас в теме
(2)
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка


ВЫБРАТЬ РАЗЛИЧНЫЕ
	ДокументАнкетаАбитуриента.Ссылка КАК Ссылка,
	ДокументАнкетаАбитуриента.ПометкаУдаления КАК ПометкаУдаления,
	ДокументАнкетаАбитуриента.Номер КАК Номер,
	ДокументАнкетаАбитуриента.Дата КАК Дата,
	ДокументАнкетаАбитуриента.Проведен КАК Проведен,
	ДокументАнкетаАбитуриента.Автор КАК Автор,
	ДокументАнкетаАбитуриента.БазаОсвоенияПрограммыОбучения КАК БазаОсвоенияПрограммыОбучения,
	ДокументАнкетаАбитуриента.БазовоеОбразование КАК БазовоеОбразование,
	ДокументАнкетаАбитуриента.БывшийСССР КАК БывшийСССР,
	ДокументАнкетаАбитуриента.ВидДокументаОбразования КАК ВидДокументаОбразования,
	ДокументАнкетаАбитуриента.ВидДокументаУдостоверяющегоЛичность КАК ВидДокументаУдостоверяющегоЛичность,
	ДокументАнкетаАбитуриента.ВидОбразовательнойОрганизации КАК ВидОбразовательнойОрганизации,
	ДокументАнкетаАбитуриента.ВступительнаяГруппа КАК ВступительнаяГруппа,
	ДокументАнкетаАбитуриента.ВыданаРасписка КАК ВыданаРасписка,
	ДокументАнкетаАбитуриента.ВыданЭкзаменационныйЛист КАК ВыданЭкзаменационныйЛист,
	ДокументАнкетаАбитуриента.ГородОбразовательнойОрганизации КАК ГородОбразовательнойОрганизации,
	ДокументАнкетаАбитуриента.Гражданство КАК Гражданство,
	ДокументАнкетаАбитуриента.ДатаВозвратаДокументов КАК ДатаВозвратаДокументов,
	ДокументАнкетаАбитуриента.ДатаВыдачиДокументаУдостоверяющегоЛичность КАК ДатаВыдачиДокументаУдостоверяющегоЛичность,
	ДокументАнкетаАбитуриента.ДатаВыдачиПолиса КАК ДатаВыдачиПолиса,
	ДокументАнкетаАбитуриента.ДатаОкончанияОбразовательнойОрганизации КАК ДатаОкончанияОбразовательнойОрганизации,
	ДокументАнкетаАбитуриента.ДатаРождения КАК ДатаРождения,
	ДокументАнкетаАбитуриента.ДатаСобеседования КАК ДатаСобеседования,
	ДокументАнкетаАбитуриента.ДокументыВозвращены КАК ДокументыВозвращены,
	ДокументАнкетаАбитуриента.ИзучаемыйЯзык КАК ИзучаемыйЯзык,
	ДокументАнкетаАбитуриента.Имя КАК Имя,
	ДокументАнкетаАбитуриента.ИНН КАК ИНН,
	ДокументАнкетаАбитуриента.ИсточникИнформации КАК ИсточникИнформации,
	ДокументАнкетаАбитуриента.КаналРекламногоВоздействия КАК КаналРекламногоВоздействия,
	ДокументАнкетаАбитуриента.КодИФНС КАК КодИФНС,
	ДокументАнкетаАбитуриента.КодПодразделенияДокументУдостоверяющийЛичность КАК КодПодразделенияДокументУдостоверяющийЛичность,
	ДокументАнкетаАбитуриента.Льгота КАК Льгота,
	ДокументАнкетаАбитуриента.Медалист КАК Медалист,
	ДокументАнкетаАбитуриента.НомерАрхивногоДела КАК НомерАрхивногоДела,
	ДокументАнкетаАбитуриента.НомерДокументаОбразования КАК НомерДокументаОбразования,
	ДокументАнкетаАбитуриента.НомерДокументаУдостоверяющегоЛичность КАК НомерДокументаУдостоверяющегоЛичность,
	ДокументАнкетаАбитуриента.НомерМедСтрах КАК НомерМедСтрах,
	ДокументАнкетаАбитуриента.НомерОбразовательнойОрганизации КАК НомерОбразовательнойОрганизации,
	ДокументАнкетаАбитуриента.Организация КАК Организация,
	ДокументАнкетаАбитуриента.Ответственный КАК Ответственный,
	ДокументАнкетаАбитуриента.Отчество КАК Отчество,
	ДокументАнкетаАбитуриента.Пол КАК Пол,
	ДокументАнкетаАбитуриента.ПолученноеОбразование КАК ПолученноеОбразование,
	ДокументАнкетаАбитуриента.ПосещениеПодготовительныхКурсов КАК ПосещениеПодготовительныхКурсов,
	ДокументАнкетаАбитуриента.ПоЦелевомуНаправлению КАК ПоЦелевомуНаправлению,
	ДокументАнкетаАбитуриента.ПриемнаяКампания КАК ПриемнаяКампания,
	ДокументАнкетаАбитуриента.ПризерОлимпиад КАК ПризерОлимпиад,
	ДокументАнкетаАбитуриента.ПриписноеСвидетельствоНомер КАК ПриписноеСвидетельствоНомер,
	ДокументАнкетаАбитуриента.ПриписноеСвидетельствоСерия КАК ПриписноеСвидетельствоСерия,
	ДокументАнкетаАбитуриента.РайонПриписки КАК РайонПриписки,
	ДокументАнкетаАбитуриента.СерияДокументаОбразования КАК СерияДокументаОбразования,
	ДокументАнкетаАбитуриента.СерияДокументаУдостоверяющегоЛичность КАК СерияДокументаУдостоверяющегоЛичность,
	ДокументАнкетаАбитуриента.СерияМедСтрах КАК СерияМедСтрах,
	ДокументАнкетаАбитуриента.СостоитНаВоинскомУчете КАК СостоитНаВоинскомУчете,
	ДокументАнкетаАбитуриента.Специализация КАК Специализация,
	ДокументАнкетаАбитуриента.Специальность КАК Специальность,
	ДокументАнкетаАбитуриента.СреднийБаллАттестата КАК СреднийБаллАттестата,
	ДокументАнкетаАбитуриента.СтажЛет КАК СтажЛет,
	ДокументАнкетаАбитуриента.СтажМесяцев КАК СтажМесяцев,
	ДокументАнкетаАбитуриента.СтранаГражданства КАК СтранаГражданства,
	ДокументАнкетаАбитуриента.Страхователь КАК Страхователь,
	ДокументАнкетаАбитуриента.СтраховойНомерПФР КАК СтраховойНомерПФР,
	ДокументАнкетаАбитуриента.ТребуетсяОбщежитие КАК ТребуетсяОбщежитие,
	ДокументАнкетаАбитуриента.Фамилия КАК Фамилия,
	ДокументАнкетаАбитуриента.ФизЛицо КАК ФизЛицо,
	ДокументАнкетаАбитуриента.Финансирование КАК Финансирование,
	ДокументАнкетаАбитуриента.ФормаОбучения КАК ФормаОбучения,
	ДокументАнкетаАбитуриента.ЦелевоеНаправление КАК ЦелевоеНаправление,
	ДокументАнкетаАбитуриента.IDАбитуриента КАК IDАбитуриента,
	ДокументАнкетаАбитуриента.Статус КАК Статус,
	ДокументАнкетаАбитуриента.ПоступилоССайта КАК ПоступилоССайта,
	ДокументАнкетаАбитуриента.НоваяЗаявка КАК НоваяЗаявка,
	ДокументАнкетаАбитуриента.СемейноеПоложение КАК СемейноеПоложение,
	ДокументАнкетаАбитуриента.РегистрационныйНомер КАК РегистрационныйНомер,
	ДокументАнкетаАбитуриента.ВидВоинскогоДокумента КАК ВидВоинскогоДокумента,
	ДокументАнкетаАбитуриента.МоментВремени КАК МоментВремени,
	ПоРейтингам.ВнесенВРейтинг КАК ВнесенВРейтинг
ИЗ
	Документ.АнкетаАбитуриента КАК ДокументАнкетаАбитуриента
		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
			РейтингАбитуриентовСписокАбитуриентовКЗачислению.АнкетаАбитуриента КАК АнкетаАбитуриента,
			РейтингАбитуриентовСписокАбитуриентовКЗачислению.Ссылка.Представление КАК ВнесенВРейтинг
		ИЗ
			Документ.РейтингАбитуриентов.СписокАбитуриентовКЗачислению КАК РейтингАбитуриентовСписокАбитуриентовКЗачислению
		ГДЕ
			НЕ РейтингАбитуриентовСписокАбитуриентовКЗачислению.Ссылка.ПометкаУдаления) КАК ПоРейтингам
		ПО ДокументАнкетаАбитуриента.Ссылка = ПоРейтингам.АнкетаАбитуриента
Показать
4. RocKeR_13 1376 04.08.21 11:26 Сейчас в теме
(3) Проверяйте данные таблицы, с которой происходит левое соединение: скорее всего по указанному условию соединения в этой таблице 2 и более записи, что и приводит к дублированию
5. AleksandrLeshkov 04.08.21 11:27 Сейчас в теме
(4)То есть несколько документов может быть?
6. RocKeR_13 1376 04.08.21 11:29 Сейчас в теме
(5) Несколько строк с одним документом. Например, если есть 2 таблицы:

ссылка1 | абитуриент 1

И

Абитуриент1 | ЗНАЧЕНИЕ1
Абитуриент1 | ЗНАЧЕНИЕ2

То в результате левого соединения по абитуриенту получится таблица

ссылка1 | абитуриент 1 | ЗНАЧЕНИЕ1
ссылка1 | абитуриент 1 | ЗНАЧЕНИЕ2

что и приведет к ошибке дублирования ключевых полей, если у динамического списка назначена основная таблица
Dem0; AleksandrLeshkov; +2 Ответить
7. RocKeR_13 1376 04.08.21 11:33 Сейчас в теме
(5) Может у вас одна анкета участвует в нескольких документах "РейтингАбитуриентов"? Тогда можно переделать запрос на
ВЫБРАТЬ
            РейтингАбитуриентовСписокАбитуриентовКЗачислению.АнкетаАбитуриента КАК АнкетаАбитуриента,
            МАКСИМУМ(РейтингАбитуриентовСписокАбитуриентовКЗачислению.Ссылка.Представление) КАК ВнесенВРейтинг
        ИЗ
            Документ.РейтингАбитуриентов.СписокАбитуриентовКЗачислению КАК РейтингАбитуриентовСписокАбитуриентовКЗачислению
        ГДЕ
            НЕ РейтингАбитуриентовСписокАбитуриентовКЗачислению.Ссылка.ПометкаУдаления
СГРУППИРОВАТЬ ПО
     РейтингАбитуриентовСписокАбитуриентовКЗачислению.АнкетаАбитуриента
Показать
AleksandrLeshkov; +1 Ответить
8. AleksandrLeshkov 04.08.21 11:36 Сейчас в теме
(7) Да, одна анкета может участвовать в нескольких рейтингах сразу, даже не думал, что соединение так сильно влияет на запрос, думал оттуда только притянуть доп. данные можно, для этого их и используют))) Сейчас попробую запрос переделать, спасибо, что объяснили
9. RocKeR_13 1376 04.08.21 11:41 Сейчас в теме
(8) Если у динамического списка назначена основная таблица, то контролируется уникальность строк по ключевым полям. Соответственно, в данном случае нарушается уникальность по ключевому полю "Ссылка" из-за левого соединения. Если очистить основную таблицу, то ошибки не будет, но будут дубли строк
10. rinatkin 13.08.21 18:39 Сейчас в теме
Консоль системы компоновки данных в помощь.
При аналогичной ошибке помогла, оказалось что запрос собирает еще и пустые строки.
Чтобы не переписывать весь запрос, воткнул условие на то что ссылка не равна пустой ссылке - заработало.
Dem0; AleksandrLeshkov; +2 Ответить
11. soft_wind 14.08.21 09:59 Сейчас в теме
смотрите Документ.РейтингАбитуриентов.СписокАбитуриентовКЗачислению
1.а где отбор по года? ведь каждый год новые поступления, новые Абитуриенты
2.Проверьте количество рейтингов, как бы у одного Адитура не должно быть несколько рейтингов
(похоже что они и двоят)
12. Dem0 25.09.21 17:53 Сейчас в теме
Ошибка в левом соединении:
Похоже, что у один абитуриент может принимать участие в нескольких рейтингах.
В итоге дублируются ссылки.
ВЫБРАТЬ РАЗЛИЧНЫЕ тут вам не помогут - решайте вопрос с архитектурой решения.
Ну или группируйте и берите сумму или максимум в запросе, чтобы дубли "скукоживались"
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот