четверг, 11 июня 2015 г.

Поиск по разным полям в Конвертации Данных

Добрый день. Периодически встречаются вопросы по тому как организовать поиск в Конвертации данных по разным полям. Чаще всего вопрос встает по справочнику "Контрагенты", так как там чаще всего поиск производится по ИНН и КПП. Однако у группы таких реквизитов нет. и вот здесь нам на помощь приходит обработчик событий "Поля поиска"



В описании написано следующее:

Поля поиска

Условия возникновения события

Только для платформы V8.
Событие выполняется при поиске элемента ссылочного типа. Если установлен поиск по уникальнму идентификатору и программа нашла элемент, то поиск прекращается. Если поиск по уникальному идентификатору не дал положительного результата и указано, что нужно продолжить поиск в этом случае или поиск по уникальному идентификатору не проводился, то программа пытается найти элементы по свойствам поиска. В обработчике нужно установить список полей через запятую по которым нужно проводить поиск. Если очередная попытка дала положительный результат, то поиск прекращается.
Поиск возможен только по тем полям у которых на этапе выгрузка был установлен флаг поиска данных!!!

Параметры:

НомерВариантаПоиска - число. Номер попытки поиска. Попыток поиска может быть не больше 10.
СвойстваПоиска – соответствие, в котором хранятся текущие значения реквизитов поиска. Эти значения можно использовать в произвольных алгоритмах для идентификации объектов ИБ при загрузке данных. Следует иметь в виду, что при создании нового объекта, значения из соответствия СвойстваПоиска используются для заполнения свойств нового объекта.
ПараметрыОбъекта - либо Неопределено либо Соответствие, в котором хранятся дополнительные параметры, переданные для данного объекта из источника в приемник. Если параметров передано не было, то ПараметрыОбъекта = Неопределено. В данном обработчике соответствие содержит только те параметры, для которых установлен признак поиска.
ПрекратитьПоиск - булево. Если Истина, то поиск объекта прекращается, в зависимости от того СсылкаНаОбъект заполнена или нет создается новый объект.
СсылкаНаОбъект - ссылка на результирующий объект. Если в обработчике установить данную ссылку (не пустую) то программа ее запомнит и поиск на этом будет считать успешно завершенным
УстанавливатьУОбъектаВсеСвойстваПоиска - булево. Определяет нужно ли после удачного завершения поиска установить объекту все реквизиты поиска. Объект может быть найден по части реквизитов. Этот флаг определяет нужно оставшиеся реквизиты, которые не участвовали в поиске (но по которым поиск возможен) установить объекту или нет. Значение по умолчанию: Истина.
НастройкаПоиска - строка. Выбранный пользователем вариант сопоставления объектов. В ПКО есть таблица Варианты настроек полей поиска - с возможными вариантами настроек полей поиска для пользователя. Разработчик правил определяет возможные комбинации полей поиска, которые пользователь может выбирать при настройке обмена. Все настройки указанные разработчиком правил должны быть отработаны в коде обработчика "Поля поиска". Переменная НастройкаПоиска в обработчике определяет выбранный пользователем вариант сопоставления (ИмяНастройкиДляАлгоритма из соответствующей строки таблицы). Если пользователь не выбрал ни один вариант сопоставления, или ему ни один вариант не был предложен, то НастройкаПоиска - пустая строка.
СтрокаИменСвойствПоиска – строка в которой задаются ключевые поля варианта поиска. Могут быть указаны только те свойства, для которых при настройке правил обмена был выставлен флаг поиска.

Пример:


Если НомерВариантаПоиска = 1 тогда

 
СтрокаИменСвойствПоиска = "Код, Наименование";

ИначеЕсли
НомерВариантаПоиска = 2 тогда

 
СтрокаИменСвойствПоиска = "Код";

Иначе

 
СтрокаИменСвойствПоиска = "Наименование";

КонецЕсли;



Обратите внимание что попыток поиска не может быть более 10, как правило этого более чем достаточно. При составлении алгоритма поиска следует так же учитывать, что если значение строки СтрокаИменСвойствПоиска  не изменилось, то поиск значения прекращается, это сделано для того что бы не выполнять поиск все 10 раз


Комментариев нет:

Отправить комментарий