ПолучитьСсылкуНового - объект не найден

1. Shvapsss 19 19.12.23 14:46 Сейчас в теме
Справочник - ВнутренниеДокументы
Модуль объекта

Событие ПередЗаписью

КОД

	// Обработка рабочей группы
	СсылкаОбъекта = Ссылка;
	// Установка ссылки нового
	Если Не ЗначениеЗаполнено(СсылкаОбъекта) Тогда
		СсылкаОбъекта = ПолучитьСсылкуНового();
		Если Не ЗначениеЗаполнено(СсылкаОбъекта) Тогда
			СсылкаНового = Справочники.ВнутренниеДокументы.ПолучитьСсылку();
			УстановитьСсылкуНового(СсылкаНового);
			СсылкаОбъекта = СсылкаНового;
		КонецЕсли;
	КонецЕсли;
Показать


Почему такое может происходить?
ИНОГДА я не могу получить ссылку нового и получаю объект не найден, весь код выполняется но на протяжении всего выполнения ошибка остается.

Это стандартный кусок кода написанный 1с никами, это не расширение итп.
Как такое может быть? И собственно что делать.
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. glek 119 19.12.23 14:56 Сейчас в теме
(1) Получить ссылку нового можно только в случае, если перед этим сделано установить ссылку нового.
Сорян, туплю.
2. dhurricane 19.12.23 14:52 Сейчас в теме
А в чем именно проблема?

"СсылкаОбъекта" - будущая ссылка на новый записываемый объект. Пока он не записан, по этой ссылке в базе данных информации нет. Соответственно попытка получить в отладчике представление объекта по этой ссылке заканчивается отображением "Объект не найден". После завершения обработчика "ПерезЗаписью", то есть после записи объекта по этой ссылке уже можно будет получить нормальное представление только что записанного объекта.
4. Shvapsss 19 19.12.23 16:01 Сейчас в теме
(2)
данных информации нет.


УстановитьСсылкуНового (SetNewObjectRef)
Синтаксис:
УстановитьСсылкуНового(<Ссылка>)
Параметры:
<Ссылка> (обязательный)
Тип: СправочникСсылка.<Имя справочника>.
Ссылка, которая будет назначена при записи нового объекта.
Описание:
Устанавливает значение для нового (созданного и еще не записанного) объекта, которое будет назначено при записи в качестве ссылки. Значение не может равняться ссылке какого-либо из имеющихся в базе данных объекта данного типа. Уникальность ссылки проверяется при записи объекта.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Другими словами, тут у нас лежит БУДУЩИЙ объект, что бы можно было связать его с другими данными на стадии при записи.
5. Sashares 34 19.12.23 16:11 Сейчас в теме
(1)И в чем вопрос то?
Ссылку новую получили, по данной ссылке еще не записаны данные, соответственно в представлении этой новой ссылки будет "Объект не найден" до тех пор, пока не будет записан объект с этой ссылкой.
а, уже в (2) тоже самое написали))
6. Shvapsss 19 19.12.23 16:13 Сейчас в теме
(5) господь всемогущий, я же даже справку приложил.
Какое ЗАПИСАТЬ........
7. Sashares 34 19.12.23 16:15 Сейчас в теме
(6) От того что вы тут цитируете синтакс-помощник все еще не понятно, что именно до вас не дошло))
8. Shvapsss 19 19.12.23 16:17 Сейчас в теме
(5) для простоты понимания.
У меня описан механизм как бы РЕЗЕРВИРОВАНИЯ ссылки.
То-есть мы обращаемся к справочнику получаем ссылку которая БУДЕТ для этого объекта, резервируем.
И устанавливаем ее.

Далее без записи объекта мы можем связывать его с чем угодно и уже потом, после записи объекта будет установлена зарезервированная ссылка.
Запись не нужна.
9. Sashares 34 19.12.23 16:20 Сейчас в теме
(8) Еще раз.
Для простоты понимания.
Пока вы не запишите объект по этой зарезервированной ссылке, в представлении ссылки будет "Объект не найден".
В отладчике для переменной СсылкаОбъекта отображается представление ссылки.

Если же проблема в том, что при каких-то действиях пользователя вместо ссылки на объект остается "Объект не найден" в других связанных объектах в которых эта ссылка присваивается, то причина в том, что объект не был записан пользователем.
10. Shvapsss 19 19.12.23 16:30 Сейчас в теме
(9) ты говоришь о том, что в конфигураторе я это не увижу ?

Суть проблемы в том.
Есть механизм связывания документа с договором.
Почти всегда все отрабатывает верно, но иногда связь установиться не может.
Потому что мол нельзя сделать запись в регистр без ссылки на документ.

Так как ошибка возникает периодически вывод такой, что обычно установитьссылкунового работает корректно.
Но иногда нет.

