Знатокам КД: Как выгрузить Реквизит объекта ссылающегося на сам объект? #745339


#0 by Gorr
Реквизит может, а может и не ссылаться на сам объект. Проблема в том, что когда реквизит сылается на свой объект, при выгрузке происходит зацикливание. Как сделать так, чтобы в случае когда Реквизит ссылается на собственный объект выгружалась только ссылка без зацикливания, а в случае когда указывает на другой объект того же справочника происходила стандартная конвертация свойства?
#1 by Chikko
Передавай какой-нибудь параметр в исходящих данных в пко в случае "когда Реквизит ссылается на собственный объект", и перед выгрузкой проверяй, если есть-отказ.
#2 by Otkr
Что то ты гонишь. Самый распространенный вариант - в сотрудниках реквизит, ссылающийся на самого сотрудника. В правилах указывается Значение = Источник.Ссылка и никакого зацикливания не происходит
#3 by Gorr
Да нет. Взял за основу для переноса УТ-УПП. Посмотри ПКО Подразделения. Реквизит ГоловнойКонтрагент. Все обработчики ПКС шатано пустые. Значение = Источник.Ссылка. и платформа на выгрузке вываливается.
#4 by Gorr
несмотря на хелп: Значение - Неопределено. Конвертируемое значение свойства. Если значение определить в теле обработчика, то стандартная процедура получения значения не будет происходить. стандартная обработка все же выполняется.
#5 by Gorr
Решил проблему так: В ПКС реквизита добавил Отказ = Источник.ЭтоГруппа ИЛИ Источник.ГоловнойКонтрагент = Источник.Ссылка; Добавил ПКС для передачи значения в параметр: Отказ = Источник.ЭтоГруппа; если НЕ Отказ И ЗначениеЗаполнено(Источник.ГоловнойКонтрагент) И Источник.Ссылка = Источник.ГоловнойКонтрагент тогда конецесли; В ПКО ПослеЗагрузкиОбъекта: если ПараметрыОбъекта <> Неопределено И ПараметрыОбъекта["СсылаетсяНаСебя"] тогда
#6 by GenAcid
У тебя этот реквизит поди в поля поиска засунут? Или в объекте стоит галка не запоминать выгруженные объекты?
#7 by Gorr
конечно не запоминать да - ПВД произвольный алгоритм. В полях поиска - да. Можно подробней?
#8 by Gorr
+3 речь про ПКО Контрагенты конечно. заработался))
#9 by Mikhail Volkov
Если не ставить галку "Не запоминать выгруженные объекты", то не должно зациклиться!?
#10 by Gorr
как то у меня уже были проблемы с произвольным алгоритмом при установленном флаге не запоминать выгруженные. Правда в данном ПВД я выгружаю в цикле через ВыгрузитьПоПравилу не объявляя ВыборкуДанных. Так что может множно и убрать данный флаг. Если относительно первого понятно, то при чем здесь поля поиска - остается загадкой..
#11 by GenAcid
, КД при выгрузке по умолчанию выгружает объект только когда он встречается первый раз, потом вместо объекта пишет только его поля поиска, потому как их достаточно для идентификации. Поэтому если стоит галка не запоминать выгруженные объекты или поле в полях поиска - получаем бесконечную рекурсию. Из которой в принципе можно выйти с помощью параметра или создав отдельное правило только для поиска. Но в 99% можно обойтись без этого.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям