Имя: Пароль:
1C
1С v8
Правила обмена и обработчик события "Поля поиска"
,
0 PCcomCat
 
25.08.15
09:46
Доброго времени, уважаемые!

Не могу понять, в чем дело?

У объекта стоит поиск по уникальному идентификатору и продолжить поиск по полям. Установлены поля поиска и прописано в обработчике события "Поля поиска":

Сообщить("Поиск");

Если НомерВариантаПоиска = 1 тогда
  Сообщить("1");
  // алгоритм поиска СсылкиНаОбъект
Иначе
  Сообщить("2");
  СтрокаИменСвойствПоиска = "Дата, Номер";
КонецЕсли;

При загрузке объекта свойство ОбъектНайден показывает Ложь.

И при этом всем никаких моих сообщений не выводится, объект просто создается.

По какой причине такое возможно? Подскажите, пожалуйста.
1 PLUT
 
25.08.15
10:04
(0) объект создался с таким же уникальным идентификатором, поэтому до полей поиска и вариантов поиска не дошло
2 PCcomCat
 
25.08.15
10:06
(1) Почему он мог создаться без поиска? Куда копать?
3 PLUT
 
25.08.15
10:10
(2) потому-что

> У объекта стоит поиск по уникальному идентификатору и продолжить поиск по полям

проверь в обеих базах УИДы у объектов - скорее всего одинаковые
4 PCcomCat
 
25.08.15
10:13
(3) Объекта в базе не было. При загрузке вывожу сообщением ОбъектНайден, и  выводится ЛОЖЬ. Т.е. объект создается при загрузке, но ума не приложу, почему же без поиска по полям? Туплю в общем.
5 vtolga
 
25.08.15
10:22
"СтрокаИменСвойствПоиска – строка в которой задаются ключевые поля варианта поиска. Могут быть указаны только те свойства, для которых при настройке правил обмена был выставлен флаг поиска."
А у тебя флаг поиска выставлен?
6 vtolga
 
25.08.15
10:26
И еще - вот работающий пример.
Фишка в "СтрокаИменСвойствПоиска=Строка(НомерВариантаПоиска);"

Это нужно, чтобы поиск повторялся по другим полям в случае неуспешного завершения предыдущего.

Пример:

Если СвойстваПоиска["ЭтоГруппа"] Тогда
    СтрокаИменСвойствПоиска="Наименование,ЭтоГруппа";
Иначе
    Если НомерВариантаПоиска=1 Тогда
        Если СвойстваПоиска["ИНН"]<>"" и СвойстваПоиска["КПП"]<>"" Тогда
            СтрокаИменСвойствПоиска="ИНН,КПП";
        Иначе
            СтрокаИменСвойствПоиска=Строка(НомерВариантаПоиска);
        КонецЕсли;
    ИначеЕсли НомерВариантаПоиска=2 Тогда
        Если СвойстваПоиска["ИНН"]<>"" и СвойстваПоиска["КПП"]="" Тогда
            СтрокаИменСвойствПоиска="ИНН,НаименованиеСлужебное";
        Иначе
            СтрокаИменСвойствПоиска=Строка(НомерВариантаПоиска);
        КонецЕсли;
    ИначеЕсли НомерВариантаПоиска=3 Тогда
        Если СвойстваПоиска["ИНН"]="" Тогда
            СтрокаИменСвойствПоиска="НаименованиеСлужебное";
        Иначе
            СтрокаИменСвойствПоиска=Строка(НомерВариантаПоиска);
        КонецЕсли;
    КонецЕсли;
КонецЕсли;
7 1C_OOLer
 
25.08.15
10:27
(0) а что не логично? Объект был не найден и создался новый.
8 PCcomCat
 
25.08.15
10:29
(5) На полях поиска установлены флаги, но не заходит в обработчик "Поля поиска". Если ставлю не создавать новый объект, то он и не создается.
9 PCcomCat
 
25.08.15
10:30
(7) А мои "Сообщить" не должны выводиться?
10 Гёдза
 
25.08.15
10:31
Точно одно правило ПоляПоиска для данного типа приемника?
11 PCcomCat
 
25.08.15
10:33
(10) для связки "ПлатежноеПоручениеВходящее(Источник)-ПоступлениеНаРасчетныйСчет(Приемник)" одно.
12 1C_OOLer
 
25.08.15
10:35
Отладкой смотришь?
13 PCcomCat
 
25.08.15
10:36
(12) Нет. У меня ограниченное количество документов.
14 1C_OOLer
 
25.08.15
10:38
(13) Это как-то мешает запустить отладку?
15 PCcomCat
 
25.08.15
10:56
(14) Имя правила отладчик показывает именно то, с которым я работаю.
16 1C_OOLer
 
25.08.15
10:59
(15) Отладчик в сам обработчик заходит?