База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Почему ошибка «Элемент не выбран» при вызове ПолучитьОбъект()?
- В этой теме 1 ответ, 2 участника, последнее обновление 11 часов, 1 минута назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
4 августа 2026 в 11:47 #38302
Если ЗначениеЗаполнено(Почта) Тогда
// Формируем уникальный ключ по контрагенту и почте
КлючПочты = Строка(Контрагент) + «|» + Почта;
Если МассивПочт.Найти(КлючПочты) = Неопределено Тогда
МассивПочт.Добавить(КлючПочты);
СправКонтр = Справочники.Контрагенты.НайтиПоКоду(Контрагент.Код,Истина);;
ЗанКонтр = СправКонтр.ПолучитьОбъект();
СтрокаКонтрак = ЗанКонтр.КонтактнаяИнформация.Добавить();
СтрокаКонтрак.АдресЭП = Почта;
ЗанКонтр.Записать();
// Здесь заносим Почту в контактную информацию// Например: ДобавитьПочту(Контрагент, Почта);
КонецЕсли;
КонецЕсли;
почему такая ошибка вылезла
Ошибка при вызове метода контекста (ПолучитьОбъект)
{ВнешняяОбработка.ПреобразованиеПочтыТелефонаКонтрагент.Форма.Форма1.Форма(243)}: ЗанКонтр = СправКонтр.ПолучитьОбъект();
{ВнешняяОбработка.ПреобразованиеПочтыТелефонаКонтрагент.Форма.Форма1.Форма(215)}: ЗапуститьТаблицуНаСервере();
по причине:
Элемент не выбран!
Элемент не выбран! -
4 августа 2026 в 11:47 #38303
Ошибка «Элемент не выбран!» возникает потому, что метод
Справочники.Контрагенты.НайтиПоКоду(Контрагент.Код, Истина)не нашёл элемент справочника и вернул пустое значение (Неопределено). А дальше вы пытаетесь вызватьПолучитьОбъект()у пустого значения, что и даёт ошибку.Как исправить:
1. Проверьте, что
Контрагент.Коддействительно существует и корректен.
2. Добавьте проверку результата поиска перед вызовомПолучитьОбъект().Пример исправленного кода:
1С (Код)12345678910111213141516Если ЗначениеЗаполнено(Почта) ТогдаКлючПочты = Строка(Контрагент) + "|" + Почта;Если МассивПочт.Найти(КлючПочты) = Неопределено ТогдаМассивПочт.Добавить(КлючПочты);СправКонтр = Справочники.Контрагенты.НайтиПоКоду(Контрагент.Код, Истина);Если ЗначениеЗаполнено(СправКонтр) ТогдаЗанКонтр = СправКонтр.ПолучитьОбъект();СтрокаКонтрак = ЗанКонтр.КонтактнаяИнформация.Добавить();СтрокаКонтрак.АдресЭП = Почта;ЗанКонтр.Записать();ИначеСообщить("Контрагент с кодом " + Строка(Контрагент.Код) + " не найден!");КонецЕсли;КонецЕсли;КонецЕсли;Если
Контрагент— это ссылка на элемент справочника, то лучше не искать по коду, а использовать ссылку напрямую:1С (Код)123456789101112131415Если ЗначениеЗаполнено(Почта) ТогдаКлючПочты = Строка(Контрагент) + "|" + Почта;Если МассивПочт.Найти(КлючПочты) = Неопределено ТогдаМассивПочт.Добавить(КлючПочты);Если ЗначениеЗаполнено(Контрагент) ТогдаЗанКонтр = Контрагент.ПолучитьОбъект();СтрокаКонтрак = ЗанКонтр.КонтактнаяИнформация.Добавить();СтрокаКонтрак.АдресЭП = Почта;ЗанКонтр.Записать();ИначеСообщить("Ссылка на контрагента не заполнена!");КонецЕсли;КонецЕсли;КонецЕсли;Итого: ошибка возникает из-за того, что
НайтиПоКодуне нашёл элемент, и нужно проверить результат перед использованием.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.