Можно по коду или НомерДок, но они могут измениться. Логичный ответ - по ID объекта в базе.
Получить его несложно, тут описаны несколько способов:
http://www.sinor.ru/~my1c/knowhow/get_id.html
Но для обратного процесса - восстановления ссылки, я использую код (пример для документа), в котором применяется шаблон и который позволяет ускорить операцию восстановления ссылки.
Получаем ID и записываем в реквизит документа, который является копией:
// для удобства работаем из базы-оригинала
докиПостМатериалов = СоздатьОбъект("Документ.ПоступлениеМатериалов");
//...
текID = ЗначениеВСтрокуВнутр( докиПостМатериалов.ТекущийДокумент() );
текID = Сред(текID, СтрДлина(текID)-14, 13);
докиПостМат_Оле.ID_перенос = текID;
Следующий код работает при определении ссылок "у кого уже есть копии".
// подготовка к позиционированию
// выполняется один раз на все док-ты
докиПостМатериалов = СоздатьОбъект("Документ.ПоступлениеМатериалов");
текШаблон = ЗначениеВСтрокуВнутр( докиПостМатериалов );
текШаблон = лев(текШаблон, СтрДлина(текШаблон)-15)
+"[текID]"+ Прав(текШаблон, 2);
// ...
// собственно позиционриование
текID = докиПостМат_Оле.ID_перенос;
выбранДок = 0;
Попытка
докПостМат = ЗначениеИзСтрокиВнутр( Шаблон(текШаблон) );
выбранДок = докПостМат.выбран();
Исключение
Сообщить( "Ошибка при поз-ии: "+текID ,"!" );
КонецПопытки;
// докПостМат - получили ссылку!
Далее док-ты можно переоформлять, сравнивать и т.п. Главное что есть соответствия.