Получается конфигуратором не отловить что ли.
12. Sashares 34 19.12.23 16:37 Сейчас в теме
(10) Я говорю только о том, что представление ссылки "Объект не найден" в приведенном коде (в ПередЗаписью) не является ошибкой. Это нормальное поведение платформы для ссылки, которая еще не была записана.

Нужно найти способ воспроизведения проблемы. И уже тогда разбираться, как такое возникает.

Скорее всего где-то присваивается "Ссылка", вместо "СсылкаОбъекта".
comptr; cosmo2004; Shvapsss; +3 Ответить
11. Shvapsss 19 19.12.23 16:34 Сейчас в теме
(9)Ладно с этой херней разбираться себе дороже проще записать.
Спасибо я думаю тему можно закрывать.

Просто мне покоя не дает, почему периодически возникает проблема.
15. Anton_new01 20.12.23 10:02 Сейчас в теме
(13) кажется проблема в том, что вы не понимаете, что такое ССЫЛКА.

Ссылка - это некий уникальный идентификатор места в памяти, где хранятся данные Объекта.

Вполне логично, что пока Объект не записан в память, то и ссылка(путь где он записан) - весьма условное понятие.

Команда УстановитьСсылкуНового() - резервирует это место памяти под будущую запись объекта, но это не означает, что Объект там появился. т.е. до Записи по этой ссылке вы ничего не получите( Объект не найден(гуид) ).
17. Shvapsss 19 20.12.23 10:09 Сейчас в теме
(15) Ну исходя из эксперимента, которые я вчера проводил целый вечер так и есть.
Я не могу ее увидеть через конфигуратор но присвоение поидее работает.
18. Anton_new01 20.12.23 10:10 Сейчас в теме
(17) да, потому что одно дело ссылка, другое дело представление ссылки.
ССылка - это некий ГУИД.
а представление ссылки - это Объект.
и в отладке представление не доступно пока объект не записан.
и вы ошибочно считаете, что это ошика.
19. Shvapsss 19 20.12.23 10:25 Сейчас в теме
(18)
вы ошибочно считаете, что это ошика.

Тоесть я могу поидее увидеть ГУИД, объект нет, а гуид да?
Как?
20. Anton_new01 20.12.23 11:00 Сейчас в теме
(19)
Команда
НовыйСсылка.УникальныйИдентификатор();

выдаст что-то типа того:
НовыйСсылка.УникальныйИдентификатор() 8cbbdf84-3ca4-4385-90c0-208b14dcfc4f УникальныйИдентификатор
Shvapsss; +1 Ответить
14. gybson 19.12.23 20:39 Сейчас в теме
ПолучитьСсылку() возвращает битую ссылку, далее вы ее везде присваиваете и удивляетесь результату присвоение. Напрасно. Присвоение работает отлтично.
16. Shvapsss 19 20.12.23 10:05 Сейчас в теме
22. gybson 22.12.23 16:59 Сейчас в теме
(16) ПолучитьСсылку() всегда возвращает ссылку существующего объекта, даже если его не существует в базе данных, для 1С это ссылка на существующий объект и у нее признак ЭтоНовый будет ложь. Так как объекта с таким идентификатором в базе нет, то в отладчике Вы видите "Объект не найден". Как Вы правильно заметили, у нового объекта такого представления не бывает.

Приведенный код, делает чушь и стоит наверное проверить, точно ли он типовой
23. Sashares 34 22.12.23 17:12 Сейчас в теме
(22)
Приведенный код, делает чушь

Эм, чушь несете вы.

ПолучитьСсылку (GetRef)
Синтаксис:
ПолучитьСсылку(<УникальныйИдентификатор>)
Параметры:
<УникальныйИдентификатор> (необязательный)
Тип: УникальныйИдентификатор. 
Уникальный идентификатор, из которого будет формироваться ссылка.
Возвращаемое значение:
Тип: СправочникСсылка.<Имя справочника>. 
Описание:
Формирует ссылку из значения типа УникальныйИдентификатор.
Данный уникальный идентификатор может быть в дальнейшем получен из ссылки методом УникальныйИдентификатор.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Примечание:
Если параметр не указан, то будет сформирована новая уникальная ссылка.
Показать
24. Shvapsss 19 25.12.23 15:03 Сейчас в теме
(22)
ить, точно ли он типовой


Код точно типовой, он в поставке идет, мы даже не снимали базу с поддержки.
21. spacecraft 20.12.23 12:00 Сейчас в теме
"При выводе ссылочных полей в отчет (а также в тех местах, где необходимо отображать представление, например, при выводе значения при помощи функции "Сообщить") следует учитывать тот факт, что при выводе значения-ссылки программа будет выполнять дополнительный запрос для получения представления поля."
В отладчике Вычисляется представление ссылочного типа. Т.е. выполняются такие же действия. Делается запрос за полями для представления ссылки. Так как ссылки в базе еще нет, то и выводится сообщение "Объект не найден".
Оставьте свое сообщение

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