Добрый день.

В процедуре ПередЗаписьюНаСервере модуля УФ есть следующий код (в реквизит текущего объекта записываем ссылку на связанный справочник, элемент связанного справочника еще не записан):

СсылкаНового = ОбщегоНазначения.МенеджерОбъектаПоСсылке(ОбъектСвязанногоСправочника.Ссылка).ПолучитьСсылку();
ОбъектСвязанногоСправочника.УстановитьСсылкуНового(СсылкаНового);
ТекущийОбъект[ИмяРеквизита] = СсылкаНового; // записываем в текущий объект ссылку на элемент связанного справочника

Далее в процедуре ПриЗаписиНаСервере выполняю запись:
ОбъектСвязанногоСправочника.Записать()

Когда после записи из формы элемента по команде пытаюсь открыть элемент связанного справочника, получаю ошибку "Объект не найден".

Подскажите, в чем причина ошибки?
---
поменяйте порядок установки ссылки. Добавьте новый реквизит формы, где будете хранить СсылкаНового.

```1c
    // ПередЗаписьюНаСервере
    СсылкаНового = ОбщегоНазначения.МенеджерОбъектаПоСсылке(ОбъектСвязанногоСправочника.Ссылка).ПолучитьСсылку();
    ТекущийОбъект[ИмяРеквизита] = СсылкаНового; // записываем в текущий объект ссылку на элемент связанного справочника

    // ПриЗаписиНаСервере
    ОбъектСвязанногоСправочника.УстановитьСсылкуНового(СсылкаНового);
    ОбъектСвязанногоСправочника.Записать();
```

И что за тип ОбъектСвязанногоСправочника и как хранится?
---
Как мы в свое время делали (по памяти)

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

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

```1c
    // ПередЗаписьюНаСервере
    СсылкаНового = ОбщегоНазначения.МенеджерОбъектаПоСсылке(ОбъектСвязанногоСправочника.Ссылка).ПолучитьСсылку();
    ТекущийОбъект[ИмяРеквизита] = СсылкаНового; // записываем в текущий объект ссылку на элемент связанного справочника

    // ПриЗаписиНаСервере
    ОбъектСвязанногоСправочника.УстановитьСсылкуНового(СсылкаНового);
    ОбъектСвязанногоСправочника.Записать();
```

И что за тип ОбъектСвязанногоСправочника и как хранится?
---
Большое спасибо! Все получилось.
А чем объяснить тот факт, что устанавливать ссылку нового нужно именно в той, процедуре, где выполняется запись?
---
теряется ссылка нового при переходе.
---
понял, спасибо
---
Может быть надо перечитать данные формы?=
---
так а я же имею дело с реквизитом объекта, на форме он не выводится.
Даже после записи элемента связанного справочника, значение реквизита основного объекта принимает вид <Объект не найден GUID>
---
Меня еще смущает вот что - если смотреть в отладчике значение реквизита объекта, которое устанавливал через ТекущийОбъект[ИмяРеквизита], то даже после записи объекта там будет <Объект не найден GUID>.
---
У вас получение ссылки и запись происходят в разных процедурах? Если да, то проблема в этом
---
да, получение в ПередЗаписьюНаСервере()
запись в ПриЗаписиНаСервере().
Обусловлено тем, чтобы выполнились проверки в ПередЗаписью() модуля объекта.

А есть какие-то пруфы, почему так не будет работать?
---
что-то меня смущает что вы вызываете ПолучитьСсылку() у еще не созданного элемента справочника, а потом устанавливаете результат в качестве ссылки нового. Не уверен что у не записанного элемента там будет что-то корректное. Может нужно вызывать сразу ПолучитьССылкуНового() вместо ПолучитьСсылку и потом уже устанавливать?

Вы в отладчике смотрели значения? Есть предположение что вы пытаетесь установить пустую ссылку в качестве ссылки нового
---
Имею ввиду вот такую конструкцию:

```1c
    СсылкаНового = ОбщегоНазначения.МенеджерОбъектаПоСсылке(ОбъектСвязанногоСправочника.Ссылка).ПолучитьСсылкуНового();
```

вместо

```1c
    СсылкаНового = ОбщегоНазначения.МенеджерОбъектаПоСсылке(ОбъектСвязанногоСправочника.Ссылка).ПолучитьСсылку();
```
---
Так вообще валится с ошибкой - метод объекта не обнаружен ПолучитьСсылкуНового
---
Точно. Тож так делал. Уже подзабыл. Делаем получитьСсылку с указанием уникального идентификатора в параметре

СсылкаНового = ОбщегоНазначения.МенеджерОбъектаПоСсылке(ОбъектСвязанногоСправочника.Ссылка).ПолучитьСсылку(Новый УникальныйИдентификатор);
---
по идее, ему без разницы, указывать УИД в параметре или нет. Вот из СП цитата:

Примечание:
Если параметр не указан, то будет сформирована новая уникальная ссылка.
---
в (12) меня опередили
---
вот так надо. Стало стыдно что фигню советовал, решил смоделировать

```1c
    &НаСервере
    Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
    СсылкаНового = ОбщегоНазначения.МенеджерОбъектаПоСсылке(ТС.Ссылка).ПолучитьСсылку();
    ТекущийОбъект.ТС = СсылкаНового; // записываем в текущий объект ссылку на элемент связанного
    КонецПроцедуры

    &НаСервере
    Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
    ТСОбъект = Справочники.уатТС.СоздатьЭлемент();
    ТСОбъект.Наименование = "Создан тут";
    ТСОбъект.УстановитьСсылкуНового(ТекущийОбъект.ТС);
    ТСОбъект.ОбменДанными.Загрузка = Истина;
    ТСОбъект.Записать();
    КонецПроцедуры
```
---
Посмотрите пример в СП:

```1c
    Ссылка = СправочникОбъект.ПолучитьСсылкуНового();
    СправочникОбъект.УстановитьСсылкуНового(Ссылка);
```