|   |   | 
| 
 | Поиск по неточным данным | ☑ | ||
|---|---|---|---|---|
| 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 | 
        С баллами прикольно)     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |