![]() |
![]() |
|
Поиск контрагентов по ИНН Ø |
☑ | ||
---|---|---|---|---|
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
|
...ну можно еще банкирам пива проставить, может кпп добавят))))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |