Имя: Пароль:
1C
1C 7.7
v7: НайтиПоРеквизиту не ищет
,
0 Dmitry_FFF
 
14.03.13
11:44
Разбираюсь в стандартной обработке из ТиС Клиент Банка.
   СпрКонтрагентов = СоздатьОбъект("Справочник.Контрагенты");
   СпрКонтрагентов.НайтиПоРеквизиту("ЮрФизЛицо", НайтиОрганизацию(Корреспондент, 1), 1);

НайтиОрганизацию возвращает вернвйэлемент справочника ЮрЛица, а НайтиПоРеквизиту возвращает 0, т.е. не находит элемент справочника контрагенты с полем ЮрФизЛицо.

Пишу для проверки обработку, в ней все НайтиПоРеквизиту находит нужный элемент:
   СпрКонтрагентов = СоздатьОбъект("Справочник.Контрагенты");    
   СпрКонтрагентов.НайтиПоРеквизиту("ЮрФизЛицо", ВыбЮрЛица, 1);
   Сообщить(СпрКонтрагентов.ТекущийЭлемент());
ВыбЮрЛица элемент диалога, в котором интерактивно выбираю тот же элемент что возвращает НайтиОрганизацию(Корреспондент, 1).

Почему?
1 Tymoha
 
14.03.13
11:48
ну вынеси НайтиОрганизацию отдельно
2 ЧеловекДуши
 
14.03.13
11:48
Что такое "НайтиОрганизацию(Корреспондент, 1)"?
+ Галочка отбор по реквизиту.
3 antoneus
 
14.03.13
11:48
(2) не было бы галки - ругалось бы
4 ЧеловекДуши
 
14.03.13
11:49
(3) Замечательно, осталось только самое главное.
5 ЧеловекДуши
 
14.03.13
11:50
+ (0)Покажи функцию "НайтиОрганизацию(Корреспондент, 1)"
6 Dmitry_FFF
 
14.03.13
12:48
Функция НайтиОрганизацию(Слово, НеИскатьСвоиЮрЛица = 0)
   
   Объект=СоздатьОбъект("Справочник.СвоиЮрЛица");
   
   ИННКраткий = СокрЛП(ТаблицаДокументов.ПолучитьЗначение(ТаблицаДокументов.НомерСтроки, Слово+"ИНН"));
   КППКраткий = СокрЛП(ТаблицаДокументов.ПолучитьЗначение(ТаблицаДокументов.НомерСтроки, Слово+"КПП"));
   
   Если ПустаяСтрока(ИННКраткий) = 0 Тогда
       
       Если НеИскатьСвоиЮрЛица = 0 Тогда
           Объект.НайтиЭлемент(НайтиОрганизациюПоИННКПП(ИННКраткий, КППКраткий, "СвоиЮрЛица"));    
           
           Если Объект.Выбран() = 1 Тогда
               Спр=СоздатьОбъект("Справочник.Фирмы");
               НастоящаяФирма = ПолучитьПустоеЗначение("Справочник.Фирмы");
               ВременнаяФирма = ПолучитьПустоеЗначение("Справочник.Фирмы");
               Спр.ВыбратьЭлементы();
               
               Пока Спр.ПолучитьЭлемент() = 1 Цикл
                   Если Спр.ЮрЛицо = Объект.ТекущийЭлемент() Тогда
                       ВременнаяФирма = Спр.ТекущийЭлемент();
                       Если (СокрЛП(Спр.Наименование) = СокрЛП(ТаблицаДокументов.ПолучитьЗначение(ТаблицаДокументов.НомерСтроки, Слово)))
                       ИЛИ (СокрЛП(Спр.Наименование) = СокрЛП(ТаблицаДокументов.ПолучитьЗначение(ТаблицаДокументов.НомерСтроки, Слово + "1"))) Тогда
                           НастоящаяФирма = Спр.ТекущийЭлемент();
                           Прервать;
                       КонецЕсли;
                   КонецЕсли;
               КонецЦикла;      
               
               Если ПустоеЗначение(НастоящаяФирма) = 0 Тогда
                   Возврат НастоящаяФирма;
               КонецЕсли;                
               Если ПустоеЗначение(ВременнаяФирма) = 0 Тогда
                   Возврат ВременнаяФирма;
               КонецЕсли;                
               
           КонецЕсли;
           
       КонецЕсли;
       
       Если Объект.Выбран() = 0 Тогда
           // Если не нашли среди своих юридических лиц и фирм - попробуем найти среди юридических лиц
           Объект=СоздатьОбъект("Справочник.ЮрЛица");
           
           Объект.НайтиЭлемент(НайтиОрганизациюПоИННКПП(ИННКраткий, КППКраткий, "ЮрЛица"));    
           
       КонецЕсли;
       
       Если Объект.Выбран() = 0  Тогда
           // Если не нашли среди юридических лиц - попробуем найти среди физических
           Объект=СоздатьОбъект("Справочник.ФизЛица");
           
           Объект.НайтиЭлемент(НайтиОрганизациюПоИННКПП(ИННКраткий, КППКраткий, "ФизЛица", 12));    
           
       КонецЕсли;
       
   КонецЕсли;
   
   Возврат Объект.ТекущийЭлемент();

КонецФункции // НайтиОрганизацию()
7 Dmitry_FFF
 
14.03.13
12:55
(1) Изменил вот так:
   Ссс=НайтиОрганизацию(Корреспондент, 1);
   СпрКонтрагентов.НайтиПоРеквизиту("ЮрФизЛицо",Ссс, 1);
Ничего не изменилось
8 ЧеловекДуши
 
14.03.13
12:56
(7) А что показывает отладчик?
Значение ССС содержит хоть чего?
9 Happy Bear
 
14.03.13
12:57
(7) ЮрФизЛицо это перечисление, а не справочник, вроде
10 ЧеловекДуши
 
14.03.13
12:58
+ сделай по типо этого

СпрРС_ЭС = СоздатьОбъект("Справочник.Контрагенты");
СпрРС_ЭС.ВыбратьЭлементыПоРеквизиту("ЮрФизЛицо",Ссс,0,0);
Пока СпрРС_ЭС.ПолучитьЭлемент() = 1 Цикл
//И т.д. сам

(9) В ТиС-е справочник
11 NS
 
14.03.13
12:59
До сегодняшнего дня это естественно был справочник.
12 stanru1
 
14.03.13
12:59
может, так?
Ссс=НайтиОрганизацию(Корреспондент, 1);
СпрКонтрагентов.НайтиПоРеквизиту("ЮрФизЛицо",Ссс.ТекущийЭлемент(), 1);
?

ЮрФизЛицо это справочник
13 ЧеловекДуши
 
14.03.13
12:59
+(9)  А вот в УПП это уже перечисление :)
14 ЧеловекДуши
 
14.03.13
13:00
+(0) (10) Кстати, контрагентов с одним и тем же Юр лицом может оказаться несколько :)
15 Dmitry_FFF
 
14.03.13
14:10
(14) Сейчас проверил все записи, Разных контрагентов с одинаковыми юрфизлицами нет. Но оказалось есть одинаковые юрфизлица, с одинаковым инн и кодом :( Видимо последствия переноса данных
Вопрос решен, всем спасибо