Имя: Пароль:
1C
1С v8
Регулярные выражения в 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)


RE = New COMObject("VBScript.RegExp");
RE.Global        = истина;
RE.IgnoreCase    = истина;
RE.Multiline    = истина;
RE.Pattern = \d+;

Попытка
   Сообщить("Замена:" + RE.Replace("Stim213", ", зачем тебе это в платформе?"));
Исключение
   Сообщить(ОписаниеОшибки());
КонецПопытки;
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
пля

тут правильно: http://ex-parrot.com/~pdw/Mail-RFC822-Address.html
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) Извини, иронию на Мисте сложно разглядеть. Привык распознавать по всяким значкам, типа ;)
2 + 2 = 3.9999999999999999999999999999999...