Имя: Пароль:
1C
 
Поиск контрагентов по ИНН
Ø
0 bubucha
 
29.09.05
14:02
Необходимо найти контрагента в справчнике по инн, т.к. ИНН забит вместе с КПП данный вариант не катит:
Объект=СоздатьОбъект("Справочник.ЮрЛица");
Объект.НайтиПоРеквизиту("ИНН", СтрИНН, 1);
На данный момент мне видится такой вариант: заполнить ТЗ контрагентами с обрезанным ИНН (без КПП) и искать уже в ТЗ, но честно говоря мне этот способ не очень нравится. Есть ли еще какаянибуть возможность без лишних телодвежений решить эту задачу?
1 MariP
 
29.09.05
14:06
а окно поиска для Вас это слишком просто?
мы легких путей не ищем...(с)
2 Alexaha
 
29.09.05
14:07
запрос с условием на вхождение подстроки
3 Alexaha
 
29.09.05
14:10
кстати, а что ты называешь "лишними телодвижениями"?
4 bubucha
 
29.09.05
14:14
(1) некоторое уточнение, мне надо найти программно, ибо надо из внешнего файла (выписка банка dbf) создать документ "Строка выписки банка"
да, забыл уточнить это в тис
5 Тундра
 
29.09.05
14:15
(1). :)
(0). Самое "ленивое" - взять процедуру Получить ИНН() из обработки ПредприятиеКлиент. :))
6 Тундра
 
29.09.05
14:17
+5). Черт! Функцию, конечно! :)
7 Alexaha
 
29.09.05
14:19
5. а зачем? как я понял ИНН у него уже есть, осталось контрагента найти
8 bubucha
 
29.09.05
14:20
(5)(6) вы сами то ее смотрели? там на входе инн+кпп, у меня есть только инн
9 bubucha
 
29.09.05
14:23
(7) именно так
10 Alexaha
 
29.09.05
14:25
9. ответь на 3 и определись что лучше одно лишнее телодвижение по разделению ИНН и КПП в два реквизита (разово) или определенные тормоза с поиском при помощи запроса (постоянно)
11 Nail
 
29.09.05
14:30
Если хочется искать по подстроке, можешь воспользоваться:
Функция ПоискПоПодстрокеСпр(ПодСтрокаПоиска,ВидСправочника,РеквизитПоиска)
  
  Запрос = СоздатьОбъект("Запрос");
  
  ТекстЗапроса ="
  |ТекущийЭлемент = Справочник.*.ТекущийЭлемент;" +РеквизитПоиска + " = Справочник.*." + РеквизитПоиска + ";
  |Группировка ТекущийЭлемент Без Упорядочивания Без Групп;
  |Условие(Найти(ВРег(" + РеквизитПоиска + "),ВРег("+ПодСтрокаПоиска+"))>0);
  |Без итогов;";
  
  ТекстЗапроса=СтрЗаменить(ТекстЗапроса,"*",ВидСправочника);
  Состояние("Обрабатывается "+ Выписка.Субконто1);
  Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат "";
  КонецЕсли;
  
  Пока Запрос.Группировка() = 1 Цикл
    ТекЭлемент = Запрос.ТекущийЭлемент;
    
    Если ТекЭлемент.ЭтоГруппа()=1 Тогда
    Возврат "";
  Иначе
    Возврат ТекЭлемент;
    КонецЕсли;
    
  КонецЦикла;
  
КонецФункции // ПоискПоПодстрокеСпр()
12 Бит
 
29.09.05
14:31
Можно что типа:
Запрос = СоздатьОбъект("Запрос");
  ТекстЗапроса =
  "//{{ЗАПРОС(Сформировать)
  |Наименование = Справочник.ЮрЛица.Наименование;
  |Код = Справочник.ЮрЛица.Код;
  |ИНН = Справочник.ЮрЛица.ИНН;
  |ТекЭлем = Справочник.ЮрЛица.ТекущийЭлемент;
  |Группировка ТекЭлем без групп;
  |"//}}ЗАПРОС
    ;
    
    Если (СокрЛП(ПоискИНН)<>"") Тогда
      ТекстЗапроса=ТекстЗапроса+"Условие (Найти(ВРег(ИНН),ВРег(СокрЛП(ПоискИНН)))>0);";
    КонецЕсли;
    старКПП=ПоискКПП;
    Если (СокрЛП(ПоискКПП)<>"") Тогда
      ПоискКПП="\"+ПоискКПП;
      ТекстЗапроса=ТекстЗапроса+"Условие (Найти(ВРег(ИНН),ВРег(СокрЛП(ПоискКПП)))>0);";
    КонецЕсли;
13 bubucha
 
29.09.05
14:32
(10) лишнее - имелось ввиду создавать промежуточные объекты, вопрос только что будет быстрее 100 раз выполнять запрос (для каждой записи) или 100 раз искать в тз, но это уже надо смотреть по месту.
14 Alexaha
 
29.09.05
14:39
13. запрос быстрее, тем более что ТЗ до поиска еще и заполнить надо
15 AVP
 
29.09.05
14:41
А где ИНН с КПП вместе-в базе или в dbf-файле? Если в базе это поиск по ИНН/КПП отрабатывает нормально. Может, в справочнике по ИНН нет отбора?
16 Муму после всплытия
 
29.09.05
14:43
1. Заполнять не ТЗ, а стороннюю ДБФ с индексом
2. Если у поля ИНН есть признак Сортировка, "юзать" XBase
3. АДО
Варианты 2 и 3 - если база открыта не монопольно..............
17 bubucha
 
29.09.05
14:45
(15) в дбф файле только ИНН, что значит "отрабатывает нормально"? НайтиПоРеквизиту - не катит
18 AVP
 
29.09.05
14:46
А еще верней искать контра по расчетному счету...
Ключевое слово владелец...
19 Alexaha
 
29.09.05
14:46
13. кстати, если во внешнем файле есть и КПП и ИНН, то склеивай их и ищи по реквизиту
20 AVP
 
29.09.05
14:49
В справочнике Юрлица по реквизиту ИНН галочка по отбору стоИт?
21 Oblomov
 
29.09.05
14:49
ИНН и КПП "/" разделяються? тогда:
ИскомоеИНН = ИскомоеИНН+"/";
Условие(ИскомоеИНН в СтрИНН);
22 bubucha
 
29.09.05
14:50
(18) отпадает по причине отсутствмя в базе нормально заполненых расчетных счетов. Да конечно можно сказать типа "нифига нельзя сделать ибо у вас справочники заполнениы не полностью!!!"
(19) КПП в файле нет (((
23 AVP
 
29.09.05
14:54
На (20) ответь. Ибо у меня ищет по твоему варианту...
24 bubucha
 
29.09.05
14:59
(23) установка галочки картины не меняет
сттИНН = "ТутИНН/ТутКПП" - элемент находиься нормально
сттИНН = "ТутИНН" - фиг
25 Муму после всплытия
 
29.09.05
15:03
(24)
галочки мало.................... там еще кружочек нужно поставить
26 bubucha
 
29.09.05
15:10
(25) не понял...
27 Тундра
 
29.09.05
15:20
(8). Ничего не понимаю, ты хоть бы заглянул в функцию?
Это не помогает? :)
.
Функция ПолучитьИНН(ИННКПП)
 Стр = СокрЛП(ИННКПП);
Если СтрДлина(Стр) = 10 Тогда // только ИНН Юр Лица
 Возврат Стр;
ИначеЕсли СтрДлина(Стр) = 12 Тогда // только ИНН ФизЛица
 Возврат Стр;
Иначе
 РазделительИННКПП = Сред(Стр,11,1);
 Если Найти("1234567890", РазделительИННКПП) = 0 Тогда
   Возврат Лев(Стр, 10);
 Иначе
   Возврат Лев(ИННКПП, 12);
 КонецЕсли;
КонецЕсли;
КонецФункции // ПолучитьИНН()
28 bubucha
 
29.09.05
15:27
(27) наверное Вы не поняли вопрос...
29 Тундра
 
29.09.05
15:42
Это вы не понимаете моего ответа и совета остальных, упершись в (0)
Объект.НайтиПоРеквизиту("ИНН", СтрИНН, 1);
Функция в (27) возвращает чистый ИНН, вот и сравнивайте с искомым, да обрящете. :)
30 bubucha
 
29.09.05
16:13
(29) да ниче я не уперся, вопрос то не в том КАК отделить ИНН от КПП (что и делает лобируемая вами функция)) а как малой кровью (через тз, запрос ...вот еще внешний фалй предлагали с индексом), решить проблему. На данный момент сделано через по простоиу через запрос, рабоет конечно...но тормозит......
Всем спасибо за помощь.
31 Муму после всплытия
 
29.09.05
16:17
(30)
в (16) указаны аж 3 способа, которые работают ГОРАЗДО быстрее запроса...............................
(29)
не обрящет...........................
32 Макс 1С
 
29.09.05
16:53
(30) а чем не нравится совет в (11) и (12)....
33 bubucha
 
29.09.05
16:58
(32) очень даже нравится, спасибо. просто я думал есть "скрытые возможноси":)))
34 Макс 1С
 
29.09.05
17:07
(33) стандртных - нет, поиск по первым имволам проходит только с наименованием, а вообще посмотри поиск по справочникам в ТиС.... хотя подозреваю, что в (11) фрагмент как раз из неё
35 bubucha
 
29.09.05
17:13
пока остановился на варианте из (11), будет "сильно" тормозить - можно будет думать дальше, так что вопрос снят.
36 Макс 1С
 
29.09.05
17:16
при всем "богатстве" выбора другой альтернативы нет ;-)
37 bubucha
 
29.09.05
17:19
...ну можно еще банкирам пива проставить, может кпп добавят))))
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn