Поле объекта не обнаружено (name)

1. user1858859 18.11.22 09:09 Сейчас в теме
Добрый день подскажите ошибка в обработке при получении значения структуры из массива .

Поле объекта не обнаружено (name)
ФИО =стр.customer.name;


как ее можно вылечить ?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
30. koln 18.11.22 13:17 Сейчас в теме
(1)Попробуйте так
Если ТипЗнч(стр) = Тип ("Струкутра") И стр.Свойство("customer") Тогда
стр.customer.Свойство("name",ФИО);
КонецЕсли
38. user1869743 18.11.22 21:16 Сейчас в теме
(1) Ух, Андрей Николаевич, вы все сложнее и сложнее вопросы задаете. Развиваетесь как программист! Так держать!
2. laperuz 46 18.11.22 09:16 Сейчас в теме
Убедиться, что у значения, содержащегося в стр.customer есть реквизит name?
3. user1858859 18.11.22 09:18 Сейчас в теме
(2) когда вложение массива открываю отладчиком . есть name

10 т элементов . 5 т выводит . на середине вылетает с этой ошибкой.
4. laperuz 46 18.11.22 09:23 Сейчас в теме
(3)Очевидно, где-то там кривой элемент есть) Включите остановку по ошибке и увидите на чем падает
Valerianich; SP17081992; Prikum; +3 Ответить
6. user1858859 18.11.22 09:27 Сейчас в теме
(4)включал уже . не падает на ошибке . там 5000 эл
8. laperuz 46 18.11.22 09:29 Сейчас в теме
(6)Не верю, что не останавливается с галкой "Останавливаться по ошибке"), но при этом выдает "Поле объекта не обнаружено (name)"
9. user1858859 18.11.22 09:39 Сейчас в теме
(8)5000 эл перебирать в отладчики один за другим чтоб вылетело на ошибке
10. laperuz 46 18.11.22 09:41 Сейчас в теме
(9)Вы в курсе, как работает галка "Останавливаться по ошибке"? Или вернее спросить, вы знаете о ее существовании? Судя по комментарию, не очень, но я советую почитать, потому что, зная о ней, вы бы свой вопрос решили гораздо быстрее)
user5300; Prikum; SP17081992; +3 Ответить
11. user1858859 18.11.22 10:29 Сейчас в теме
(10)вы не умничайте тут . я знаю про галку .как она работает .но она в данном примере не работает . придется перебирать вручную
13. laperuz 46 18.11.22 10:50 Сейчас в теме
(11)Даже если не работает останавливаться по ошибке, во что я не верю, можно вашу итерацию цикла засунуть в Попытку/Исключение и точку останова поставить в блоке Исключение.

Можно вывести сообщение с номером итерации цикла и понять на какой итерации валится, вычислив соответственно потом этот элемент цикла и посмотрев что там.
14. user1858859 18.11.22 10:59 Сейчас в теме
(13)уже делаю вот только только
15. user1858859 18.11.22 11:01 Сейчас в теме
(13)Обработка строк: 2 002 - 3 001
Обработка строк: 3 002 - 4 001
Обработка строк: 4 002 - 5 001
Обработка строк: 5 002 - 6 001
Обработка строк: 6 002 - 7 001
Обработка строк: 7 002 - 8 001
Обработка строк: 8 002 - 9 001
{ВнешняяОбработка.ОбогащениеКонтактовПоAPIАктион.МодульОбъекта(2302)}: Поле объекта не обнаружено (name)
16. laperuz 46 18.11.22 11:04 Сейчас в теме
(15)Ну вот, уже понятно, что ошибка где-то после 9001 строки)
Сокращайте интервалы у вас же цикл, выводите не диапазон, а итерацию цикла, пусть будет там 10000 сообщений, интересно все равно только последнее.
18. user1858859 18.11.22 11:28 Сейчас в теме
(16) как вы пишите интерацию цикла приведите пример

нужно понять .что содержит сообщение об ошибке
17. yurikmellon 6 18.11.22 11:09 Сейчас в теме
(15) вангую, что где то после 9001 строки и до 10 000 строки, стр.customer = Неопределено
succub1_5; +1 Ответить
21. user1858859 18.11.22 11:50 Сейчас в теме
(17)иии? как обойти тоже думал
но если копать глубже . этого поля может просто не быть .а почему?
23. Prikum 3 18.11.22 12:07 Сейчас в теме
(21)а как формируется МассивДанныхПоКлиентам ?
24. user1858859 18.11.22 12:08 Сейчас в теме
(23)

// проверим, есть ли вообще параметры ответа с сервера...
			Если ТипЗнч(ДанныеОтветаАктион) = Тип("Массив") Тогда
				                       
				МассивДанныхПоКлиентам = ДанныеОтветаАктион;
				Если МассивДанныхПоКлиентам.Количество() = 0 Тогда
					Для каждого СтрокаТЗ Из СтрокиТЗКОбработке Цикл
						СтрокаТЗ.НеРегистрирован = Истина;
						СтрокаТЗ.СтатусКлиента 	= Справочники.СтатусыКлиентовВBackOffice.НеРегистрирован;
						СтрокаТЗ.ДатаЗапроса 	= ДатаЗапроса;
						СтрокаТЗ.ДатаОтвета 	= ДатаОтвета;
					КонецЦикла; 
				КонецЕсли;
Показать
5. user5300 1021 18.11.22 09:25 Сейчас в теме
	Для каждого стр из МассивДанныхПоКлиентам цикл 
		Если ЗначениеЗаполнено(стр.customer) Тогда      
			Если стр.customer.Свойство("name") Тогда    /// Или если это ссылка на документ: // стр.customer.Метаданные().Реквизиты.Найти("name") <> неопределено
				Если ЗначениеЗаполнено(стр.customer.name) тогда
					ФИО =стр.customer.name;
				КонецЕсли;
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
Показать
7. user1858859 18.11.22 09:28 Сейчас в теме
12. user1858859 18.11.22 10:29 Сейчас в теме
(5)
стр.customer.Свойство("name")


не работает) данный пример
19. VZyryanov 18.11.22 11:40 Сейчас в теме
Если ЗначениеЗаполнено(стр.customer) тогда
    ФИО =стр.customer.name;
Иначе
    ФИО="";
    Сообщить("Ошибка!");
КонецЕсли;

Показать
20. user1858859 18.11.22 11:49 Сейчас в теме
Для каждого стр из МассивДанныхПоКлиентам цикл 
				 
				 
				 
				 ФИО =стр.customer.name;
				 
				 Если ЗначениеЗаполнено(стр.customer) тогда
					 ФИО =стр.customer.name;
				 Иначе
					 ФИО="";
					 Сообщить("Ошибка!");
				 КонецЕсли;
				 
				 
Показать

не работает вылетает с той же ошибкой

Поле объекта не обнаружено (name)
ФИО =стр.customer.name;
22. tamidi 8 18.11.22 12:04 Сейчас в теме
(20)
Для каждого стр из МассивДанныхПоКлиентам цикл



ФИО =стр.customer.name;

Если ЗначениеЗаполнено(стр.customer) тогда
ФИО =стр.customer.name;
Иначе
ФИО="";
Сообщить("Ошибка!");
КонецЕсли;


Вторая строка тут явно лишняя
25. user1858859 18.11.22 12:09 Сейчас в теме
(22) ну покажет он 100 сообщений с словом ошибка .что мне даст это)
26. tamidi 8 18.11.22 12:15 Сейчас в теме
(25)Вы о чем?
Вы делаете проверку
Если ЗначениеЗаполнено(стр.customer) тогда

чтобы избежать ошибки, но перед проверкой оставляете строку, которая эту ошибку вызывает, до проверки дела не дойдет в случае, если значение не заполнено стр.customer
27. user1858859 18.11.22 12:19 Сейчас в теме
28. spacecraft 18.11.22 12:32 Сейчас в теме
(27) прикалываетесь?
Для каждого стр из МассивДанныхПоКлиентам цикл



ФИО =стр.customer.name;

Если ЗначениеЗаполнено(стр.customer) тогда
ФИО =стр.customer.name;
Иначе
ФИО="";
Сообщить("Ошибка!");
КонецЕсли;

Просто удалите выделенное.
31. user1858859 18.11.22 13:58 Сейчас в теме
(28)зачем прикалываться?

так не работает

Если ЗначениеЗаполнено(стр.customer) тогда
ФИО =стр.customer.name;
Иначе
ФИО="";
Сообщить("Ошибка!"+ Стр);
КонецЕсли;
			 
 КонецЦикла;

Показать

работает так


Если ЗначениеЗаполнено(стр.customer.name) тогда
ФИО =стр.customer.name;
Иначе
ФИО="";
Сообщить("Ошибка!"+ Стр);
КонецЕсли;
			 
 КонецЦикла;
33. tamidi 8 18.11.22 14:27 Сейчас в теме
(31)То есть запись с ошибкой найдена или нет?
Кроме вас ведь никто не может найти проблему в данных, которые есть только у вас, и понять какого рода она тоже. Вам просто давали подсказки и указывали на явные ошибки в коде.
34. user1858859 18.11.22 14:46 Сейчас в теме
(33) 1c говорит поле объекта не найдено . и вылетает с этой ошибкой .

значит этого поля нет .как это вылечить проигнорить эту проверку .как?
35. tamidi 8 18.11.22 14:53 Сейчас в теме
(34)то вы пишете
так работает

то
1c говорит поле объекта не найдено . и вылетает с этой ошибкой

приводите кусок кода без строки, на которую вы указали как на ошибочную
Если хотите получить ответ, сформулируйте нормально вопрос.
36. Prikum 3 18.11.22 14:59 Сейчас в теме
(35)Мне кажется, что автор троллить потихоньку.
SlavaKron; +1 Ответить
37. Prikum 3 18.11.22 15:00 Сейчас в теме
(34)у вас в массив в "стр.customer" попадает что то непонятное, может быть стоит посмотреть заполнение массива?
29. Prikum 3 18.11.22 12:34 Сейчас в теме
(25)Так выведите что нибудь еще кроме слова "Ошибка", например индекс МассивДанныхПоКлиентам
32. user1858859 18.11.22 14:06 Сейчас в теме
ошибка поле не найдено не на заполненых данных
Оставьте свое сообщение

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