Имя: Пароль:
1C
1С v8
КД 2.1 ПКО, Обработчик события "Поля поиска". Как настроить количество попыток поиска?
0 Тенепопятам
 
31.03.22
20:25
В событии есть переменная "НомерВариантаПоиска", которая по описанию может принимать значения от 1 до 10, но на практике после двух попыток поиска (макс. НомерВариантаПоиска=2) поиск завершается и создается новый элемент.
Вопрос: почему так? Может быть количество попыток поиска где-то указывается?
1 Aleksey
 
31.03.22
20:35
какой смысл? если он нашел или закончились варианты поиска
2 Тенепопятам
 
31.03.22
21:19
(1) Вариантов поиска более двух, а он после второго поиск прекращает
3 Aleksey
 
31.03.22
21:56
он может и 10 раз искать
4 Aleksey
 
31.03.22
21:58
есть СтрокаИменСвойствПоиска, если она не меняется какой смысл еще раз искать?
5 SnowBarsCloud
 
31.03.22
22:30
Если правильно понимаю, то сначала поиск идет по ГУИДУ, второй поиск идет по всем твоим полям сразу. Указывается в "СтрокаИменСвойствПоиска". По ГУИДУ не найдено, по другим полям не найдено, создается новый. Могу ошибаться, не пользовался обработчиком "Поля поиска". Смотрю методички
6 Ёпрст
 
31.03.22
23:33
(0) больше кода.
Возможно описано ПрекратитьПоиск
А так, до 5 точно работает, больше условий не лепил
7 hhhh
 
01.04.22
01:53
а вот если пустой инн задан в поиске, он по нему ищет? Или переходит к следующему шагу? То есть пропускает этот вариант?
8 Aleksey
 
01.04.22
02:16
В поиски нельзя задать пустой Инн там задаётся поле поиска. Т. Е. Поля для поиска Инн или Инн, кпп.
9 Aleksey
 
01.04.22
02:18
А значение уже прилетает при конвертации. И вот значение для конкретного элемента может быть пустым. И да он будет искать по пустому значению
10 Aleksey
 
01.04.22
02:29
если конечно не прописать
Если НомерВариантаПоиска =1 тогда
  если ЗначениеЗаполнено(СвойстваПоиска.Инн) тогда
    СтрокаИменСвойствПоиска ="ИНН"
  иначе
    СтрокаИменСвойствПоиска ="Наименование"
  КонецЕсли;
ИначеЕсли НомерВариантаПоиска = 2 тогда
  СтрокаИменСвойствПоиска ="КодВИсточнике";
ИначеЕсли НомерВариантаПоиска = 3 тогда
  //Поиск в регистре соответствия, причем поля для поиска берем из Дополнительных параметрах
тут типа запрос к регистру с передачей (ПараметрыОбъекта.КодДляПоиска) для поиска
если нашли то
СсылкаНаОбъект = РезультатЗапроса.Ссылка;//ссылка на результирующий объект. Если в обработчике установить данную ссылку (не пустую) то программа ее запомнит и поиск на этом будет считать успешно завершенным


Т.е. если ИНН пустой, то ищем по наименованию, а если не нашли то ищем по реквизиту КодВИсточнике, и если и там пусто, то по регистру соответствия
ну и т.д. до 10 вариантов
11 DiMel_77
 
01.04.22
10:29
Вообще, проще посмотреть в модуль объекта обработки "УниверсальныйОбменВФорматеXML" в процедуру "НайтиОбъектПоСсылке". Типовой подход подразумевает использование переменной "СтрокаИменСвойствПоиска", смена которой инициирует поиск при смене полей поиска. Но никто вам не мешает искать не по свойствам поиска с использованием функции "НайтиЭлементПоСвойствамПоиска", а организовать свой собственный алгоритм, в котором предусмотреть хоть 100 вариантов поиска, который в итоге должен заполнить СсылкуНаОбъект. У меня таким образом происходит поиск в правилах по переданным параметрам. Но на практике больше 5 свойств не разу не встречалось.