Добрый день, коллеги!

Возможно имя темы сформировал немного криво. Суть вопроса вот в чем. Нахожу ссылки на объект через

```1c
    НайтиПоСсылкам()
```

Получаю ТЗ в которой есть список объектов, в которых есть ссылка на указанный объект. Нужно получить имя реквизита в объекте, в котором есть эта ссылка. Как реализовать? Единственная мысль: через метаданные получать все реквизиты объекта и в цикле искать совпадение по значению. Но это как-то громоздко и долго. М.б. есть способ проще?
---
действительно, в файл выгружать не надо, это если у вас Оччччень большой документ/объект,
я использовать такой код, под себч адаптируйте - это пример
получение ХМЛ строки
---
Если не трудно, развейте мысль. Любопытный вариант.

да в общем все элементарно, сериализуете объект документа через Фабрику ХДТО,
получается такая длинная строка в формате ХМЛ
а затем выполняете замену

//одной командой можно заменить или очистить (не)нужную Ссылку
ХМЛНовыйДок = СтрЗаменить(ХМЛДанные, ХМЛСслкаЧтоЗаменить, ХМЛСсылкНаЧтоЗаменить);

затем обратно через ХДТО из ХМЛНовыйДок получаете объект Документ и сохраняете.

на все провсе 10 строчек кода
---
Смотрите, написал вот такой вот код:

```1c
    &НаСервере
    Процедура ЗаменаСсылокНаСервере()
    Для каждого ТекСтр из Объект.НайденныеСсылки цикл
    Об = ТекСтр.СсылкаНаОбъект.ПолучитьОбъект();
    ИмяФайлаХМЛ = ПолучитьИмяВременногоФайла(".xml");
    XDTO = Новый СериализаторXDTO(ФабрикаXDTO);
    XML = Новый ЗаписьXML;
    XML.ОткрытьФайл(ИмяФайлаХМЛ);
    XDTO.ЗаписатьXML(XML, Об, НазначениеТипаXML.Явное);
    XML.Закрыть();
    ТекстФайл = Новый ТекстовыйДокумент;
    ТекстФайл.Прочитать(ИмяФайлаХМЛ);
    Текст = ТекстФайл.ПолучитьТекст();
    НовыйТекст = СтрЗаменить(Текст,ТекСтр.ИсходнаяСсылка.УникальныйИдентификатор(),Объект.ЗаменитьНа.УникальныйИдентификатор());
    ТекстФайл.УстановитьТекст(НовыйТекст);
    ТекстФайл.Записать(ИмяФайлаХМЛ);
    XML = Новый ЧтениеXML;
    XML.ОткрытьФайл(ИмяФайлаХМЛ);
    XDTO = Новый СериализаторXDTO(ФабрикаXDTO);
    Об = XDTO.ПрочитатьXML(XML);
    Об.Записать();
    КонецЦикла;
    КонецПроцедуры
```

Получается следующее:

1. Выгружаем объект в файл.
2. Меняем текст в файле.
3. загружаем объект из файла.

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

если да, то лучше через объект ХДТО делайте!
а если нет, то перебором реквизитов, (можно ограничить проверкой на содержащих тип искомой ссылки)

а если в ТЧ, ваша ссылка находится?, как номера строчек будете возвращать/привязывать к имени колонки в которой данная Ссылка ?
---
Спасибо, что откликнулись! Ну не замену дублей, но в целом что-то примерно подобное, но для более узких и специфических задач.

 если да, то лучше через объект ХДТО делайте!

Если не трудно, развейте мысль. Любопытный вариант.

а если нет, то перебором реквизитов, (можно ограничить проверкой на содержащих тип искомой ссылки)

а если в ТЧ, ваша ссылка находится?, как номера строчек будете возвращать/привязывать к имени колонки в которой данная Ссылка ?

Да придумать-то можно много. Но будет очень линейно и громоздко. Вот и думаю как сделать это всё с человеческим лицом.
---
Если не трудно, развейте мысль. Любопытный вариант.

да в общем все элементарно, сериализуете объект документа через Фабрику ХДТО,
получается такая длинная строка в формате ХМЛ
а затем выполняете замену

//одной командой можно заменить или очистить (не)нужную Ссылку
ХМЛНовыйДок = СтрЗаменить(ХМЛДанные, ХМЛСслкаЧтоЗаменить, ХМЛСсылкНаЧтоЗаменить);

затем обратно через ХДТО из ХМЛНовыйДок получаете объект Документ и сохраняете.

на все провсе 10 строчек кода
---
Смотрите, написал вот такой вот код:

```1c
    &НаСервере
    Процедура ЗаменаСсылокНаСервере()
    Для каждого ТекСтр из Объект.НайденныеСсылки цикл
    Об = ТекСтр.СсылкаНаОбъект.ПолучитьОбъект();
    ИмяФайлаХМЛ = ПолучитьИмяВременногоФайла(".xml");
    XDTO = Новый СериализаторXDTO(ФабрикаXDTO);
    XML = Новый ЗаписьXML;
    XML.ОткрытьФайл(ИмяФайлаХМЛ);
    XDTO.ЗаписатьXML(XML, Об, НазначениеТипаXML.Явное);
    XML.Закрыть();
    ТекстФайл = Новый ТекстовыйДокумент;
    ТекстФайл.Прочитать(ИмяФайлаХМЛ);
    Текст = ТекстФайл.ПолучитьТекст();
    НовыйТекст = СтрЗаменить(Текст,ТекСтр.ИсходнаяСсылка.УникальныйИдентификатор(),Объект.ЗаменитьНа.УникальныйИдентификатор());
    ТекстФайл.УстановитьТекст(НовыйТекст);
    ТекстФайл.Записать(ИмяФайлаХМЛ);
    XML = Новый ЧтениеXML;
    XML.ОткрытьФайл(ИмяФайлаХМЛ);
    XDTO = Новый СериализаторXDTO(ФабрикаXDTO);
    Об = XDTO.ПрочитатьXML(XML);
    Об.Записать();
    КонецЦикла;
    КонецПроцедуры
```

Получается следующее:

1. Выгружаем объект в файл.
2. Меняем текст в файле.
3. загружаем объект из файла.

Все работает, но ощущение того, что удаляю гланды с задней стороны меня не покидает. Нигде не могу прочитать (или понять прочитанное) как сделать тоже самое, но без записи в файл. Подскажите?
---
действительно, в файл выгружать не надо, это если у вас Оччччень большой документ/объект,
я использовать такой код, под себч адаптируйте - это пример
получение ХМЛ строки
---
Спасибо большое за подсказку!
---
Хм! А ведь и правда всё гениальное просто! Спасибо большое!