Флаг "Продолжить поиск по полям поиска, если по идентификатору ..." не всегда работает.

1. IgorXml 724 05.02.14 10:49 Сейчас в теме
Экономлю время на разработку правил:
Копирую ПКО, ставлю новому флаг "Продолжить поиск по полям поиска, если по идентификатору объект не найден". Далее как обычно и получаю файл данных для загрузки. Но в нем появляется на первых взгляд ерунда(два правила с одними типами, первое не рабочее):
-<ПравилаКонвертацииОбъектов>
...
-<Правило>

<Код>ПодразделенияОрганизаций</Код>

<СинхронизироватьПоИдентификатору>true</СинхронизироватьПоИд­ентификатору>

<Источник>СправочникСсылка.ПодразделенияОрганизаций</Источник>

<Приемник>СправочникСсылка.ПодразделенияОрганизаций</Приемник>

</Правило>


-<Правило>

<Код>ПодразделенияОрганизаций_ЗУП</Код>

<ПоследовательностьПолейПоиска>Если НомерВариантаПоиска = 1 тогда СтрокаИменСвойствПоиска = "Код, Наименование"; ИначеЕсли НомерВариантаПоиска = 2 тогда СтрокаИменСвойствПоиска = "Наименование"; КонецЕсли;</ПоследовательностьПолейПоиска>

<СинхронизироватьПоИдентификатору>true</СинхронизироватьПоИд­ентификатору>

<ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли>tru­e</ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли>

<Источник>СправочникСсылка.ПодразделенияОрганизаций</Источник>

<Приемник>СправочникСсылка.ПодразделенияОрганизаций</Приемник>

</Правило>
...
Показать
В список "ПравилаКонвертацииОбъектов" попадают два ПКО, хотя в ПВД и во всех ссылках используется только одно - моё новое. Все работает, все ок. Но флаг "Продолжить поиск по полям поиска, если по идентификатору объект не найден" работать не будет. Потому что первым стоит правило у которого нет этого флага. Просто в момент загрузки при разборе тегов первым и единственным будет правило из первого по расположению. Там нет нужного мне поиска. Дальше для этого типа, в моём случае тип "ПодразделенияОрганизаций", поиска не будет для правил поиска. Вот эта функция (Виновница в измене :) ) и в ней можно было бы поправить код:
  Функция ОпределитьПоТипуОбъектаИспользоватьДополнительныйПоискПоПолямПоиска(ТипСсылкиСтрокой)
        ЗначениеСоответствия = мСоответствиеДопПараметровПоиска.Получить(ТипСсылкиСтрокой);
        Если ЗначениеСоответствия <> Неопределено Тогда
                Возврат ЗначениеСоответствия;
        КонецЕсли;
        Попытка
                Для Каждого Элемент Из Правила Цикл
                        Если Элемент.Значение.Приемник = ТипСсылкиСтрокой Тогда
                                Если Элемент.Значение.СинхронизироватьПоИдентификатору = Истина Тогда
                                        НужноПродолжитьПоиск = (Элемент.Значение.ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли = Истина);                                      мСоответствиеДопПараметровПоиска.Вставить(ТипСсылкиСтрокой, НужноПродолжитьПоиск);
                                        Возврат НужноПродолжитьПоиск;
                                КонецЕсли;
                        КонецЕсли;
                КонецЦикла;
                мСоответствиеДопПараметровПоиска.Вставить(ТипСсылкиСтрокой, Ложь);
                Возврат Ложь;
        Исключение
                мСоответствиеДопПараметровПоиска.Вставить(ТипСсылкиСтрокой, Ложь);
                Возврат Ложь;
    КонецПопытки;
КонецФункции
Показать
Цикл ещё не закончился, но слово Возврат НужноПродолжитьПоиск; прекращает поиск.
Эта проблема была не только у меня, например здесь v8: Обмен. Конвертация данных. Узел "Ссылка". Атрибут "ПродолжитьПоиск" . Там предлагают создать атрибут, но этого не понадобится, если удалить полностью не нужное ПКО из правил или его тоже поправить.
kirillovura; SviFt; Franchiser; Зеленоград; +4
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. cold_mount 1 14.02.14 16:52 Сейчас в теме
Похоже на очередной глюк КД...
+
3. SviFt 21 16.05.14 11:57 Сейчас в теме
тоже столкнулся с этой проблемой было 2 ПКО пользователи>пользователи и физлица>пользователи, первое пко не использовалось и в нем не был установлен флаг "продолжить поиск по полям поиска...", для второго ПКО этот флаг был установлен и в нем не срабатывал поиск по полям если в нем установить флаг "искать по внутреннему идентификатору...". Удалил первое ПКО, поиск по полям заработал
+
4. user623969_dusa 27.06.17 11:18 Сейчас в теме
и в 2017 году в версии 2.1.8.2 это до сих пор не исправлено, столкнулся с такой же проблемой первым правилом помечал объекты нужен был поиск только по УИД а вторым объекты переносил с простой синхронизацией по полю код, так из-за того что правило было выше по приоритету поиск брался по УИД и все опять задваивалось, надо или удалять ПКО или ставить в них одинаковый поиск
+
Внимание! Тема сдана в архив

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