Существование реквизита в документе

1. user950703 08.09.21 21:36 Сейчас в теме
Доброе время суток, уважаемые.

Столкнулся с проблемой переназначения реквизита в документах, достаточно нетривиальной.

Заказчик хочет переназначить значение реквизита Договор во всех документах из базы. Каких именно документах -

он и сам не помнит, но за ряд лет работы базы. Была там ссылка на один договор из справочника

ДоговорыКонтрагентов или ему подобных - теперь должна стоять на ссылка на другой.

При этом, само собой, встает задача проверки существования данного реквизита в Документе-объекте.

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

Есть решения этой задачи, НО:

1. Эти решения предполагают наличие вполне определенного наименования реквизита. Но поскольку документы произвольные, то это условие не выполняется. В одном типе документов реквизит может называться Договор, в другом ДоговорКонтрагента.
2. Опять же, в силу произвольности документов, в них возможно присутствие разного количества, от 0 до нескольких табличных частей с данным реквизитом.

Не встречался ли кто с подобными задачами?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. DJ_Codebase 08.09.21 21:59 Сейчас в теме
(1)
Не встречался ли кто с подобными задачами?

слава богу нет!
Каких именно документах -

он и сам не помнит

поди туда, не знаю куда. принеси то, не знаю что...
Как называется реквизит?... то ли Договор, то ли ДоговорыКонтрагентов. Задача должна быть четко сформулирована. До мелочей!
Реквизиты документа можно узнать так
 Документ.Метаданные().Реквизиты 

В полученном массиве искать нужный.
А по факту: К чему весь этот гемор?!
3. ZergKRSK 130 09.09.21 03:59 Сейчас в теме
(2)
К чему весь этот гемор?!

Поиск и замена значений - заменить одно значение договора на другое во всех документах (реквизит шапки и/или ТЧ).
4. user950703 09.09.21 07:41 Сейчас в теме
(2) Вот такая формулировка задачи. До мелочей. И она вполне определенная и решабельная. Хотя бы потому, что название реквизита имеет общую текстовую подстроку. Но стандартно такой вариант не предусмотрен в приведенном Вами решении.
5. nomad_irk 76 09.09.21 07:58 Сейчас в теме
(1)пробегаете по всем объектам метаданных и по типу значения определяете все реквизиты объектов и их табличных частей.

Далее запросом с отбором нужного значения реквизита получаете ссылки на все объекты данных . Что выдал запрос - меняете.

Ничего сложного, вроде. Механизм реализован вот в этой обработке , если что :)
6. SlavaKron 09.09.21 08:18 Сейчас в теме
(1) Находите все связанные объекты через НайтиПоСсылкам. Обходите все их реквизиты, табличные части, движения, измерения, ресурсы и т.д. с проверкой типа фактического значения. Если тип значения Договор, делаете замену. Вы изобретаете обработку ПоискИЗаменаДублирующихсяЭлементов.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот