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

В управляемом списке не может выводиться 2 одинаковых ссылки…т.е.

  1. Реализация 1
  2. Реализация 2
  3. Реализация 2

недопустимо. Тогда и возникает ошибка Обнаружено дублирование ключевых значений в колонке «Ссылка». Отображение данных в списке невозможно

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

Дополнительная инфа:

http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=590024#590024 
http://forum.infostart.ru/forum26/topic60673/ 
https://helpf.pro/help/view/15748.html

 

Как открыть форму списка регистра сведений на подбор?

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

Кнопка Подбор на форме обработки:

Процедура КоманднаяПанель2Подбор(Кнопка) ФормаВыбора = РегистрыСведений.Курсы.ПолучитьФорму(«ФормаСписка»); ФормаВыбора.ВладелецФормы = ЭтаФорма; //ФормаВыбора.Открыть(); ФормаВыбора.РежимВыбора = Истина; ФормаВыбора.ЗакрыватьПриЗакрытииВладельца = Истина; ФормаВыбора.ЗакрыватьПриВыборе = Истина; ВыбранныйЭлемент = ФормаВыбора.ОткрытьМодально(); Для Каждого Эл Из ВыбранныйЭлемент.Домен Цикл Стр = Домены.Добавить(); Стр.Домен = Эл.АдресСайта; КонецЦикла; КонецПроцедуры

Далее в самой форме списка регистра сведений добавляем следующую процедуру выбора:

Процедура РегистрСведенийСписокВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка) //Если ЭтаФорма.РежимВыбора Тогда // СтандартнаяОбработка = Ложь; // Если мВозвратДанныхКонтактнойИнформации = Истина Тогда // ЭтаФорма.Закрыть(Элемент.ТекущиеДанные); // Иначе // ЭтаФорма.Закрыть(Элемент.ТекущиеДанные.Представление); // КонецЕсли; //КонецЕсли; Стр=Новый Структура; Стр.Вставить(«Домен»,Элемент.ВыделенныеСтроки); //Стр.Вставить(«Коэффициент»,Элемент.ТекущиеДанные.Коэффициент); ОповеститьОВыборе(Стр); СтандартнаяОбработка=Ложь; КонецПроцедуры

Т.е. работает таким образом – нажали подбор, открылся список регистра сведений, выделили несколько строк, нажали ввод – строки влетели в табличное поле на форме обработки.

В типовых конфах можно смотреть как сделана КонтактаяИнформация – там по цивильней все выглядит.