Столкнулся с проблемой переназначения реквизита в документах, достаточно нетривиальной.
Заказчик хочет переназначить значение реквизита Договор во всех документах из базы. Каких именно документах -
он и сам не помнит, но за ряд лет работы базы. Была там ссылка на один договор из справочника
ДоговорыКонтрагентов или ему подобных - теперь должна стоять на ссылка на другой.
При этом, само собой, встает задача проверки существования данного реквизита в Документе-объекте.
Понятно, что данный реквизит может находиться как в шапке документа, так и в его табличных частях.
Есть решения этой задачи, НО:
1. Эти решения предполагают наличие вполне определенного наименования реквизита. Но поскольку документы произвольные, то это условие не выполняется. В одном типе документов реквизит может называться Договор, в другом ДоговорКонтрагента.
2. Опять же, в силу произвольности документов, в них возможно присутствие разного количества, от 0 до нескольких табличных частей с данным реквизитом.
поди туда, не знаю куда. принеси то, не знаю что...
Как называется реквизит?... то ли Договор, то ли ДоговорыКонтрагентов. Задача должна быть четко сформулирована. До мелочей!
Реквизиты документа можно узнать так
Документ.Метаданные().Реквизиты
В полученном массиве искать нужный.
А по факту: К чему весь этот гемор?!
(2) Вот такая формулировка задачи. До мелочей. И она вполне определенная и решабельная. Хотя бы потому, что название реквизита имеет общую текстовую подстроку. Но стандартно такой вариант не предусмотрен в приведенном Вами решении.
(1) Находите все связанные объекты через НайтиПоСсылкам. Обходите все их реквизиты, табличные части, движения, измерения, ресурсы и т.д. с проверкой типа фактического значения. Если тип значения Договор, делаете замену. Вы изобретаете обработку ПоискИЗаменаДублирующихсяЭлементов.