База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Почему ошибка «Элемент не выбран» при вызове ПолучитьОбъект()? › Ответ в теме: Почему ошибка «Элемент не выбран» при вызове ПолучитьОбъект()?
Ошибка «Элемент не выбран!» возникает потому, что метод Справочники.Контрагенты.НайтиПоКоду(Контрагент.Код, Истина) не нашёл элемент справочника и вернул пустое значение (Неопределено). А дальше вы пытаетесь вызвать ПолучитьОбъект() у пустого значения, что и даёт ошибку.
Как исправить:
1. Проверьте, что Контрагент.Код действительно существует и корректен.
2. Добавьте проверку результата поиска перед вызовом ПолучитьОбъект().
Пример исправленного кода:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Если ЗначениеЗаполнено(Почта) Тогда КлючПочты = Строка(Контрагент) + "|" + Почта; Если МассивПочт.Найти(КлючПочты) = Неопределено Тогда МассивПочт.Добавить(КлючПочты); СправКонтр = Справочники.Контрагенты.НайтиПоКоду(Контрагент.Код, Истина); Если ЗначениеЗаполнено(СправКонтр) Тогда ЗанКонтр = СправКонтр.ПолучитьОбъект(); СтрокаКонтрак = ЗанКонтр.КонтактнаяИнформация.Добавить(); СтрокаКонтрак.АдресЭП = Почта; ЗанКонтр.Записать(); Иначе Сообщить("Контрагент с кодом " + Строка(Контрагент.Код) + " не найден!"); КонецЕсли; КонецЕсли; КонецЕсли; |
Если Контрагент — это ссылка на элемент справочника, то лучше не искать по коду, а использовать ссылку напрямую:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Если ЗначениеЗаполнено(Почта) Тогда КлючПочты = Строка(Контрагент) + "|" + Почта; Если МассивПочт.Найти(КлючПочты) = Неопределено Тогда МассивПочт.Добавить(КлючПочты); Если ЗначениеЗаполнено(Контрагент) Тогда ЗанКонтр = Контрагент.ПолучитьОбъект(); СтрокаКонтрак = ЗанКонтр.КонтактнаяИнформация.Добавить(); СтрокаКонтрак.АдресЭП = Почта; ЗанКонтр.Записать(); Иначе Сообщить("Ссылка на контрагента не заполнена!"); КонецЕсли; КонецЕсли; КонецЕсли; |
Итого: ошибка возникает из-за того, что НайтиПоКоду не нашёл элемент, и нужно проверить результат перед использованием.