|   |   | 
| 
 | Конвертация 2.1 обработчик Поля поиска, почему не заполняется СсылкаНаОбъект | ☑ | ||
|---|---|---|---|---|
| 0
    
        I_learn_1c 12.05.25✎ 15:06 | 
        Доброго всем дня,
 Подскажите плиз что я неправильно понимаю в работе конвертации Предыстория - выгружаем физическое лицо из ЗУП в УПП, есть файл правил, грузим через "Универсальный обмен данными в формате XML" Код в УПП и ЗУП не всегда у ФЛ совпадает. Поэтому алгоритм сопоставления при загрузке такой - сначала ищем по ИНН + СтраховойНомерПФР, если не нашли, то ищем по Код. Ну и учитываем если ЭтоГруппа. Есть ПКО ФизическиеЛица. Установлено "Искать по внутреннему идентификатору" и "Продолжить поиск по полям поиска, если по идентификатору не найден". Отмечена галка "Поиск объекта при загрузке по свойству" для полей ЭтоГруппа, Код, ИНН и СтраховойНомерПФР. У этого ПКО в обработчике "Поля поиска" пишу: Если НомерВариантаПоиска = 1 Тогда СтрокаИменСвойствПоиска = "ЭтоГруппа, ИНН, СтраховойНомерПФР"; Иначе СтрокаИменСвойствПоиска = "ЭтоГруппа, Код"; КонецЕсли; Вопрос: при НомерВариантаПоиска = 1 сопоставление находится, подходящий элемент есть, к НомерВариантаПоиска = 2 процесс не переходит, что логично. Но при этом СсылкаНаОбъект остается пустая, и далее в "При загрузке" ОбъектНайден = Ложь, в "После загрузки" ОбъектНайден = Ложь, но Ссылка при этом верно заполнено ссылкой на найденный объект. Почему так? ОбъектНайден разве не должен стать Истина, раз соответствие установлено? Даже если в "Поля поиска" сопоставление находится со второй попытки (по Код), или я явно задаю найденную (запросом) ссылку на ФЛ в СсылкаНаОбъект, то далее все равно ОбъектНайден=Ложь, а Ссылка в "После загрузки" есть.. новый объект при этом не создается, что верно. Создается если совсем никаким способом сопоставления не произошло. Можно конечно обойтись проверкой в "После загрузки" значения Ссылка, а не ОбъектНайден, это работает. Но не пойму почему так работает.. как может быть Ссылка заполнена при ОбъектНайден=Ложь, ведь в "После загрузки" Ссылка – Произвольный – ссылка на найденный объект в информационной базе. ОбъектНайден - Булево. Если значение параметра равно Ложь, то объект не идентифицирован, то есть не найден в информационной базе | |||
| 1
    
        lucky_ 12.05.25✎ 15:32 | 
        (0) в отладчике посмотреть религия запрещает?     | |||
| 2
    
        I_learn_1c 12.05.25✎ 15:35 | 
        (1) что посмотреть?
 я и смотрю, вижу, что ОбъектНайден = Ложь, а почему там Ложь то, если Ссылка заполнено и в целом есть объект который полям поиска соответствует? | |||
| 3
    
        lucky_ 12.05.25✎ 15:38 | 
        "ОбъектНайден = Ложь" присваивается обработкой "универсальныйобменданнымивформатеблаблабла".
 это значение не берётся из воздуха. | |||
| 4
    
        GreyK 12.05.25✎ 15:54 | 
        Зачем искать по ИНН+СН, они оба уникальны, но один из них может быть не заполнен или оба не заполнены. Делай поиск вначале по ИНН, затем по СН. А про строку после "иначе" я промолчу.     | |||
| 5
    
        I_learn_1c 12.05.25✎ 16:07 | 
        (4) ну такая стоит задача, нужно найти тех где заполнено/не заполнено точно так же.
 ну да ок, пусть только по ИНН например, если не нашли, то надо искать только по Код. В любом случае по какому-то из вариантов находится сопоставление. Вопрос не в том как искать. Вопрос почему далее тогда идет ОбъектНайден = Ложь, если вроде как объект то в базе найден? | |||
| 6
    
        Ёпрст гуру 12.05.25✎ 17:01 | 
        (0) почитай описалово обработчиков на ночь, полезно.
 ССылкаНаОбъект и рекратитьПоиск это ты сама можешь установить, чтоб не искать дальше. Автоматом, туда ничего не пишется. Сделано, для своего поиска, например, запросом. А не перечисление полей поиска как в (0) | |||
| 7
    
        I_learn_1c 12.05.25✎ 17:08 | 
        в общем пока прихожу к выводу, что ОбъектНайден=Истина, только если объект будет найден без доп. описания алгоритма в обработчике "Поля поиска"
 А если есть алгоритм какой-то свой дописанный, то по отладке мы попадаем на такое вот Если, и не заходим в него. Т.е. не важно принудительно мы что-то запишем в СсылкаНаОбъект, или зададим СтрокаИменСвойствПоиска и по ней элемент будет найден, раз есть текст в обработчике, то в это Если не попадем, и ОбъектНайден не сменится на Истина... что как по мне все же странновато. Или что-то не так поняла. Если Не ЕстьАлгоритмПоиска Тогда // сам поиск непосредственно и без алгоритма поиска СсылкаНаОбъект = НайтиЭлементПоСвойствамПоиска(ТипОбъекта, ИмяТипаОбъекта, СвойстваПоиска, СтруктураСвойств, СтрокаИменСвойствПоиска, ПоискПоДатеНаРавенство); // ОбъектНайден = ЗначениеЗаполнено(СсылкаНаОбъект); КонецЕсли; | |||
| 8
    
        I_learn_1c 12.05.25✎ 17:09 | 
        (6) да блин с поиском проблемы нет, вопрос почему объектнайден = ложь     | |||
| 9
    
        I_learn_1c 12.05.25✎ 17:29 | 
        (6) СсылкаНаОбъект - ок, поняла, только для своего поиска, например запросом.
 Но перечисление полей поиска как раз в описании обработчика ПКО "Поля поиска" как пример и приведено. Понятно что могу сама установить ссылку, но получается если хоть что-то пишу сама (не важно запрос или список полей поиска меняю), то дальше нельзя использовать ОбъектНайден в "После загрузки" например.. Цитата из справки "Информация об обработчиках": Пример: Если НомерВариантаПоиска = 1 тогда СтрокаИменСвойствПоиска = "Код, Наименование"; ИначеЕсли НомерВариантаПоиска = 2 тогда СтрокаИменСвойствПоиска = "Код"; Иначе СтрокаИменСвойствПоиска = "Наименование"; КонецЕсли; | |||
| 10
    
        Ёпрст гуру 12.05.25✎ 17:54 | 
        (9) такую залипуху воткни  в ПослеЗагрузки
 Если НЕ ОбъектНайден Тогда Если Объект.Ссылка = Ссылка Тогда ОбъектНайден = ИСТИНА; КонецЕсли; КонецЕсли; | |||
| 11
    
        Ёпрст гуру 12.05.25✎ 17:54 | 
        Я уже не помню, что там за косяк был с этими Перед и после загрузки     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |