|   |   | 
| 
 | Регулярные выражения в 1С | ☑ | ||
|---|---|---|---|---|
| 0
    
        Stim213 24.11.11✎ 00:10 | 
        Кто-нить знает, в последнем релизе платформы появилась поддержка сабжа? Планируется ли вообще?     | |||
| 1
    
        zak555 24.11.11✎ 00:15 | 
        1%2%3     | |||
| 2
    
        Поручик 24.11.11✎ 00:17 | 
        Нет. И вряд ли будет по той же причине, по какой регулярок нет в языках высокого уровня компилируемого типа.
  Ещё тема v8: Регулярные выражения в 1С 8 | |||
| 3
    
        zak555 24.11.11✎ 00:21 | 
        > в языках высокого уровня компилируемого типа
  этот про 1с ? | |||
| 4
    
        Поручик 24.11.11✎ 00:28 | 
        Нет, не про 1С. Delphi, C++, etc. Но причина отсутствия та же самая.     | |||
| 5
    
        Хранимая Процедура 24.11.11✎ 00:50 | 
        (2) чего?
  Встроенные регулярки есть везде кроме быдлоязычков делфи и 1с Нувыпонели | |||
| 6
    
        Alexandr Puzakov 24.11.11✎ 04:40 | 
        Was ist das "регулярные выражения"?     | |||
| 7
    
        ДенисЧ 24.11.11✎ 05:16 | 
        (6) Regular expressions     | |||
| 8
    
        Нуф-Нуф 24.11.11✎ 05:21 | 
        (7) ватафак регулар экспрешшнс?     | |||
| 9
    
        ДенисЧ 24.11.11✎ 05:22 | 
        (8) продаю уроки гугления. В 5 раз дороже СП.     | |||
| 10
    
        Kavar 24.11.11✎ 05:23 | ||||
| 11
    
        Гефест 24.11.11✎ 05:24 | 
        (8) Один из предметов лютого бешеного фапа одинэсников, переучившихся с труъ языков программирования     | |||
| 12
    
        Нуф-Нуф 24.11.11✎ 05:28 | 
        Прочитал. Анакуа?     | |||
| 13
    
        badboychik 24.11.11✎ 05:36 | 
        в чем проблема? создавай объект VBScript и юзай через него регулярки     | |||
| 14
    
        Alexandr Puzakov 24.11.11✎ 06:31 | 
        (10) ну и накуй это в 1Сине? 
  Реальные одноэсники используют полнотекстовый поиск! | |||
| 15
    
        IamAlexy 24.11.11✎ 06:35 | 
        (14) при загрузке например данных.. 
  берем к примеру загрузку выписки, и прикручиваем разбор назначения платежа. регэкспом находим все варианты написания номера счета по которому идет оплата причем с учетом лидирующих нулей и прочих "отсебятин" которые клиенты в назначениях пишут... профит! | |||
| 16
    
        Alexandr Puzakov 24.11.11✎ 06:42 | 
        (15) то же самое можно провернуть и с помощью полнотекстового поиска:
  - заливаем данные в служебные регистры сведений; - обрабатываем данные с применением полнотекстового поиска; - сохраняем данные в нужном виде; - очищаем регистры; - профит. | |||
| 17
    
        Escander 24.11.11✎ 06:50 | 
        (16) не всё, по подстроке дур найдёт в слове "дурачина" не найдёт в слове "полудурок".     | |||
| 18
    
        Alexandr Puzakov 24.11.11✎ 06:52 | 
        (17) все он найдет, надо уметь пользоваться и хоть иногда читать мануал.     | |||
| 19
    
        Escander 24.11.11✎ 06:54 | 
        (18) для вышеприведённого пример можно использовать шаблон "дур*", но как найти для слова "полудурок"? Штатных средств в ПП для этого нет.     | |||
| 20
    
        Alexandr Puzakov 24.11.11✎ 06:57 | 
        (19) у меня сейчас нет под рукой описания. Но там можно искать даже по слогам, стоящим в разных местах.     | |||
| 21
    
        Escander 24.11.11✎ 07:00 | 
        (20)но только если с этих слогов начинаются слова и только так, с произвольного места - фигушки... про ключевое слово "РЯДОМ" тоже знаю     | |||
| 22
    
        Alexandr Puzakov 24.11.11✎ 07:02 | ||||
| 23
    
        Alexandr Puzakov 24.11.11✎ 07:04 | 
        (21) перестаньте нести пургу, там точность поиска и область поиска задается. Это целый поисковик внутри платформы...     | |||
| 24
    
        Alexandr Puzakov 24.11.11✎ 07:07 | 
        Помимо ключевых слов там есть еще целый набор служебных операторов.     | |||
| 25
    
        Escander 24.11.11✎ 07:20 | 
        (24) будет СП под рукой - обоснуйте то, что пишите... а пока это слова     | |||
| 26
    
        Armando 24.11.11✎ 07:37 | 
        СЗОТ
  (24) в полнотекстовом поиске с такой проблемой не сталкивался? v8: Замена поисковых операторов в полнотекстовом поиске | |||
| 27
    
        IamAlexy 24.11.11✎ 07:58 | 
        (16) а теперь все тоже самое но  в типовой без создания специальных регистров сведений куда что то нужно заливать а потом индексировать...
  регекспом я на лету, при чтении файла, обработаю строку и все. никаких "служебных регистров" никакой "индексации" | |||
| 28
    
        IamAlexy 24.11.11✎ 08:01 | 
        (23) расскажи как ты поисковиком среди текста выцепишь конструкцию чуть более сложную чем "слог" ?
  ну например мне нужно найти в сплошном тексте номер по шаблону.. или все номера.. шаблон пусть будет XX/YYY-1-22-123/Й где вместо X - любые буквенные значения в англ. раскладке, вместо Y - любые значения в русской раскладке, ну и цифры ясен пень любые могут быть.. а в место Й - чонить из набора символов которых может быть пять-семь вариантов... обосрется твой полнотекстовый поиск в этой ситуации.. по полной оборсрется.. | |||
| 29
    
        mikeA 24.11.11✎ 08:01 | 
        (19) логично будет предположить шаблон "*дур*"
  хотя в описании про * сказано что это замена окончания слова, но на самом деле работает и в начале. по крайней мере поиск в СП по "*кумен*" находятся слова "документа", "ДокументВыборка" regexp конечно более тонкая штука, но с ней и разбираться на порядок дольше. я бы сказал это более низкого уровня инструмент (27) специальные регистры сведений это конечно жесть :) | |||
| 30
    
        IamAlexy 24.11.11✎ 08:02 | 
        (29) хз.. в типовой УТ игрался - фиг он так ищет...  только по "дур*" - по окончанию...     | |||
| 31
    
        IamAlexy 24.11.11✎ 08:05 | 
        а вообще конечно я проблемы не вижу.. 
  1С гибкая среда.. если нет чего штатного - вполне себе подключается внешняя приблуда какая и она слихвой компенсирует недостатки штатного функционала... | |||
| 32
    
        Escander 24.11.11✎ 08:06 | 
        (29)если что-то не документировано, то никаких гарантий что в следующем обновлении тоже будет работать... насчёт ищет в самом поиске а не в СП вы точно уверены? В СП вполне возможно индекс не стоковыми средствами построенный     | |||
| 33
    
        Escander 24.11.11✎ 08:06 | 
        (31) есть библиотеки для регулярных выражений?     | |||
| 34
    
        IamAlexy 24.11.11✎ 08:07 | 
        (33) ну в общем скорее да чем нет :)     | |||
| 35
    
        Escander 24.11.11✎ 08:07 | 
        (34)"имя, как его имя?"     | |||
| 36
    
        IamAlexy 24.11.11✎ 08:09 | 
        что то типа:
  Script = Новый COMОбъект("MSScriptControl.ScriptControl"); Script.Language = "javascript"; RegExp = Новый COMОбъект("VBScript.RegExp"); // создаем объект для работы с регулярными выражениями //Заполняем данные RegExp.MultiLine = Истина; // истина — текст многострочный, ложь — одна строка RegExp.Global = Истина; // истина — поиск по всей строке, ложь — до первого совпадения RegExp.IgnoreCase = Истина;// // истина — игнорировать регистр строки при поиске Массив = Новый Массив; Паттерн = "\b[0-9]{4}[-][0-9]{4}\b|\b[0-9]{8}\b|\b[0-9]{10}\b|\b[0-9]{11}\b|\b[0-9]{16}\b|\b[0-9]{6}[\\][0-9]{1}\b|\b[0-9]{6}[/][0-9]{1}\b"; Паттерн = Паттерн + "|№[0-9]{4}[-][0-9]{4}\b|№[0-9]{8}\b|№[0-9]{10}\b|№[0-9]{11}\b"; Паттерн = Паттерн + "|N[0-9]{4}[-][0-9]{4}\b|N[0-9]{8}\b|N[0-9]{10}\b|N[0-9]{11}\b"; Паттерн = Паттерн + "|[0-9]{2}[/][0-9]{4}[/][0-9]{5}[/][0-9]{6}\b"; // Паттерн = Паттерн + "|[a-z,A-Z]{3}[_][0-9]{7}\b"; // Паттерн = Паттерн + "|[0-9]{4}\D{3}[0-9]{9}\b"; // Паттерн = Паттерн + "|[0-9]{7}[/][0-9]{2}[-][0-9]{2}[-][0-9]{2}[-][0-9]{4}[/][а-я]+[/][0-9]{2}\b"; // Паттерн = Паттерн + "|[0-9]{7}[/][0-9]{5}[/][а-я]+[/][0-9]{2}\b"; Паттерн = Паттерн + "|[0-9]{7}[-][а-я]{2}[-][а-я]{3}[-][0-9]{2}\b"; Паттерн = Паттерн + "|[а-я]{2}[0-9]{7}[-][а-я]{2}[0-9]{4}[-][а-я]{3}[-][0-9]{2}\b"; // Паттерн = Паттерн + "|[а-я]{2}[0-9]{7}[-][а-я]{2}[0-9]{4}[-][а-я]{3}[-][а-я]{3}[-][0-9]{2}\b"; // Паттерн = Паттерн + "|[0-9]{5}[-][а-я]{2}\B"; // RegExp.Pattern = Паттерн; Matches = RegExp.Execute (СтрИсточник); Для каждого Item Из Matches Цикл //перебор результатов конеццикла; | |||
| 37
    
        mikeA 24.11.11✎ 08:10 | 
        (32) да хз как он там построен, в описании http://www.v8.1c.ru/overview/fulltext.htm был пример использования полнотекстового поиска в СП
  "В справочной системе 1С:Предприятия 8 также реализован полнотекстовый поиск, позволяющий использовать поисковые операторы И, ИЛИ, НЕ, РЯДОМ и др.." возможно там механизм другой, в самой базе не проверял. мне пока Найти хватает :) | |||
| 38
    
        IamAlexy 24.11.11✎ 08:10 | 
        (35) я бы назвал его "MSScriptControl" :)     | |||
| 39
    
        IamAlexy 24.11.11✎ 08:10 | 
        (37) везет тебе :).. хватает тебе "найти"...     | |||
| 40
    
        IamAlexy 24.11.11✎ 08:12 | 
        хотя вру - VBScript.RegExp  - вот он герой :)     | |||
| 41
    
        IamAlexy 24.11.11✎ 08:13 | 
        MSScriptControl это из другой оперы.. случайно закопипастилось     | |||
| 42
    
        Escander 24.11.11✎ 08:15 | 
        (36) ну через комы это не спортивно...     | |||
| 43
    
        andrewks 24.11.11✎ 08:17 | 
        (0)в виде куцехвостой замены можно и like заюзать.
  а так - jscript никто не отменял | |||
| 44
    
        IamAlexy 24.11.11✎ 08:19 | 
        (42) каким боком это не спортивно?
  ты еще скажи что лечить зубы у стороннего дантиста это неспортивно а надо самостоятельно прокачивать каждому скил стоматологии дабы самому себя лечить... работает же.. работает очень быстро... чем не вариант? | |||
| 45
    
        andrewks 24.11.11✎ 08:22 | 
        (44) тут можно только один аргумент привести - неуниверсальность ввиду возможности использования linux-серверов и клиентов     | |||
| 46
    
        IamAlexy 24.11.11✎ 08:22 | 
        +(44) хотя да.. пара служебных регистров которые при каждом поиске надо запонять, индексировать и очищать - вот оно.. спортивность во всей ее красе... параолемпийская спортивность.. по умственному развитию...     | |||
| 47
    
        Escander 24.11.11✎ 08:26 | 
        (44)это точно что быстро? В скорости именно и сомнения...     | |||
| 48
    
        Escander 24.11.11✎ 08:27 | 
        (45)ну там наверное как-то можно подтянуть тот-же пхп... нет в мире полной универсальности поэтому и приходится такое как-то переживать     | |||
| 49
    
        andrewks 24.11.11✎ 08:27 | 
        (48) с тебя примерчик     | |||
| 50
    
        Gesperid10 24.11.11✎ 08:31 | 
        (45) на лине нет регэкспов - ага     | |||
| 51
    
        IamAlexy 24.11.11✎ 08:32 | 
        (47) вот то что я приводил сидит на самом деле в цикле который грузит реестры по 5-7 тысяч строк...     | |||
| 52
    
        IamAlexy 24.11.11✎ 08:33 | 
        (45) еще один повод отказаться от ущербного линя в пользу православной полнофункциональной винды...     | |||
| 53
    
        andrewks 24.11.11✎ 08:33 | 
        (50) я про COMОбъект говорил, вообще-то     | |||
| 54
    
        mikeA 24.11.11✎ 08:37 | 
        (37)+ вы будете смеяться, но в базе "*кумен*" тоже работает     | |||
| 55
    
        Escander 24.11.11✎ 08:39 | 
        (51не, то что сам вызов и отработка должны работать - это понятно, а вот что со скоростью создания объекта?
  (52) есть другое мнение! (49)да, щас всё брошу | |||
| 56
    
        IamAlexy 24.11.11✎ 08:44 | 
        (55) эээ даже не замерял.. учитывая что ВСЯ загрузка файла идет очень быстро.. то есть по сути меньше минуты - даже не заморачивался с замером скорости создания объекта... 
  по поводу другого мнения - тут дело такое: для специфичных задач используются специфичные инструменты.. нет специфичных задач - можно пользоваться любым г.вном.. есть - будь добр приобрети качественны инструмент это как с сверлением дырок в стенах... ясен пень что перфоратор дорог.. но если ты зарабатываешь тем что в день по 100 дырок сверлишь тебе ударная дрель ну никак не подойдет.. не смотря на то что она тоже типа может дыру продолбить в стене... и говорить что буры для перфоратора плохие ибо их в ударную дрель невпихнуть по меньшей мере тупо... хочешь долбить бурами - купи перфоратор.. | |||
| 57
    
        andrewks 24.11.11✎ 08:46 | 
        по поводу линя - использование утилит консоли типа grep - тут всё ясно.
  а можно ли там сгенерить jscript-файл, и выполнить его, получив результат, по примеру com в выне? | |||
| 58
    
        xReason 24.11.11✎ 08:51 | 
        Да когда 1С выкидывает ошибки, то я всегда использую регулярные выражения     | |||
| 59
    
        Jolly Roger 24.11.11✎ 08:55 | 
        (58) а для чего?     | |||
| 60
    
        IamAlexy 24.11.11✎ 08:57 | 
        (59) пример:  сижу себе сегодня в три утра.. делаю отчет который выводит годовой календарь загрузки рекламных точек (запрос выводит порядка 300 000 строк), ну там всякие оформления делаю чтобы занятые дни по точкам показать...
  короче не плохо так закопался в отчете.. делал еге часа три... и тут бабах - вырубается платформа.. причем на ровном месте - когда все уже готово было и я просто варианты отчетов мастериал... регулярных выражений много, много вспомнил... некоторые даже в слух произнес.. | |||
| 61
    
        Alexandr Puzakov 24.11.11✎ 09:01 | 
        (46) ага, как всегда, использовать стандартные средства (хотя бы ознакомиться со всеми возможностями) не спортивно, спортивно прибегать к левым костылям.
  Для подавляющего большинства подобных задач полнотекстового поиска хватит за глаза, а для спецефических задач можно и костыль прикурутить. Но и не стоит забывать о лицензионности. P. S. чем плохо выделение нескольких отдельных регистров сведений для подобных задач? | |||
| 62
    
        IamAlexy 24.11.11✎ 09:03 | 
        (61) еще раз.. типовая. внешняя обработка по загрузке из клиент банка.. ну куда ты там свои регистры будешь прикручивать?
  а если у типовой пара тройка распределенных узлов есть? | |||
| 63
    
        IamAlexy 24.11.11✎ 09:04 | 
        (61) мы может про разные вещи говорим.. 
  я это все к тому что если есть возможность НЕ снимать конфу с поддержки - то как раз спортивно, правильно, канонично, стандартно и тд и тп - будет именно НЕ снимать конфу с поддержки.. | |||
| 64
    
        badboychik 24.11.11✎ 09:07 | 
        что за чушь про полнотекстовой поиск?? регулярные выражения вообще для другого нужны - для парсинга текста из внешних источников или пользовательских данных. Какие нафиг индексы вы предлагаете городить, если надо например из текста вытащить все e-mail-ы ??     | |||
| 65
    
        Jolly Roger 24.11.11✎ 09:07 | 
        (60) я так понял, (58) парсит текст исключения. хотелось бы понять в чем профит...     | |||
| 66
    
        Jolly Roger 24.11.11✎ 09:08 | 
        (64) да забей, у него абракадабра головного мозга...     | |||
| 67
    
        IamAlexy 24.11.11✎ 09:08 | 
        (65) ты не так понял.. 
  пример использования регулярных выражений при сбоях 1С описан в (60) | |||
| 68
    
        Jolly Roger 24.11.11✎ 09:10 | 
        (67) ы...     | |||
| 69
    
        apokrit 24.11.11✎ 09:10 | 
        (0) Если нужно только проверить соответствует или нет - можно извратиться и XDTO заюзать (там можно установить ограничение вида образец - это и есть regexp)     | |||
| 70
    
        Stim213 24.11.11✎ 09:12 | 
        >>запрос выводит порядка 300 000 строк
  Это фигня. Вот если бы запрос был в 300 000 строк и свет отключили перед самым сохранением.. | |||
| 71
    
        Stim213 24.11.11✎ 09:14 | 
        (69) вобщем, я так понимаю, на этот отечественный авто в качестве системы ABS можно использовать только собственную ногу, тормозящую по асфальту, либо приварить ABS из других иномарок     | |||
| 72
    
        Alexandr Puzakov 24.11.11✎ 09:15 | 
        (63) а зачем конфу с поддержки снимать? Достаточно включит возможности изменения.
  (66) ПНХ. Моя голова не нуждается в твоих оценках. | |||
| 73
    
        IamAlexy 24.11.11✎ 09:15 | 
        (70) всеранво неприятно.. там рутина.. и оформление вариантов.. и не интересно по второму разу делать (а на самом деле по третьему ибо в пятницу сдох винт вместе с готовым отчетом и по этому пришлось его заново делать)     | |||
| 74
    
        Alexandr Puzakov 24.11.11✎ 09:17 | 
        (64) емейлы на раз-два вытащатся при помощи встроенного языка.     | |||
| 75
    
        Escander 24.11.11✎ 09:44 | 
        (60) хороший пример... бывает...     | |||
| 76
    
        mikeA 24.11.11✎ 09:54 | 
        (60) save early, save often... у тебя же Снегопат и там вроде autosave есть.     | |||
| 77
    
        badboychik 24.11.11✎ 10:26 | 
        (74) Прикалываешься или серьезно? Интересно посмотреть на алгоритм и засечь время написания. Значит вам проще нагородить 20 строк на встроенном языке вместо одной короткой команды? Что за бред то? Типичный пример одинэсия головного мозга...     | |||
| 78
    
        VVi3ard 24.11.11✎ 10:31 | 
        (64) Абсолютно прав, у оппонентов ТС я вижу полное непонимание сути RegEX и их отличие от полнотекстового поиска в БД. 
  Мне очень нравится полнотекстовый поиск и я рад что 1С добавила его поддержку в платформу, и я использую его в своих задачах. Но в то же время если попытаться выйти за рамки стандартных учетных задач то приходится использовать RegEX и если 1С позиционирует свою Платформу как Платформу то было бы неплохо предусмотреть возможность этого механизма на уровне ЛЕВ, ПРАВ, включить описание языка в справку. Мне не хватает например шаблонов для полей ввода основанных на RegEx так как в моей предметной области есть множество различных данных которые отлично шаблонизируются. Самое главное отличие RegEX от FTS заключается в том что FTS предназначен для поиска в базе, будь он хоть в 5 раз лучше чем RegEX он бесполезен когда необходимо распарсить текст который у тебя в переменной (Пришел как ответ от WEB сервиса, веден пользователем, получен по EMAIL) Я солидарен с ТС и я считаю что и COM объект и "Специальный регистр" это сплошные костыли. В то же время Платформа 1С весьма технологична и включает в себя множество различных технологий(XML,WEB сервисы, ADO(в последних релизах)) и меня лично это радует. Так вот RegEX это такая же мощная технология заключенная в одном операторе и она достойна того чтобы быть представленной в платформе. Читая Мисту раз за разом не перестаю натыкаться на то что мистяне относятся к платформе как к "запускалке" типовых конфигураций а не как к современной продвинутой платформе для разработки корпоративных систем. | |||
| 79
    
        ptiz 24.11.11✎ 10:35 | 
        (77) Запросом 
  ПОДОБНО "%_@_%.__%" Подойдет? | |||
| 80
    
        VVi3ard 24.11.11✎ 10:43 | 
        (79) Я не думаю что хорошая идея хранить в базе мусор чтобы потом их этого мусора получать Email, стандартная здравая постановка задачи выглядит так: Из входящего мусора извлечь крупицы нужной информации и поместить её в базу.
  Если коротко FTS - Ищет, RegEX ВЫДЕЛЯЕТ и ЗАМЕНЯЕТ. Эти технологии взаимодополняющие друг друга. Если мне нужен поиск по БД то использовать RegEX глупо, в то же если мне нужно Получить массив определенных кусков текста или заменить на другие куски то использовать для этого FTS не менее глупо. Эти технологии для разных задач. | |||
| 81
    
        Alexandr Puzakov 24.11.11✎ 10:47 | 
        (77) я всегда был и буду за уместность. Что-то мне подсказывает, что перед использованием этой приблуды также само придется и с кодом повозиться, и интерфейс разработать.
  А еще к платформе можно прикрутить ядро от гугл-поисковика, но только это чревато колоссальными денежными и временными затратами... Если какая-то операция одноразовая или ужасно редкая, то вполне целесообразно за 20 минут нагородить тормозного кода, чем потратить день для написания хорошего кода. Оптимизацией надо заниматься только там, где это действительно целесообразно, и где это заказчик заметит. | |||
| 82
    
        sergeante 24.11.11✎ 10:52 | 
        (4) (5) Не бздите. В дельфи есть сторонний класс TRegExpr http://yandex.ru/yandsearch?text=TRegExpr&lr=23     | |||
| 83
    
        Alexandr Puzakov 24.11.11✎ 10:53 | 
        (77) мне вот интересно, неужели ты ежедневно распарсиваешь большие объемы текста с целью извлечения оттуда электронных адресов? Что ты вообще делаешь в 1С?     | |||
| 84
    
        badboychik 24.11.11✎ 10:59 | 
        (81) Если кроме 1С ничего не знать, можно только и делать, что сидеть писать километры кода и придумывать заново давно придуманные алгоритмы, когда уже готовые решения лежат в пяти минутах поиска. 
  Вам наверно дай экскаватор, вы возьмете лопату и будете вручную копать котлован, потому что "так надежнее и привычнее" | |||
| 85
    
        badboychik 24.11.11✎ 11:02 | 
        (81) >>> Что-то мне подсказывает, что перед использованием этой приблуды также само придется и с кодом повозиться, и интерфейс разработать. 
  Это ЧТО-ТО жестоко тебя обманывает | |||
| 86
    
        sergeante 24.11.11✎ 11:02 | 
        (84) +100, с помощью регулярок я какие алгоритмы только не реализовывал. Да вы консоль запросов откройте и посмотрите сколько раз там регэкпы используются     | |||
| 87
    
        sergeante 24.11.11✎ 11:05 | 
        (81) ты вопще о чём говоришь счас??     | |||
| 88
    
        Alexandr Puzakov 24.11.11✎ 11:08 | 
        (84) там где достаточно покопать пять минут, я возьму лопату и покопаю, а не стану пригонять экскаватор. Если требуется вырыть котлован, то пригоню экскаватор.
  Не ну ладно у Алексея криво доработанный/настроенный клиент-банк, что сразу после загрузки данных налетает костыль с подвешенной ВК и начинает править данные, а после этого прибегает уборщица тетя Маша и убирает за этими делами опилки и стружку, ну а у вас-то что с вашей учетной системой, что приходится из текста выдирать электронные адреса? Платформа 1С:Предприятие предназначена для экономических учетных систем. И я обеими руками за то, чтобы использовать ее по назначению. | |||
| 89
    
        romix 24.11.11✎ 11:09 | ||||
| 90
    
        sergeante 24.11.11✎ 11:10 | 
        (83) элементарный пример из практики. Есть некий девайс, который тестирует некое оборудование и скидывает репорт в HTM формате. В репорте сотни параметров среди прочего текста, которые необходимо распарсить и перенести в 1с. Если ты будешь писать алгоритм парсера на 1с, то ты посинеешь, поседеешь и уволишься. Или распарсить регулярками. Времени уйдёт в 100 раз меньше, универсальности будет на 1000% больше. Время на доработку регулярок (если формат чуть изменился в связи со сменой прошивки девайса) уйдёт 15 минут.     | |||
| 91
    
        badboychik 24.11.11✎ 11:11 | 
        (79)Запросом ПОДОБНО "%_@_%.__%" Подойдет?
  Не пойдет. Запросом к чему? К текстовому файлу или к переменной запросом тоже можно обратиться? И этот запрос наверно даже строчку "Вася@рам!блер@кгам.ру" как корректное мыло вернет? | |||
| 92
    
        sergeante 24.11.11✎ 11:12 | 
        +(90)(83) а ты про "полнотекстовый поиск", наивный вьюноша, пять минут назад услышал про регулярные выражения, и с пеной у рта начал доказывать что они не нужны, ога.     | |||
| 93
    
        rs_trade 24.11.11✎ 11:12 | 
        Прикол. Оказывается столько народу даже не слышало о рег. выражениях. И эти люди называют себя программистами. ))     | |||
| 94
    
        sergeante 24.11.11✎ 11:13 | 
        (93) и я о том. Пипец, программистишки.     | |||
| 95
    
        Stim213 24.11.11✎ 11:13 | 
        (88)ситуация в (28) является довольно частой при использовании систем 1С как раз в качестве "экономических учетных систем"     | |||
| 96
    
        VVi3ard 24.11.11✎ 11:14 | 
        (81) Для FTS возится приходится больше. 
  Возни с RegEX не более чем с функцией ЛЕВ(), ПРАВ(). Для использования в качестве шаблона для поля ввода уже есть поля маски, достаточно добавить в это поле проверку на RegEX ну или добавить еще одно поле, контроль ввода пользователя через RegEx это стандартная мировая практика. И вообще эта технология популярна, востребована, и оценена всем мировым сообществом разработчиков, по этой технологии есть книги, учебники. "Если какая-то операция одноразовая или ужасно редкая, то вполне целесообразно за 20 минут нагородить тормозного кода, чем потратить день для написания хорошего кода. Оптимизацией надо заниматься только там, где это действительно целесообразно, и где это заказчик заметит." Ты не хуже меня знаешь что Программирование это такая область в которой от того редкая операция или нет ничего не зависит если такая потребность есть то ты должен реализовать код который эту потребность будет закрывать. Ты можешь сделать быдло код который будет медленно работать и в котором потенциально будет множество ошибок, или написать нормальный код без излишних заморочек который понятен и легко сопровождаем. Мне кажется профессионал должен всегда выбирать второй вариант. И я уверен что если у тебя возникнет задача в которой по соотношению затраты/результат будет выгоднее использовать RegExp ты воспользуешься этим инструментом, т.к. это выбор профессионала. Сейчас для этого придется воспользоваться внешней компонентой что в целом не плохо за исключением того что этого компонента например на 2000 Windows нет(я сам сталкивался). Еще раз пойми что RegEXP это технология признания во всем мире, существует масса библиотек с готовыми шаблонами. С моей конфигурации RegExp используется для: Сторонние разработки: 1. Построение дерева запросов 2. Синтаксис помощник для режима "Предприятие" Мои разработки: 1. Правила парсинга логов ICQ и добавление на основе логов задач в систему. 2. В правилах импорта данных из каталога стоит разбор пути и формирование структуры справочника. 3. Разбор адресов в виде ([ул,улица,Улиц] насп.Название и.т.п) т.к. в регионах кавказа гос структуры дают данные в екселе набранном руками. 4. Разбор сумм в виде 13руб25к 5. Разбор писем от контрагентов 6. Целый блок задач связанных с работой с Яндекс картами web. В системе Help Desk используется разбор "логов" хранилища и на основе формируется описание релиза и задание на тестирование | |||
| 97
    
        sergeante 24.11.11✎ 11:14 | 
        (88) "Платформа 1С:Предприятие предназначена для экономических учетных систем. И я обеими руками за то, чтобы использовать ее по назначению."
  Упал под стол. | |||
| 98
    
        VVi3ard 24.11.11✎ 11:16 | 
        Подвел CTRL + ENTER список могу продолжить но это бессмыслено, есть такое выражение: "Спорить о вкусе устриц нужно с теми кто их ел". 
  К тому что написано добавить нечего, ушел работать :) | |||
| 99
    
        Alexandr Puzakov 24.11.11✎ 11:18 | 
        (90) нет, я уволюсь сам. Как только узнаю, что на 1Ске придется городить то, для чего она совершенно не предназначена.
  Еще какие аргументы будут? Что стандартными средствами 1С очень сложно преобразовывать отсканированное изображение в текст? Повторяю еще раз: 1С для учетных систем. | |||
| 100
    
        sergeante 24.11.11✎ 11:18 | 
        (98) согласен , а вьюноша пусть "полнотекстовым поиском" парсит ;)     | |||
| 101
    
        sergeante 24.11.11✎ 11:19 | 
        (99) никаких аргументов больше. Пользуйся чем хочешь.     | |||
| 102
    
        rs_trade 24.11.11✎ 11:19 | 
        (99) напиши плиз список того что можно делать в 1С, а чего нельзя. мы будем на него ориентироваться.     | |||
| 103
    
        Stim213 24.11.11✎ 11:22 | 
        (102) +100
  самое главное - придумать причину, по которой это не нужно.. | |||
| 104
    
        Alexandr Puzakov 24.11.11✎ 11:23 | 
        (96) профессионал не будет тратить целый день на "пустую" оптимизацию. Всегда необходима целесообразность, и внимание всегда нужно уделять только тем вещам, которые больше всего того требуют.     | |||
| 105
    
        Лефмихалыч 24.11.11✎ 11:23 | 
        (0)
  
  | |||
| 106
    
        badboychik 24.11.11✎ 11:23 | 
        наверно лет 10 назад такие же люди как Puzakov утверждали что обработка XML не относится к сфере применения 1С.
  А потом появилась V7plus а потом в 1С 8 все появилось в платформе | |||
| 107
    
        Поручик 24.11.11✎ 11:25 | 
        (82) Не 3.14стите не по делу, речь идёт о встроенной поддержке регулярок в упомянутых языках. О сторонних костылях, зачёркнуто, библиотеках только дебил не знает.     | |||
| 108
    
        Alexandr Puzakov 24.11.11✎ 11:25 | 
        Я прекрасно знаю, что городителей херни на 1Ске столько, что их хоть штабелями укладываи...     | |||
| 109
    
        sergeante 24.11.11✎ 11:28 | 
        (107) Так и знал, что ктото по этому поводу залупится.
  Дельфи и написан на объектном паскале, точнее на самом дельфи. И все классы написаны на дельфи и скомпилированы. Так чем скомпиленный класс регулярок отличается от самой дельфи? | |||
| 110
    
        Поручик 24.11.11✎ 11:29 | 
        (106) Я бы сказал так: лет 10 назад многие утверждали, что обработка XML не относится к сфере применения в 1С. А потом появилась потребность в обмене или переносе данных между системами и внезапно выяснилось, что XML для этих целей прекрасно подходит.     | |||
| 111
    
        rs_trade 24.11.11✎ 11:29 | 
        (108) Не следовало бы называть херней все то, в чем ты не разбираешся. лол.     | |||
| 112
    
        Поручик 24.11.11✎ 11:31 | 
        (109) Отличается тем, что библиотеку надо откуда-то дёргать и подключать к проекту, попутно вылавливая баги.     | |||
| 113
    
        sergeante 24.11.11✎ 11:34 | 
        (112) не буду спорить. Практически все программы состоят из сотен библиотек "от куда-то дёрнутых". Но это оффтоп, предлагая про дельфи не продолжать.     | |||
| 114
    
        Alexandr Puzakov 24.11.11✎ 11:36 | 
        (111) я это херней не называю, а призываю на платформе для учетных систем реализовывать то, для чего она заточена и предназначена. Через месяц какой-нибудь чудик захочет заниматься обработкой графики и захочет скрестить 1С с графическим редактором. Скорее всего начнутся разговоры, как это все ужасно неудобно, и как плохо реализуется это на 1С...
  Но значит ли это, что платформа плохая? Нет! Это значит, что товарищ профан и использует инструмент не по назначению. | |||
| 115
    
        smaharbA 24.11.11✎ 11:37 | 
        (114) все уже давно реализовано     | |||
| 116
    
        smaharbA 24.11.11✎ 11:37 | 
        1С это как бы не учетная система.     | |||
| 117
    
        GenV 24.11.11✎ 11:38 | 
        (114) Транспарант сделай. И нас селезневку.     | |||
| 118
    
        Лефмихалыч 24.11.11✎ 11:38 | 
        (112) не аргумент. Программу, которая с криком падает при запуске или молча с улыбкой делает совсем не то, что должна, можно написать вообще без библиотек     | |||
| 119
    
        smaharbA 24.11.11✎ 11:39 | 
        (117) как мне при наличие плотформы развернуть учетную систему ?     | |||
| 120
    
        smaharbA 24.11.11✎ 11:39 | 
        платформы     | |||
| 121
    
        Alexandr Puzakov 24.11.11✎ 11:40 | 
        (116) это платформа для создания и эксплуатации учетных систем.     | |||
| 122
    
        Alexandr Puzakov 24.11.11✎ 11:41 | 
        (117) а мне-то это зачем?     | |||
| 123
    
        Лефмихалыч 24.11.11✎ 11:42 | 
        (119) 1С - это не платформа. Точнее учетная система 1С - это не только платформа. Ты или путаешься или сознательно подменяешь понятия     | |||
| 124
    
        rs_trade 24.11.11✎ 11:42 | 
        (114) а ней и реализовывают то, для чего она заточена и предназначена. то есть для автоматизации бизнеса. а как технически реализуются те или иные задачи дело десятое.     | |||
| 125
    
        smaharbA 24.11.11✎ 11:42 | 
        (121) т.е. платформа 1с не является учетной системой ?
  а SQL сервер тогда что - хранилище баз данных для эксплуатации учетных систем ? | |||
| 126
    
        Поручик 24.11.11✎ 11:44 | 
        1С это как бы средство для построения и управления учетными системами. 
  (121) Да, платформа это не учетная система. Это как операционная среда для выполнения чего-то. | |||
| 127
    
        smaharbA 24.11.11✎ 11:44 | 
        (123) у меня есть 1С:Библиотека - как мне развернуть учетную систему для производства презервативов ?     | |||
| 128
    
        rs_trade 24.11.11✎ 11:45 | 
        (126) Платформа это учетная система. Для метаданных. Нет? Все зависит уровня абсртакции.     | |||
| 129
    
        GenV 24.11.11✎ 11:46 | 
        (122) Ты ж агитатор.
  (119) ?? | |||
| 130
    
        smaharbA 24.11.11✎ 11:48 | 
        (129) промазал я     | |||
| 131
    
        Поручик 24.11.11✎ 11:49 | 
        (128) Угу. Как Windows или Unix, которые сами по себе являются набором программ, которые служат для запуска и экплуатации других программ, которые ... И всё заверте....     | |||
| 132
    
        Alexandr Puzakov 24.11.11✎ 11:52 | 
        Связывая платформу с конфигурацией мы получаем учетную систему! Не инженерную систему, не систему управления кораблем, не систему для сложных вычислений... 
  Так вот если появилась потребность в создании инженерной или еще какой системы, то стоит остановиться и подумать, а правильно ли я поступаю, ИСПОЛЬЗУЯ 1С:ПРЕДПРИЯТИЕ? | |||
| 133
    
        badboychik 24.11.11✎ 11:54 | 
        Alexandr Puzakov, открою БАААЛЬШОЙ секрет - на 1С написаны не только торговля и бухгалтерия. Зайди на сайт v8.1c.ru , посмотри отраслевые решения. Там и логистика и таксомоторный парк есть, с интеграцией GoogleMaps прям окне 1С 
  >>>Через месяц какой-нибудь чудик захочет заниматься обработкой графики и захочет скрестить 1С с графическим редактором Хаха :) так это уже реализовано )) С помощью .NET-Bridge - есть конфигурация для оконных компаний где окна рисуются с помощью GDI+ на форме в 1С | |||
| 134
    
        Stim213 24.11.11✎ 11:55 | 
        (132) чувак, ты не прав. Регулярные выражения - это задача, которая встречается везде - и в учетных системах и в инженерных     | |||
| 135
    
        rs_trade 24.11.11✎ 11:57 | 
        (132) то есть используя в разработке внешние технологии (кстати интеграцию с которыми платформа поддерживает штатно), моя нетленка превращается из учетной системы в инженерную?     | |||
| 136
    
        Лефмихалыч 24.11.11✎ 11:59 | 
        (124) у тебя есть нож для бумаги, как с его помощью резать мясо?
  ответ: ни как, но из этого не следует, что твой нож не является ножом | |||
| 137
    
        Alexandr Puzakov 24.11.11✎ 11:59 | 
        (134) у меня почему-то не встречается. Как только возникает потребность в каком-либо кривогорожении я останавливаюсь и задумываюсь, так вот оказывается, что в большинстве случаев эти извращения просто-напросто лишние и можно прекрасно обойтись без них.     | |||
| 138
    
        Поручик 24.11.11✎ 11:59 | 
        (134) Напиши пожелание по поводу регулярок девелоперам 1С. Прикольно будет, если в ответ на просьбу обосновать, ты сможешь выдать только нечленораздельное, а штоб було.     | |||
| 139
    
        Лефмихалыч 24.11.11✎ 12:01 | 
        (127) кстати, если так рассуждать, то учетных систем в природе не существует     | |||
| 140
    
        Alexandr Puzakov 24.11.11✎ 12:02 | 
        (133) опыт использования этих поделок есть?     | |||
| 141
    
        Лефмихалыч 24.11.11✎ 12:03 | 
        (137) это просто означает, что со сложными задачами ты не сталкивался ни когда     | |||
| 142
    
        badboychik 24.11.11✎ 12:03 | 
        (138) откажут, даж не потому что не надо, а потому что их итак легко использовать. В чем особая разница между 
  РВ = Новый РегулярноеВыражение(); и РВ = Новый COMОбъект("VBScript.RegExp"); | |||
| 143
    
        Alexandr Puzakov 24.11.11✎ 12:05 | 
        (141) опишите задачу, которая в Вашем понимании сложная.     | |||
| 144
    
        sergeante 24.11.11✎ 12:06 | !С - это инструмент, РегЭкспр - это инструмент, СКЛСервер - инструмент, подключаемая Чтототам.dll - инструмент, ... Объединяя инструменты мы делаем конечный продукт. Не упирайся рогом, не ограничивай себя из принципа одним только молотком, чтобы сделать стул может понадобиться ещё и стамеска с отвёрткой. | |||
| 145
    
        badboychik 24.11.11✎ 12:07 | 
        (140)просвещайся http://infostart.ru/public/70859/ , http://atechnology.ru/
  "Архитектура Elisy .Net Bridge оказалась на практике достаточно хорошей. Она позволяет подключать к 1С зарубежные .Net-компоненты, разработчики которых скорее всего даже не слышали о существовании 1С:Предприятие. " "В конечном счете, выигрывает только пользователь, которому не нужно переключаться из одного приложения в другое, как это могло быть в традиционном исполнении до интеграции 1С+.Нет. Система упрощена за счет отсутствия механизмов импорта/экспорта в/из 1С, которые предполагаются в случае 2х отдельных приложений." | |||
| 146
    
        smaharbA 24.11.11✎ 12:09 | 
        почему создатели ос и прочих утилит не остановились когда решили найти вхождение в текст ?     | |||
| 147
    
        Alexandr Puzakov 24.11.11✎ 12:11 | 
        (144) я не призываю отказываться напрочь от скрещивания 1С с чем-то там, если Вам хочется, то всегда пожалуйста. Но 90 процентов УЧЕТНЫХ задач совершенно не требуют никаких извращений, и распрекрасно реализуются средствами платформы. Я стараюсь придерживаться этих 90%...     | |||
| 148
    
        rs_trade 24.11.11✎ 12:12 | 
        (143) Не то что бы сложная задача. Но тем не менее. На этой неделе пришлось делать.  Есть база контрагентов с не структурироваными адресами. Необходимо для всех адресов получить почтовые индексы и район г.Москвы. Вперед. | |||
| 149
    
        Alexandr Puzakov 24.11.11✎ 12:15 | 
        (148) чего вперед-то? Базу показывай. Или хочешь чтобы я у пациента вслепую резал? Не, это не мой метод.     | |||
| 150
    
        VVi3ard 24.11.11✎ 12:16 | 
        (142) В том что VBScript.RegExp в системе может просто не быть :) С чем неоднократно сталкивался в своей работе.     | |||
| 151
    
        sergeante 24.11.11✎ 12:16 | 
        (147) когда-нибудь ты таки упрёшься в эти оставшиеся 10%     | |||
| 152
    
        badboychik 24.11.11✎ 12:18 | 
        (150) как так? оно же в винде вшито     | |||
| 153
    
        sergeante 24.11.11✎ 12:18 | 
        (150) ни разу не сталкивался     | |||
| 154
    
        Alexandr Puzakov 24.11.11✎ 12:19 | 
        (151) может и упрусь. Но надеюсь не придется.     | |||
| 155
    
        sergeante 24.11.11✎ 12:19 | 
        (148) ну приведи ему пяток строчек, пусть алгоритм разбора сваяет     | |||
| 156
    
        rs_trade 24.11.11✎ 12:20 | 
        (149) вот тебе база адресов  Москва, Карамышевский (проезд), 6 Москва, Большая Марфинская, 1, корпус 2 Раменский р-н, д.Вялки, Напольный проезд, 6 Москва, Lobachevskogo, 100 Москва, Ак Варги, 28 | |||
| 157
    
        Поручик 24.11.11✎ 12:20 | 
        (142) Разница немного есть.
  Недостатки библиотеки VBScript RegExp: 1. является платформозависимой; 2. требуется наличие библиотеки VBScript (vbscript.dll) версии 5.0 и выше на клиентском компьютере (поставляется в составе Windows версии 98 и выше); 3. объект RegExp разбивается на другие объекты (MatchCollection, SubMatches), которые нужно обрабатывать в отдельных циклах; 4. не поддерживается Lookbehind утверждение (assertion); 5. при ошибке в выражении (Pattern) возникает не информативное исключение с текстом ошибки "OLE Error 800A1399". Пруф: http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=1062 | |||
| 158
    
        rs_trade 24.11.11✎ 12:21 | 
        (156) У этих адресов надо проставить почтовый индекс и район Москвы. Как будешь делать?     | |||
| 159
    
        Alexandr Puzakov 24.11.11✎ 12:27 | 
        (158) размеры базы какие? Сколько адресов?     | |||
| 160
    
        rs_trade 24.11.11✎ 12:28 | 
        (159) 10 тысяч     | |||
| 161
    
        smaharbA 24.11.11✎ 12:29 | 
        для работы любой учетной системы ненужны окна и кнопки, вполне достаточно консоли     | |||
| 162
    
        Alexandr Puzakov 24.11.11✎ 12:31 | 
        (160) в виде текста хранится информация?     | |||
| 163
    
        badboychik 24.11.11✎ 12:32 | 
        (157) второй пункт сложно назвать "требованием", это часть любой винды сейчас
  платформозависимость - если знаешь что у тебя сервер на линухе, можно юзать например вызов grep,awk,sed,perl и т.д. что больше нравится В любом случае, хорошо если регэкспы появились бы в 1С 9.0 :) | |||
| 164
    
        VVi3ard 24.11.11✎ 12:32 | 
        (152) Сервер может быть и не на винде, а клиент тонкий. 
  В 2000 серверном нет этого компонента, ставится отдельно: WindowsXP-Windows2000-Script56-KB917344-x86-enu.exe | |||
| 165
    
        smaharbA 24.11.11✎ 12:34 | 
        (164) эта компонента ставится отдельно только в вин 98     | |||
| 166
    
        smaharbA 24.11.11✎ 12:35 | 
        + да и то не всегда
  в 2000 был не 5.6 | |||
| 167
    
        badboychik 24.11.11✎ 12:35 | 
        (164) Ну мягко говоря Win2000 слегка устарел )) 
  А на чем крутится сервер - можно проверку сделать. | |||
| 168
    
        VVi3ard 24.11.11✎ 12:41 | 
        (163) Или просто добавить нормальную поддержку технологии на уровне платформы.
  т.е. вариантов море, можно свой ВК скомпилировать и как dll подгружать. Вопрос не втом почему нельзя в 1С использовтать RegExp, если нужно то можно использовать. Вопрос в том чтобы добавить поддержку на уровне платформы без костылей, внешних компонент, чтобы я мог в конфигураторе для поля ввода использовать выражение и.т.п. Т.е. просто нормальной спокойной работы, это в меру трудоемко, это нужно, это технологично. (167) Однако все на нем жужжит и вертится и по сей день. У меня с заказчиками есть негласное соглашение, без их предложений я не лезу в их дела они не лезут в мои. Если у него установлен 2000 сервер значит на то есть причины. Вообще одумайтесь о чем спор идет, на предложение включить гибкий и мощный механизм оппоненты ТС дают советы какие костыли можно применить и как обходить ошибки связанные с костылями. И я и ТС мы прекрасно знаем как обходить проблемы и какие костыли использовать. Но мне как разработчику хотелось бы чтобы гибкий и мощный механизм был частью системы. | |||
| 169
    
        rs_trade 24.11.11✎ 12:42 | 
        (162) Да. В реквизите с типом строка.     | |||
| 170
    
        sergeante 24.11.11✎ 12:51 | 
        (168) я в общем-то, "за". За интеграцию механизма регулярок в платформу, почему нет? Но тут срач пошёл по поводу Использовать регэкспы или не использовать. Чесно говоря я не понимаю бараньей упёртости господина Alexandr Puzakov против этого. Тогда уж вопще давайте откажемся от внешних компанент, и останемся в голой 1С на едине с самим собой.     | |||
| 171
    
        Хранимая Процедура 24.11.11✎ 12:51 | 
        >Повторяю еще раз: 1С для учетных систем.
  т.е. это как отпущение грехов, в т. ч. и отсутвие нормальных массивов Зы. Visual Basic и VBA тоже для экономических задач придуманы. Но там это все есть | |||
| 172
    
        rs_trade 24.11.11✎ 12:53 | 
        (170) А мы сейчас посмотрим как господин Alexandr Puzakov  решит задачу из (148) только средствами 1С.     | |||
| 173
    
        Хранимая Процедура 24.11.11✎ 12:53 | 
        для обработки больших массивов текстов таки есть смысл написать на чем-то получше 1С     | |||
| 174
    
        sergeante 24.11.11✎ 12:54 | 
        (172) да тут 
  в самом первом приблизительном варианте регулярка в нежадном режиме .+(.+),(.+)$ match 1 - Улица match 2 - Дом | |||
| 175
    
        rs_trade 24.11.11✎ 12:55 | 
        (174) здесь дело не в регулярках. а в использовании внешних технологий как таковых.     | |||
| 176
    
        sergeante 24.11.11✎ 12:55 | 
        (174) это уже даёт чтото, Разумеется без прыжков и ужимок не обойтись, но дорабатывать регулярку куда как проще чем городить циклы с поиском по подстроке     | |||
| 177
    
        sergeante 24.11.11✎ 12:56 | 
        (175) согласен, спор об этом и идет     | |||
| 178
    
        Alexandr Puzakov 24.11.11✎ 12:59 | 
        (169) в поле представления в регистре адресов лежит?     | |||
| 179
    
        rs_trade 24.11.11✎ 13:01 | 
        (178) да. к чему эти вопросы все? не принципиально где храниться строка. индекс с районом как получать будешь?     | |||
| 180
    
        Хранимая Процедура 24.11.11✎ 13:14 | 
        для парсинга адресов есть готовые решения. В свое время нагугливал беспалтные решения на Python и Java и платные ActiveX и сервисы (http://address-parser.com/index.php?page=address_parser_technology)     | |||
| 181
    
        Alexandr Puzakov 24.11.11✎ 13:14 | 
        (179) как это не принципиально? Вот мы худо-бедно выяснили, что это дело лежит в типовой. А там уже есть готовые функции разбора строки в массив подстрок, и готовые процедуры для работы с адресным классификатором... И это даже не вспоминая о том, что на инфостарте волялась обработка народного умельца, разбирающая представление адреса в нормальный адрес ;) И где же тут та самая критическая необходимость использования сторонней технологии?     | |||
| 182
    
        sergeante 24.11.11✎ 13:17 | 
        (181) Нет никакой необходимости! Ещё раз, пользуйся чем хочешь.     | |||
| 183
    
        Stim213 24.11.11✎ 13:17 | 
        (181)  а если это будут не адреса, а штрихкод Code128, в котором задан вес товара, например?     | |||
| 184
    
        Хранимая Процедура 24.11.11✎ 13:18 | 
        еще эту задачу решал разработчик http://www.gisgraphy.com/ но у него не хватило денег и тестовых данных для России. библиотеку Java он почему то в Opensource не захотел выкинуть.
  http://addressparser.appspot.com/webaddressparser?address=...&country=ru Зы. Задача на самом деле сложная и муторная | |||
| 185
    
        rs_trade 24.11.11✎ 13:22 | 
        (181) адрес может быть таким  26-ти Бакинских Комиссаров 26 Бакинских Комиссаров ул. Ак Павлова ул. академика павлова Akademika Pavlova И еще куча вариантов. Много ты в КЛАДРЕ соответствий найдешь? | |||
| 186
    
        rs_trade 24.11.11✎ 13:23 | 
        +(185) да, и в кладре нет районов. так что решение в (181) не годится.     | |||
| 187
    
        sergeante 24.11.11✎ 13:27 | 
        (186) как нет? есть.     | |||
| 188
    
        rs_trade 24.11.11✎ 13:29 | 
        (187) административных округов Москвы.     | |||
| 189
    
        sergeante 24.11.11✎ 13:30 | 
        (188) а.     | |||
| 190
    
        rs_trade 24.11.11✎ 13:39 | 
        (181) могу тебе сразу сказать что по кладру ты не только район не получшь, но и индексы определишь менее чем для 20% адресов.  В то время как специалист не гнушающийся использовать внешнии технологии выполнит это задачу с результатами свыше 90%. так что двойка тебе за решение с использованием кладра. | |||
| 191
    
        kosmit 24.11.11✎ 13:52 | 
        (190) Кажись больше вариантов не последует )     | |||
| 192
    
        Alexandr Puzakov 24.11.11✎ 13:59 | 
        (185) полнотекстовый поиск меня спасет ;)     | |||
| 193
    
        Alexandr Puzakov 24.11.11✎ 14:01 | 
        (190) поперли усложнения уже... Так не годится!     | |||
| 194
    
        rs_trade 24.11.11✎ 14:05 | 
        (193) Годиться. Усложнения не с потолка взяты, а с реальной задачи. Кстати к (185) надо еще добавить синтаксические ошибки в адресе.     | |||
| 195
    
        Alexandr Puzakov 24.11.11✎ 14:16 | 
        (194) я более чем уверен, при решении этой самой реальной задачи Вы располагали гораздо большим объемом информации и затратили не один час времени... Так что двойка мне ужасно преждевременна.     | |||
| 196
    
        Alexandr Puzakov 24.11.11✎ 14:17 | 
        + в полнотекстовом поиске настаивается точность поиска...     | |||
| 197
    
        rs_trade 24.11.11✎ 14:27 | 
        (195) Не час, за день сделал. Через Гугл карты. Полнотекстовой поиск для решения данной задачи и рядом не валялся с геосервисами гугла.     | |||
| 198
    
        sergeante 24.11.11✎ 14:34 | 
        (197) зачёт.     | |||
| 199
    
        Alexandr Puzakov 24.11.11✎ 15:04 | 
        (197) маладес! Медальку уже дали?     | |||
| 200
    
        rs_trade 24.11.11✎ 15:21 | 
        (199) То есть по существу возразить нечего, я так понимаю. Оно и понятно. В данном примере пытаться решить задачу только методами 1С на порядок сложнее.     | |||
| 201
    
        VVi3ard 24.11.11✎ 15:23 | 
        (197) У меня тоже была мысль применить геотеги, только яндекса, у них отличный геотагер, кстати как то была похожая задача, отобразить на карте не пойми какие адреса: http://infostart.ru/public/98156/ вот может пригодится кому :)     | |||
| 202
    
        VVi3ard 24.11.11✎ 15:24 | 
        Так на чем остановились FTS и RegEXP враги на всю жизнь или гармонично дополняющие друг друга технологии?     | |||
| 203
    
        rs_trade 24.11.11✎ 15:31 | 
        (201) Яндекс административный округ Москвы по адресу не говорит. А Гугл знает.     | |||
| 204
    
        Поручик 24.11.11✎ 15:35 | 
        (202) Второй вариант, ибо технологии разные, имеющие своё назначение.     | |||
| 205
    
        orefkov 24.11.11✎ 16:05 | 
        Самый прикол в том, что 1С использует "унутре", в платформе, ICU - библиотеку от IBM для работы с юникодом, ресурсами и т.п.
  Так работа с регэкспами - это неотъемлемая часть ICU. Все что нужно сделать 1С - это написать пару объектов-оберток для работы из 1С-script с тем, что ужу есть внутри. То есть это такой суслик, которого не видно, а он есть. | |||
| 206
    
        VVi3ard 24.11.11✎ 16:12 | 
        (205) О тяжелая Артиллерия подошла :) Приветствую.     | |||
| 207
    
        orefkov 24.11.11✎ 16:13 | 
        А так 1С права, что их не добавляет.
  При диагнозе "1С головного мозга" попытка знакомства с регэкспами приведет к летальному исходу, у пациента мозг порвется. | |||
| 208
    
        VVi3ard 24.11.11✎ 16:20 | 
        (207) если в дебри не лезть то не очень сложно, в дебри я сам не хочу лезть оттуда на меня смотрит бездна :)     | |||
| 209
    
        sergeante 24.11.11✎ 18:03 | 
        (207) п л я, по мойму самый грамотный комент ветки!     | |||
| 210
    
        oleg_km 24.11.11✎ 18:04 | 
        (208) А может географическую схему выкинуть, а добавить регулярные выражения? У некоторых товарищей действительно какое-то слепое поклонение перед 1С. Такое ощущение, что им мучительно больно признать, что 1С имеет какие-либо недостатки. Что в этом такого, нет регулярок, плохо это, вставят в 8.3 - прекрасно, не вставят, прикрутим костыли.     | |||
| 211
    
        Fragster гуру 24.11.11✎ 18:10 | 
        мне вот не хватает операций DELETE и INSERT для временных таблиц, а регулярки уже давно прикручены проволокой...     | |||
| 212
    
        sergeante 24.11.11✎ 18:17 | 
        Да 1C, как и любая среда, постепенно со всех сторон становится обвешана разными рюшечками, примочками и припарочками. И это правильно, ящетаю. Плоха та вещь, которую нельзя допилить напильником.     | |||
| 213
    
        orefkov 24.11.11✎ 18:26 | 
        (212)
  Вот у меня так и чешутся руки пропиариться насчет припарочек, но нет, не буду... | |||
| 214
    
        Mikeware 24.11.11✎ 18:32 | 
        (207) "1с головного мозга" - это еще пол-беды... вот когда "абракадабра головного мозга", да еще год рождения -1986, то тут "ПолныйПэ"©...     | |||
| 215
    
        rs_trade 24.11.11✎ 18:50 | 
        (211) по моему всем не хватает функциональности языка запросов.     | |||
| 216
    
        IamAlexy 24.11.11✎ 18:57 | 
        а мне  в 8ке нехватает двухх вещей:
  1. чтобы при выводе сообщения пользователю эта злоипучая панель "справа" от управляемой формы не вылазила с дублем сообщения 2. чтобы при отключении панели действий не надо было в MDI режиме каждый раз дергать выосту окна и чтобы она сама всегда была максимальной. больше проблем в 8ке нет... | |||
| 217
    
        Alexandr Puzakov 24.11.11✎ 18:58 | 
        (214) флаг те в руки. Дурак присторелый.     | |||
| 218
    
        oleg_km 24.11.11✎ 19:23 | 
        (216) В данном случае говорили не о проблемах, а об недостающих возможностях.     | |||
| 219
    
        Stim213 29.11.11✎ 22:20 | 
        Вот задачка специально для Пузакова, который не верит в необходимость регулярных выражений в 1С:
  Нужно перенести наименования номенклатуры в РС НаименованияНоменклатурыНаИностранныхЯзыках. Если наименование задано на русском языке - то язык(измерение РС) должен быть русский. Если на англ - соотв англ С регулярными выражениями это заняло бы одну строку. Через стандартные средства 1С придется городить циклы, условия и пр пр.. | |||
| 220
    
        Поручик 29.11.11✎ 23:58 | 
        (205) Они, скорее всего, сами боятся это делать, так как реализация этих самых объектов-обёрток будет у.бищной, как смертный грех.     | |||
| 221
    
        IamAlexy 30.11.11✎ 00:00 | 
        кстати да.. нельзя допускать регекспы в 1С
  прикиньте начнут в нетленках писать проверку заполнения адресов электронной почты через регекспы: (?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t] )+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?: \r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:( ?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\0 31]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\ ](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+ (?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?: (?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z |(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n) ?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\ r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n) ?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t] )*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])* )(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t] )+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*) *:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+ |\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r \n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?: \r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t ]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031 ]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\]( ?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(? :(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(? :\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(? :(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)? [ \t]))*"(?:(?:\r\n)?[ \t])*)*:(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]| \\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<> @,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|" (?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t] )*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\ ".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(? :[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[ \]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000- \031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|( ?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,; :\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([ ^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\" .\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\ ]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\ [\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\ r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\] |\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \0 00-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\ .|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@, ;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(? :[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])* (?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\". \[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[ ^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\] ]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)(?:,\s*( ?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\ ".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:( ?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[ \["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t ])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t ])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(? :\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+| \Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?: [^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\ ]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n) ?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\[" ()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n) ?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<> @,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@, ;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t] )*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\ ".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)? (?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\". \[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?: \r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\[ "()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t]) *))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]) +|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\ .(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z |(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:( ?:\r\n)?[ \t])*))*)?;\s*) | |||
| 222
    
        IamAlexy 30.11.11✎ 00:01 | ||||
| 223
    
        Поручик 30.11.11✎ 00:07 | 
        (221) Испугал ежа голой задницей. Автор этих строк и не такое видел и писал на perl'e.
  Вот как изящно проверяется корректность адреса емайл средствами 1С // Функция проверяет что введенная строка с e-mail адресами введена правильно // // Формат строки: // Z = ИмяПользователя|[Имя Пользователя] [<]пользователь@почтовый_сервер[>], Строка = Z[<разделитель*>Z].. // // прим.: разделитель* - имеется в виду любой разделитель адресов // // Параметры: // СтрокаПереданныхАдресов - строка - правильная строка с почтовыми адресами // // Возвращаемое значение: // Структура // ключ Статус - булево - успех или неуспех преобразования // в случае успеха содержит ключ Значение: // Массив структур, где // Адрес- e-mail получателя // Представление - имя получателя // в случае неуспеха содержит ключ СообщениеОбОшибке - строка // // ВАЖНО: Функция возвращает массив структур, в которых одно поле (любое) // может быть незаполнено. Может использоваться различными // подсистемами для собственного сопоставления имени пользователя // некому e-mail адресу. Поэтому, необходимо перед непосредственной // отправкой проверить, что поле почтового адреса заполнено. // Функция РазобратьСтрокуСПочтовымиАдресами(знач СтрокаПереданныхАдресов) Экспорт Результат = Новый Массив; НедопустимыеСимволы = "!#$%^&*()+`~|\/="; СообщениеНедопустимыеСимволы = НСтр("ru = 'Недопустимый символ %1 в адресе электронной почты %2'"); СообщениеНеверныйФорматПочтовогоАдреса = НСтр("ru = 'Некорректный адрес электронной почты %1'"); МассивПодстрок = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СтрокаПереданныхАдресов,";"); МассивПодстрокКОбработке = Новый Массив; Для каждого ЭлементМассива Из МассивПодстрок Цикл Если Найти(ЭлементМассива,",") > 0 Тогда ДопМассивПодстрок = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СтрокаПереданныхАдресов); Для каждого ЭлементДопМассива Из ДопМассивПодстрок Цикл МассивПодстрокКОбработке.Добавить(ЭлементДопМассива); КонецЦикла; Иначе МассивПодстрокКОбработке.Добавить(ЭлементМассива); КонецЕсли; КонецЦикла; Для Каждого СтрокаАдреса ИЗ МассивПодстрокКОбработке Цикл Индекс = 1; // номер обрабатываемого символа Накопитель = ""; // накопитель символов, после анализа перемещается либо в полное имя // либо в почтовый адрес ПолноеИмяАдресата = ""; // переменная, накапливающая имя адресата ПочтовыйАдрес = ""; // переменная, накапливающая e-mail адрес // 1 - формирование полного имени: ожидаются любые допустимые символы имени адресата // 2 - формирование почтового адреса: ожидаются любые допустимые символы email адреса // 3 - завершение формирования очередного почтового адреса - ожидаются символы разделители либо пробелы СтадияРазбора = 1; Пока Индекс <= СтрДлина(СтрокаАдреса) Цикл Символ = Сред(СтрокаАдреса, Индекс, 1); Если Символ = " " Тогда Индекс = ? ((ПропуститьПробелы(СтрокаАдреса, Индекс, " ") - 1) > Индекс, ПропуститьПробелы(СтрокаАдреса, Индекс, " ") - 1, Индекс); Если СтадияРазбора = 1 Тогда ПолноеИмяАдресата = ПолноеИмяАдресата + Накопитель + " "; ИначеЕсли СтадияРазбора = 2 Тогда ПочтовыйАдрес = Накопитель; СтадияРазбора = 3; КонецЕсли; Накопитель = ""; ИначеЕсли Символ = "@" Тогда Если СтадияРазбора = 1 Тогда СтадияРазбора = 2; Для ИндексПоискаНС = 1 По СтрДлина(Накопитель) Цикл Если Найти(НедопустимыеСимволы, Сред(Накопитель, ИндексПоискаНС, 1)) > 0 Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( СообщениеНедопустимыеСимволы,Сред(Накопитель, ИндексПоискаНС, 1),СтрокаАдреса); КонецЕсли; КонецЦикла; Накопитель = Накопитель + Символ; ИначеЕсли СтадияРазбора = 2 Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( СообщениеНеверныйФорматПочтовогоАдреса,СтрокаАдреса); ИначеЕсли СтадияРазбора = 3 Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( СообщениеНеверныйФорматПочтовогоАдреса,СтрокаАдреса); КонецЕсли; Иначе Если СтадияРазбора = 2 ИЛИ СтадияРазбора = 3 Тогда Если Найти(НедопустимыеСимволы, Символ) > 0 Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( СообщениеНедопустимыеСимволы,Символ,СтрокаАдреса); КонецЕсли; КонецЕсли; Накопитель = Накопитель + Символ; КонецЕсли; Индекс = Индекс + 1; КонецЦикла; Если СтадияРазбора = 1 Тогда ПолноеИмяАдресата = ПолноеИмяАдресата + Накопитель; ИначеЕсли СтадияРазбора = 2 Тогда ПочтовыйАдрес = Накопитель; КонецЕсли; Если ПустаяСтрока(ПочтовыйАдрес) И (Не ПустаяСтрока(ПолноеИмяАдресата)) Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( СообщениеНеверныйФорматПочтовогоАдреса,ПолноеИмяАдресата); ИначеЕсли СтрЧислоВхождений(ПочтовыйАдрес,"@") <> 1 Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( СообщениеНеверныйФорматПочтовогоАдреса,ПочтовыйАдрес); КонецЕсли; Если НЕ (ПустаяСтрока(ПолноеИмяАдресата) И ПустаяСтрока(ПочтовыйАдрес)) Тогда Результат.Добавить(ПроверитьИПодготовитьПочтовыйАдрес(ПолноеИмяАдресата, ПочтовыйАдрес)); КонецЕсли; КонецЦикла; Возврат Результат; КонецФункции Просто и понятно. Ничего лишнего. | |||
| 224
    
        sergeante 30.11.11✎ 13:58 | 
        (223) Самое главное, что алгоритм проверки очень легко дорабатывается!     | |||
| 225
    
        oleg_km 30.11.11✎ 14:49 | 
        (224) Строка RegExp тоже несложно дорабатывается     | |||
| 226
    
        sergeante 01.12.11✎ 16:20 | 
        (225) ты иронии не заметил?     | |||
| 227
    
        ZUM 01.12.11✎ 16:22 | 
        - Да у Вас проблемы с железом...     | |||
| 228
    
        oleg_km 01.12.11✎ 17:23 | 
        (226) Извини, иронию на Мисте сложно разглядеть. Привык распознавать по всяким значкам, типа ;)     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |