Здравствуйте

Пробую сделать самописный обмен с возможностью замены документов по гуиду

 Док = Документы.(искомыйдокумент).СоздатьДокумент();
 Док.УстановитьСсылкуНового(СсылкаДокументID);
док.записать()

пример кода. при запиши выходит ошибка - "ошибка при попытке вставки записи с неуникальным значением ссылки"

подскажите в чем проблема и как правильно реализовать замену документа.
---
А вообще корректнее будет не удалять документ, а искать его по гуиду. В случае если нашли - получаем объект документа и перезаписываем все поля в нем новыми значениями. Если не нашли - тогда создаем
Так самый правильный вариант будет
---
Вам надо поменять содержимое найденного документа, т.е. перезаполнить нужным вам образом его реквизиты и перезаписать. А то, что вы пытаетесь сделать - создать еще один документ с тем же ГУИДОМ, по которому искали.
---
Пробую сделать самописный обмен с возможностью замены документов по гуиду
Подробнее, что подразумевается под "замена документа новым"?
Вот если документ с таким guid уже есть, что должно произойти?
---
перед загрузкой производится поиск допустим ПКО по гуиду . Если документа с таким гуидом найден то хочу выполнить замену документа на обновленный(допустим с измененной суммой или с чем угодно).

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

делаю через УстановитьСсылкуНового и пробую записать сверху.
видимо так делать не правильно .
---
Но тут может быть ошибка, если документ с таким гуидом не существует в базе. Надо тоже проверять перед удалением