COM. как узнать что объект удален по GUID #388870


#0 by homjak
Переносим справочник. Фиксируем ГУИДы. Затем по ГУИДам проводим сопоставление. НО если в приемнике (8.1) был удален объект, то поиск по ГУИДу (из 7.7) все равно возвращает ссылку. Как узнать что это ссылка на объект которого больше нет. Получается только по пустому коду (или другим реквизитам). Может кто делал, подскажите более надежные пути решения проблемы. КонтрагентПриемникЭлемент8.Наименование = "" V8_UT.ЗначениеЗаполнено(КонтрагентПриемникЭлемент8) = -1 (то есть заполнено)
#1 by homjak
То есть как я понял: если по имеющемуся гуиду КонтрагентПриемникЭлемент = КонтрагентПриемник.ПолучитьСсылку(GUID); ничего найти не получилось, то создается новая ссылка с этим гуидом. А мне всего лишь надо знать что он ничего не нашел
#2 by asady
КонтрагентПриемникЭлемент = КонтрагентПриемник.ПолучитьСсылку(GUID);
#3 by НЕА123
запросом. поищи поиск битых ссылок. выбрать контр.ссылка из спр.контр где контр.ссылка = &контр и контр.ссылка.ссылка ЕСТЬ NULL и контр.ссылка <> значение(спр.контр.пустаяссылка)
#4 by homjak
ПолучитьОбъект в отладчике смотрели - ошибка не возникла. Ошибки посыпались когда пытаюсь обратиться к реквизиту полученного объекта
#5 by Sammo
ПолучитьОбъект = Неопределено
#6 by НЕА123
+ чето не то... проще надо, вот так выбрать контр.ссылка из спр.контр где контр.ссылка = &контр ежели пустая ссылка или битая, то ничего не вернет.
#7 by homjak
из семерки запросом по каждому измененному элементу через com это будет долго, очень долго - объем большой
#8 by homjak
а как можно из 7 проверить восьмерочный объект на неопределено. Что-то в 8 в глобальном контексте я ничего с типом связаного не нашел
#9 by Serg_1960
Нет не так :) Попытка Код = КонтрагентПриемникЭлемент.ПолучитьОбъект.Код; Исключение
#10 by Serg_1960
Вот так и "проверяются" битые ссылки - через обращение к их реквизитам :) Ссылка на удаленный объект "в принципе" не может быть неопределенной или пустой ;)
#11 by НЕА123
почему это долго? а обращение к рекизиту не долго? равно можно заменить на В.
#12 by НЕА123
ПолучитьОбъект - вообще считаю преступлением.
#13 by homjak
Вот так я и стал преступником  :)
#14 by homjak
честно говоря, надо бы проверить быстродействие. Может оно и быстрее будет
#15 by НЕА123
дело в том, что при обращении к реквизиту практически делается тот же запрос, что и в . плюс к этому (в документации вроде так сказано) засаживаются в кэш все реквизиты. про получитьОбъект... и говорить не хочется.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С