|
Поиск по неточным данным | ☑ | ||
---|---|---|---|---|
0
Teffi
19.10.12
✎
06:13
|
Подтолкните пожалуйста в нужном направлении! Пишу обработку загружающую дбф в 1ску. И столкнулась с такой проблемой. Физ лица в 1ске и дбф могу немного отличаться, регистрами, опечатками. Надо чтобы поиск в справочнике Физ лиц находил всех лиц, которые похожи, и предлагал пользователю выбрать нужного. А если физлица в справочнике и в дбф совпадают полностью, соответственно все автоматически заполнялось. Вот думаю, можно ли в восьмерке это грамотно организовать?
|
|||
1
Godofsin
19.10.12
✎
06:15
|
Можно.
|
|||
2
Godofsin
19.10.12
✎
06:16
|
Юзай запросы + ПОДОБНО
|
|||
3
Teffi
19.10.12
✎
06:22
|
а разве ПОДОБНО ищет не точно такие же записи?
|
|||
4
Godofsin
19.10.12
✎
06:23
|
Ну я так понимаю, ты же по наименованию ищешь. Как раз для этого
|
|||
5
Godofsin
19.10.12
✎
06:23
|
нет, не точно такие же )))
|
|||
6
Teffi
19.10.12
✎
06:30
|
"Выбрать
| ФизическиеЛица.Наименование | Из | Справочник.ФизическиеЛица КАК ФизическиеЛица | ГДЕ | ФизическиеЛица.Наименование ПОДОБНО &Наименование" Запрос.УстановитьПараметр ("Наименование", Так я понимаю? А какое условие задать в таком случае? Что б учитывался и регистр, и несоответствие некоторых букв? |
|||
7
Godofsin
19.10.12
✎
06:31
|
(6) как насчет почитать справочку?
|
|||
8
Teffi
19.10.12
✎
06:32
|
Ясно
|
|||
9
Godofsin
19.10.12
✎
06:33
|
Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если значение выражения удовлетворяет шаблону – результатом оператора будет ИСТИНА, иначе – ЛОЖЬ.
Следующие символы в строке шаблона являются служебными и имеют смысл, отличный от символа строки: % (процент): последовательность, содержащая любое количество произвольных символов _ (подчеркивание): один произвольный символ […] (в квадратных скобках один или несколько символов): любой одиночный символ из перечисленных внутри квадратных скобок В перечислении могут встречаться диапазоны, например a-z, означающие произвольный символ, входящий в диапазон, включая концы диапазона. [^…] (в квадратных скобках значок отрицания, за которым следует один или несколько символов): любой одиночный символ, кроме тех, которые перечислены следом за значком отрицания Любой другой символ означает сам себя и не несет никакой дополнительной нагрузки. Если в качестве самого себя необходимо записать один из перечисленных символов, то ему должен предшествовать <Спецсимвол>. Сам <Спецсимвол> (любой подходящий символ) определяется в этом же операторе после ключевого слова СПЕЦСИМВОЛ. Например, шаблон “%АБВ[0-9][абвг]\_абв%” СПЕЦСИМВОЛ “\” означает подстроку, состоящую из последовательности символов: буквы А; буквы Б; буквы В; одной цифры; одной из букв а, б, в или г; символа подчеркивания; буквы а; буквы б; буквы в. Причем перед этой последовательностью может располагаться произвольный набор символов. |
|||
10
Живой Ископаемый
19.10.12
✎
07:52
|
2(6) ПОДОБНО для 1С регистронезависимо - как раз то что тебе нужно. Но вот как Понять некоторость символов - не понятно...
В полнотекстовом поиске еще можно задать "близость слова", тоже в справке почитай. |
|||
11
France
19.10.12
✎
07:54
|
да загрузи как есть, потом грохни дубли по схожему набору..
делов то.. |
|||
12
Teffi
19.10.12
✎
08:11
|
Этой обработкой будут пользоваться каждый день. Данные о платежах из разных систем загружаются в одну дбфку. Обработка должна быть безупречной....
|
|||
13
Godofsin
19.10.12
✎
08:12
|
(12) Нереально, имхо
|
|||
14
Живой Ископаемый
19.10.12
✎
08:13
|
2(12) Так не будет.
Расскажи как обработка догадается что например Петренко А.В. и Петренков А.В. это два разных человека, а не в одном просто добавили/недописали одну букву? В фамилиях-то нет контрольных разрядов. |
|||
15
aleks-id
19.10.12
✎
08:25
|
||||
16
Живой Ископаемый
19.10.12
✎
08:28
|
2(15) вот все что там описано, в в8 по крайней мере для русского языка реализовано только в полнотекстовом поиске. И ПОДОБНО для реализации такого не сгодится.
|
|||
17
dk
19.10.12
✎
08:32
|
придумать функцию подобия несложно, можно и какую-нить научную взять
--- имхо довольно простая ф-ция 1. убрать все не буквы 2. применить хэш типа: убрать дубли букв и выстроить по алфавиту. Например "Иванов А. С." -> "авинос" 3. найти одинаковые по хэшу записи --- Тут главное определиться показать как можно больше похожих записей, тогда хэш попроще. Либо показать похожие, но с вероятностью пропуска, тогда хэш построже - например можно считать количество букв повторяющихся "Иванов А. С." -> "а2в2и1н1о1с1" |
|||
18
Живой Ископаемый
19.10.12
✎
08:34
|
2(17) да. наверное, только опять же - в запросе с Подобно этого уже не сделать. Значит кодом. А зачем это все изобретать, если реализовано в полнотекстовом поиске.
|
|||
19
dk
19.10.12
✎
08:35
|
просто не работал с полнотекстовым поиском в 8-ке, та программное обращение есть?
|
|||
20
Живой Ископаемый
19.10.12
✎
08:38
|
ну сдрасьте... конечно. Просто нужный ей ДБФ все равно придется сначала загрузить в какую-то буферную структуру1С типа спраовника или регистра сведений, запустить индексирование (тоже можно программно) и потом уже использовать методы ПТ.
|
|||
21
Asmody
19.10.12
✎
08:47
|
(12) вот мне нравятся такие заявки. скажи, что работа системы может быть безупречной только в случае, если работа операторов будет безупречна
|
|||
22
ASU_Diamond
19.10.12
✎
08:51
|
а давно у нас физлиц ищут по наименованию? Сколько у нас в стране Ивановых И.И.?
PS. У нас есть полные тезки родившиеся в один день |
|||
23
olegves
19.10.12
✎
08:52
|
(0) я как-то синхронизировал Физлиц ЗУП и самописной управленки по ФИО, а кто не стыковался, того по полу, фамилии и инициалам. Пришлось писать обработку для сопоставления. Если есть дата рождения, то можно по фамилии (или 5 первым буквам фамилии), полу и дате рождения сопоставить
|
|||
24
Dimel
19.10.12
✎
08:55
|
(20) А можно воспользоватся внешней компонентой StrMatch.dll для этого придуманой ещё 9 лет назад ;)
|
|||
25
dk
19.10.12
✎
08:55
|
(18) подготовка данных конечно потребуется, но расчеты можно провести в ТЗ и потом ее загрузить во временные таблицы и в запросе использовать уже. Хотя проще в самой ТЗ и искать.
|
|||
26
Dimel
19.10.12
✎
09:03
|
Вот кстати решение похожей задачи http://danila.org.ua/nechetkiy-poisk-speshit-na-pomoshh-rabot/
|
|||
27
Живой Ископаемый
19.10.12
✎
09:10
|
2(24) Блин, зачем? Чтобы она работала только в толстом клиенте на винде, и не работала в случае Линуксового сервера например? При живом-то ПТ поиске еще со времен 8.0?
|
|||
28
Живой Ископаемый
19.10.12
✎
09:11
|
Так и есть, работает только в 32-битной винде.
|
|||
29
Dimel
19.10.12
✎
09:18
|
(27) Полнотекстовый поиск появился только на 8.1 ;), но мне было легче переделать обработки с 7-ки с внешней компонентой чем разбиратся с ним - это только один из вариантов ...
|
|||
30
Dimel
19.10.12
✎
09:21
|
+(27) У меня кстати на 64 битной винде работает что я делаю не так?
|
|||
31
Живой Ископаемый
19.10.12
✎
09:24
|
2(30) Исключительно потому что или толстый клиент или сервер 1С 32-битный.. да?
|
|||
32
marty0701
19.10.12
✎
09:28
|
(0)Как вариант сопоставления:
Если в дбф, есть данные по физику, уникальные, типа ИНН или дата рождения проверяй по ним также. ФИО на предмет очепяток и прочего можно разрубаь на Ф + И + О, Вырезать из них левые символы, т.е. приводить к виду "Иванов" + "Иван" + "Иванович", искать на совпадение по каждому из них + ИНН + Дата, также о полному ФИО + ИНН + ДАТА, т.е. нечто вроде, ИвановИванИванович77430960271719850701. Ну и соответственно выводить пользователю форму с предложением проверить сопоставления, исправить некорректные и продолжить загрузку. |
|||
33
Dimel
19.10.12
✎
09:32
|
(31) Может вы и правы потому что стоят 2 сервера 32 и 64 битные, сейчас попробую на 64 битном.
|
|||
34
crueltytanya
19.10.12
✎
09:34
|
(32) Если есть ИНН, остальное можно использовать только для проверки правильности введеного ИНН. ИНН у всех уникален.
|
|||
35
marty0701
19.10.12
✎
09:37
|
(34)Ну да, индивидуальный налоговый номер, он на то и индивидуальный, что уникальный, ваши предложения в случае если в 1С Инн 774309602717 Указан у Петрова Петра Петровича, а в Дбф у Иванова Ивана Ивановича?
|
|||
36
crueltytanya
19.10.12
✎
09:38
|
(35) да, только для проверки правильности введенного ИНН. мало где кто что мог ввести.
|
|||
37
marty0701
19.10.12
✎
09:40
|
(36)Это какой то ответ на какой-то вопрос?
|
|||
38
MSII
19.10.12
✎
09:41
|
(34) ИНН есть не у всех.
|
|||
39
crueltytanya
19.10.12
✎
09:42
|
(37) я конкретизировала ваше предложение в (32) при загрузке по ИНН по вашему алгоритму использовать ФИО и дату рождения.
|
|||
40
crueltytanya
19.10.12
✎
09:44
|
(38) тогда (17) или (18)
|
|||
41
marty0701
19.10.12
✎
09:45
|
(39)А ну да, если есть ИНН, то доп проверкой фигачить, если нет, просто сопоставлять по ФИО + дата рождения, хоть это тоже даст 100% результатов, на то и есть форма сопоставления для проверки, а вообще алгоритмов тьма, для неточного поиска, надо просто подумать, извращения тут приветствуются.
|
|||
42
Teffi
19.10.12
✎
10:16
|
Я ещё по коду лицевого ищу. Но в дбф даны всего 6 последних цифр из 17, поэтому при при поиске только по коду, он мог вывести 5 кодов. Поэтому решила использовать второй идентификатор, а удобней всегоэ то делать по ФИО физлиц. А ФИО в в реестрах может быть с опечатками, потому что криворукая операторша от руки его при оплате заполняет.
|
|||
43
Teffi
19.10.12
✎
10:18
|
(32) Решила сначала искать по коду, потом если по такому коду есть точно такое физлицо, тогда все окей, если нет, выводить окно с выбором физлиц с таким кодом, пусть ручками выбирает какое надо.
|
|||
44
Vladal
19.10.12
✎
11:01
|
(2) Подобно в семерке есть?
|
|||
45
Живой Ископаемый
19.10.12
✎
11:02
|
2(44) В Семерке винде? даже в линуксе работает
|
|||
46
Vladal
19.10.12
✎
11:03
|
(45) а.а.а.а... я прочитал (0) как "реализовать в семерке"
|
|||
47
Живой Ископаемый
19.10.12
✎
11:05
|
лицорука.пнг
|
|||
48
GANR
19.10.12
✎
11:23
|
Можно за совпадение того или иного признака давать n-ное кол-во баллов. Если Наименование подобно, или ИНН равны - тогда - даем 4 балла. За Должность, ГодРождения, МестоРОждения и т. д. даем по 1 баллу. Если сумма баллов более или равна 4 (для строгости, можно взять 5 и выше) - считаем, что это "то" физ. лицо. Запрос - ниже...
ВЫБРАТЬ ФизическиеЛица.Ссылка ИЗ Справочник.ФизическиеЛица КАК ФизическиеЛица ГДЕ ВЫБОР КОГДА ФизическиеЛица.Наименование ПОДОБНО &Наименование + "%" ТОГДА 4 ИНАЧЕ 0 КОНЕЦ + ВЫБОР КОГДА ФизическиеЛица.ИНН = &ИНН ТОГДА 4 ИНАЧЕ 0 КОНЕЦ + ВЫБОР КОГДА ФизическиеЛица.КодИМНС = &КодИМНС ТОГДА 1 ИНАЧЕ 0 КОНЕЦ + ВЫБОР КОГДА ФизическиеЛица.МестоРождения = &МестоРождения ТОГДА 1 ИНАЧЕ 0 КОНЕЦ + ВЫБОР КОГДА ФизическиеЛица.Пол = &Пол ТОГДА 1 ИНАЧЕ 0 КОНЕЦ + ВЫБОР КОГДА НАЧАЛОПЕРИОДА(ФизическиеЛица.ДатаРождения, ГОД) = &ГодРождения ТОГДА 1 ИНАЧЕ 0 КОНЕЦ >= 4 |
|||
49
GANR
19.10.12
✎
11:23
|
(0) см. (48)
|
|||
50
Teffi
19.10.12
✎
12:49
|
С баллами прикольно)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |