|   |   | 
| 
 | Игнорировать Е и Ё в запросе. | ☑ | ||
|---|---|---|---|---|
| 0
    
        Balabass 13.05.15✎ 09:12 | 
        Дано:
 Гилев Антон - строка. Нужно найти Антона в справочнике сотрудников, в котором указано ,что ГилЕв на самом деле ГилЁв. Или искать сразу оба варианта. | |||
| 1
    
        Бубка Гоп 13.05.15✎ 09:16 | 
        (0) В запросе условие "В СПИСКЕ",
 перед выполнением запроса: ИменаДляПоиска = Новый СписокЗначений; ИменаДляПоиска.Добавить(Имя); ИменаДляПоиска.Добавить(СтрЗаменить(Имя, "е", "ё")); ИменаДляПоиска.Добавить(СтрЗаменить(Имя, "ё", "е")); Запрос.УстановитьПараметр("Имена", ИменаДляПоиска); | |||
| 2
    
        Balabass 13.05.15✎ 09:18 | 
        (1) А если 2 е/ё?
 Или одна е а вторая ё? Какой нибудь Бюль Бюль Ёгеев? )) | |||
| 3
    
        Бубка Гоп 13.05.15✎ 09:18 | 
        (1) точнее даже лучше так:
 ИменаДляПоиска.Добавить(СтрЗаменить(Имя, "ев", "ёв")); ИменаДляПоиска.Добавить(СтрЗаменить(Имя, "ёв", "ев")); | |||
| 4
    
        ДенисЧ 13.05.15✎ 09:18 | 
        где Наименование подобно "Гил[её]в Антон]     | |||
| 5
    
        Balabass 13.05.15✎ 09:21 | 
        (4) Гилев для примера.
 ФИО динамическая - как быть? Герцен Алена. А найти нужно Герцен Алёну. Тут как быть? | |||
| 6
    
        ДенисЧ 13.05.15✎ 09:22 | 
        (5) СТрЗаменить()     | |||
| 7
    
        Лодырь 13.05.15✎ 09:22 | 
        (5) И кстати Гёрцен Алена, Герцён Алёна, Герцён Алена и Герцен Алена это разные люди?     | |||
| 8
    
        Balabass 13.05.15✎ 09:23 | 
        (7) Один человек. 
 (6) Искать все возможные варианты? | |||
| 9
    
        Fish гуру 13.05.15✎ 09:24 | 
        (5) Нужно просто правильно писать имена и не выдумывать велосипедов. А фамилии через "е" - и через "ё" - это разные фамилии.     | |||
| 10
    
        Balabass 13.05.15✎ 09:25 | 
        (9) Правильно ты говоришь. Но работать приходится с тем, что есть.     | |||
| 11
    
        Лодырь 13.05.15✎ 09:26 | 
        (10) А если вычислить для всех приведенную к одному написанию фамилию? И использовать потом ее?     | |||
| 12
    
        Бубка Гоп 13.05.15✎ 09:29 | 
        (11)Хороший вариант. Со всеми "е" и совсем без "ё", например.     | |||
| 13
    
        Balabass 13.05.15✎ 09:29 | 
        (11) Звучит угрожающе.
 Это как? | |||
| 14
    
        Balabass 13.05.15✎ 09:30 | 
        (11) (12) Кстати вариант.     | |||
| 15
    
        alex74 13.05.15✎ 09:30 | 
        А если как в (4), т.е. подробно так:
 НаименованиеПараметр = СтрЗаменить(Наименование, "е", "ё"); НаименованиеПараметр = СтрЗаменить(Наименование, "ё", "[её]"); Запрос.УстановитьПараметр("НаименованиеПараметр", НаименованиеПараметр); ... а потом в запросе Наименование Подобно НаименованиеПараметр; | |||
| 16
    
        alex74 13.05.15✎ 09:31 | 
        т.е. вторая строка 
 НаименованиеПараметр = СтрЗаменить(НаименованиеПараметр , "ё", "[её]"); | |||
| 17
    
        Balabass 13.05.15✎ 09:32 | 
        (16) А почему в []?     | |||
| 18
    
        Balabass 13.05.15✎ 09:32 | 
        (16) А, понял.     | |||
| 19
    
        FIXXXL 13.05.15✎ 09:33 | 
        (13) сделать напоминалку бухгалтеру "проверьте фамилию!!!"
 отбор - по нахождению е и ё в строке проверенные - помечать и более не трогать | |||
| 20
    
        Fish гуру 13.05.15✎ 09:34 | 
        (11)(12) Не всегда это возможно. Иногда оба написания имеют место быть, но при этом это разные фамилии.     | |||
| 21
    
        Balabass 13.05.15✎ 09:37 | 
        (20) Иногда бухгалтера это охранники, которым лишбы турникет работал)     | |||
| 22
    
        Fish гуру 13.05.15✎ 09:39 | 
        (21) А для турникета пофигу, как фамилия написана. Есть номер карты :)     | |||
| 23
    
        Balabass 13.05.15✎ 09:40 | 
        (22) Вово...Поэтому Богодач кагбы намекгает.     | |||
| 24
    
        НеБорис Нуралиев 13.05.15✎ 09:40 | 
        Посмотри как в БП 3.0 сделано. Там есть поле "Служебное наименование" в справочнике "ФизЛица". В нем записано ФИО с заменой "е" и "ё" на "её"
 В запросах ищется по этому полю. | |||
| 25
    
        kosts 13.05.15✎ 09:41 | 
        Если надо обойтись только запросом, так примерно так можно, это очень не универсально и ограничение только с одной ё. Что поделать запросы в 1С сильно кастрированы
 
 | |||
| 26
    
        alex74 13.05.15✎ 09:41 | 
        (22) если случайный посетитель то карты у него может не быть, зато у охранника заявка на пропуск оформлена, по телефону. "Левочкин Иван Иванович". И тут приходит Иван Иванович, но по паспорту он "Лёвочкин". Пропускать?     | |||
| 27
    
        1Сергей 13.05.15✎ 09:41 | 
        не могу придумать ситуацию, когда приходилось бы искать кого-то по наименованию.
 Загрузка данных? | |||
| 28
    
        kosts 13.05.15✎ 09:42 | 
        (25) И то наверное не правильно     | |||
| 29
    
        Balabass 13.05.15✎ 09:43 | 
        (27) Да.     | |||
| 30
    
        1Сергей 13.05.15✎ 09:43 | 
        (29) идентификатором не должно быть ФИО     | |||
| 31
    
        Balabass 13.05.15✎ 09:44 | 
        (30) Не умничай.
 Есть таблица - ФИО, номер карты. Есть 1с где есть ФИО и еще много чего. Варианты? Тото. | |||
| 32
    
        ХардHard 13.05.15✎ 09:44 | 
        (24) Хороший вариант.
 Можно то же самое сделать предварительно выгрузив всех физлиц и заменить у них все Ё на Е получим соответствие нормализованных ФИО и ссылок на физлиц. | |||
| 33
    
        Balabass 13.05.15✎ 09:45 | 
        Отличный вариант в (16) - сработало.     | |||
| 34
    
        1Сергей 13.05.15✎ 09:46 | 
        (31) забить номера карт в 1С РУКАМИ и не любить моск уважаемым людям     | |||
| 35
    
        Ненавижу 1С гуру 13.05.15✎ 09:46 | 
        хранить в допреквизите (который заполняется автоматически) "ФИОбезЁ"     | |||
| 36
    
        Balabass 13.05.15✎ 09:46 | 
        Безусловно, где будут вопросы - руками будут бить, но основную массу можно шурануть.     | |||
| 37
    
        1Сергей 13.05.15✎ 10:00 | 
        и ещё не понимаю, чем (4) не подходит     | |||
| 38
    
        Fish гуру 13.05.15✎ 10:04 | 
        (26) Ты по телефону не услышишь, что ЛЕвочкин - это не ЛЁвочкин?     | |||
| 39
    
        alex74 13.05.15✎ 10:07 | 
        (38) 
 1. посетитель звонит и называет свою фамилию "Лёвочкин". 2. оператор забивает в базу временных пропусков "Левочкин" потому что никто букву ё никогда не пишет. 3. клиент приходит на проходную, называет фамилию, охранник вбивает в строку поиска "Лёвочкин" потому что очень умный. 4. запрос выдает 0 позиций, все, на клиента пропуск не оформлен. | |||
| 40
    
        Кай066 13.05.15✎ 10:11 | 
        (39) 
 1. посетитель звонит и называет свою фамилию "Петров". 2. оператор забивает в базу временных пропусков "Иванов" потому что никто букву ё никогда не пишет. 3. клиент приходит на проходную, называет фамилию, охранник вбивает в строку поиска "Петров" потому что очень умный. 4. запрос выдает 0 позиций, все, на клиента пропуск не оформлен. | |||
| 41
    
        alex74 13.05.15✎ 10:12 | 
        (40) если оператор - бывший программист 1с, такое тоже возможно.     | |||
| 42
    
        zak555 13.05.15✎ 10:14 | 
        > Гилев Антон
 он может быть гИлевым или гилЁвым | |||
| 43
    
        zak555 13.05.15✎ 10:14 | 
        отрубать руки, кто не использует букву Ё     | |||
| 44
    
        1Сергей 13.05.15✎ 10:15 | 
        (41) не каждый программист столько выкурит, сколько Кай     | |||
| 45
    
        ИУБиПовиц 13.05.15✎ 10:28 | 
        ФИО  = "Герцен Алёна" ;
 RegExp = Новый COMОбъект("VBScript.RegExp"); RegExp.IgnoreCase = Истина; RegExp.Global = Истина; RegExp.MultiLine = Ложь; СтрокаПоиска = ФИО; СтрокаВыраж = ""; пока 2*2 = 4 цикл Позе = Найти(СтрокаПоиска ,"е"); позё = Найти(СтрокаПоиска ,"ё"); Если НЕ Позе = 0 Или НЕ Позё = 0 тогда Если Позе = 0 тогда поз = Позё; иначеЕсли Позё = 0 тогда поз = позе; иначе поз = Мин(Позе,Позё); КонецЕсли; // поз = Мин(Позе,Позё); СтрокаВыраж = СтрокаВыраж + "[" + Лев(СтрокаПоиска,Поз - 1) + "]+" + "[еёЕЁ]."; СтрокаПоиска = Сред(СтрокаПоиска, поз+1); иначе СтрокаВыраж = СтрокаВыраж + "[" + СтрокаПоиска +"]"; Прервать; КонецЕсли; КонецЦикла; RegExp.Pattern = СтрокаВыраж ; Matches=RegExp.Execute(ФИО); ЧислоВхождений=Matches.Count(); Если ЧислоВхождений > 0 тогда Предупреждение("НАйдено") КонецЕсли; | |||
| 46
    
        Balabass 13.05.15✎ 10:30 | 
        (45) Жирно.     | |||
| 47
    
        Fish гуру 13.05.15✎ 10:30 | 
        (39) "никто букву ё никогда не пишет" - а вот тут ты сильно неправ.     | |||
| 48
    
        ИУБиПовиц 13.05.15✎ 10:31 | 
        Только долго будет выполняться:) эта фигня. Надо ж весь справочник этой фигне скормить будет:)     | |||
| 49
    
        Balabass 13.05.15✎ 10:33 | 
        (48) Так это только важности добавит )))     | |||
| 50
    
        ЧеловекДуши 13.05.15✎ 10:40 | 
        (45) А по УФ тоже искать на клиенте? Сервер же х64 может быть :)     | |||
| 51
    
        ЧеловекДуши 13.05.15✎ 10:44 | 
        Предлагаю в набираемых именах находить сперва буквы, символы, фразы, которые будут дублироваться, заменять их служебными символами.
 Затем скармливать все это в запросе, через подобно. | |||
| 52
    
        kortun 13.05.15✎ 10:58 | 
        Самый верный вариант - это при записи сотрудника убирать все ё и заменять на е     | |||
| 53
    
        Лефмихалыч 13.05.15✎ 11:02 | 
        (0) если задача найти все дубли, образованные буквами е и ё, то - только тупим перебором. ЗАменить все ё на е и потом
 ИМЕЮЩИЕ КОЛИЧЕСТВО(ФИО)>1 | |||
| 54
    
        Timon1405 13.05.15✎ 11:09 | 
        (51) зачем служебными? можно что-то типа
 Перем RegExp; Процедура КнопкаВыполнитьНажатие(Кнопка) ШаблонМаски =СформироватьШаблон_е_ё(ВходСтрока); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | &ТестФио |ГДЕ | &ТестФио ПОДОБНО &ШаблонМаски"; Запрос.УстановитьПараметр("ШаблонМаски", ШаблонМаски); Запрос.УстановитьПараметр("ТестФио", СтрокаВБазе); Результат = Запрос.Выполнить(); Нашлось = НЕ Результат.Пустой(); Сообщить(Нашлось); КонецПроцедуры Функция СформироватьШаблон_е_ё(СтрВход) RegExp.Pattern = "[её]"; Возврат "%"+RegExp.Replace(СтрВход,"[её]")+"%"; КонецФункции RegExp = Новый COMОбъект("VBScript.RegExp"); RegExp.IgnoreCase = Истина; RegExp.Global = Истина; RegExp.MultiLine = Ложь; | |||
| 55
    
        karabas11 13.05.15✎ 11:12 | 
        Можно еще полнотекстовый индекс заюзать. Он нечеткий поиск умеет. :)     | |||
| 56
    
        1Сергей 13.05.15✎ 11:15 | 
        (52) не знаю как в РФ, а у нас Номера карт жестко привязаны к паспортным ФИО. Если в паспорте есть Ё, то и свифт-файл надо отправлять с ФИО с Ё.
 Напомню, речь идёт про карточки | |||
| 57
    
        Torquader 13.05.15✎ 11:15 | 
        Для обработки справочника один раз никто не запрещает создать таблицу строк соответствия, в которой заменить Ё на Е, а также не забыть, что бывают и латинские буквы.
 Например, фамилию Серов очень часто набирают с латинской С, так как неправильную раскладку заметят только на буквы е (если не на в). А имя "Сара" можно написать как кирилицей, так и латиницей "Capa" и никто не догадается - на экране-то выглядит прекрасно. Поэтому, рекомендуется проверять, чтобы ФИО были написаны или целиком кирилицей или целиком латиницей. | |||
| 58
    
        Balabass 13.05.15✎ 11:18 | 
        (56) У всех так.     | |||
| 59
    
        Balabass 13.05.15✎ 11:19 | 
        (57) За сару п*здюлей надо давать сразу.     | |||
| 60
    
        kortun 13.05.15✎ 11:21 | 
        (56) ну так можно использовать наименование и наименование полное     | |||
| 61
    
        1Сергей 13.05.15✎ 11:57 | 
        (59) Чем тебе Капа не угодила     | |||
| 62
    
        Torquader 13.05.15✎ 12:30 | 
        (59) У меня была копия какой-то базы, где часть ФИО вводили используя Ctrl вместо Shift и там были спецсимволы вместо букв.
 Видимо, когда у оператора руки из ж..пы он последней на экран и смотрит. | |||
| 63
    
        Garykom гуру 13.05.15✎ 13:37 | 
        Эта в запросах 1С like нету? типа like 'Гил%в Антон'?     | |||
| 64
    
        ДенисЧ 13.05.15✎ 13:37 | 
        (63) Всю тему не читал, но осуждаю?     | |||
| 65
    
        ЧеловекДуши 13.05.15✎ 13:43 | 
        (57) Такие погрешности надо воспринимать, как ошибка Оператора.
 Искать их не надо. Просто заставлять переименовывать. И в итоге все будет по Русски :) | |||
| 66
    
        Garykom гуру 13.05.15✎ 13:44 | 
        (64) точно ))     | |||
| 67
    
        Кай066 13.05.15✎ 13:45 | 
        (65) "по Русски" по-русски пишется "по-русски"     | |||
| 68
    
        alex74 13.05.15✎ 13:47 | 
        (63) по условиям задачи Гилев и Гилёв одна фамилия, а Гилов - другая.
 Правильное решение было найдено несколько часов назад, и не один раз. | |||
| 69
    
        Torquader 13.05.15✎ 13:47 | 
        (65) Оператору ещё очень полезно объяснить, что он не прав и в чём он не прав, чтобы он не сидел с кислой миной и не пытался понять, почему Василий записался, а Сергей - нет.     | |||
| 70
    
        Бубка Гоп 13.05.15✎ 13:57 | 
        (69) +1. к сожалению, часто приходится допиливать, чтобы когда человек делает что то неправильно - получалось в итоге все равно правильно. тыжпрограммист. Почему то это проще чем дать по шапке бестолковому сотруднику     | |||
| 71
    
        dauster 13.05.15✎ 14:00 | 
        Имхо. В (4) Правильный подход.
 Делаем: 
 | |||
| 72
    
        Бубка Гоп 13.05.15✎ 14:02 | 
        (71) хоспади. СтрЗаменить вам в помощь. см (15)     | |||
| 73
    
        dauster 13.05.15✎ 14:10 | 
        (72) да, согласен. СтрЗаменить - оптимальнее. Хотя код в (15) не учитывает регистр и не отработает на прописных Е и Ё в Наименовании. Нужно туда НРег, например, добавлять.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |