Имя: Пароль:
1C
1С v8
Регулярные выражения в 1С
,
0 yavasya
 
10.01.19
11:18
Доброе утро коллеги !
постоянно использую работу со строками в 1С, во многих случаях регулярные выражения обладают большими возможностями и короче запись кода. Если ли какие-либо ограничения на использование регулярных выражений ? Какие могут быть ошибки в программе ?
1 RomaH
 
naïve
10.01.19
11:21
винда нужна
2 Гипервизор
 
10.01.19
11:23
"У вас есть проблема. Вы решили использовать регулярные выражения чтобы её решить. Теперь у вас две проблемы."
3 Черный маклер
 
10.01.19
11:23
Linux
4 RomaH
 
naïve
10.01.19
11:24
RegExp = Новый COMОбъект("VBScript.RegExp");
    RegExp.IgnoreCase = Истина;
    RegExp.MultiLine = Ложь; // истина — текст многострочный, ложь — одна строка
    
    RegExp.Global = Истина;
    
    //Сначала обработаем временный номер
    Если Не ЗначениеЗаполнено(Подразделение) Тогда
        RegExp.pattern = "(\d+)";
        
        Результаты = RegExp.Execute(Текст);
        
        Если Результаты.Count() > 0 Тогда
            
            ВременныйНомер = Число(Результаты.Item(0).Value);
            
            СписокФизПоВременномуНомеру(ДанныеВыбора,ВременныйНомер);
            
            
        КонецЕсли;
    КонецЕсли;
    
    
    //Дальше поищем даты и прочее

    #Область ДатаРождения_И_ФИО
    
    RegExp.pattern = "(\d.*\d)";
    
    Результаты = RegExp.Execute(Текст);

несколько тысяч раз в сутки выполняется
5 Ненавижу 1С
 
гуру
10.01.19
11:25
Вообще непонятно почему до сих пор не запилили
6 Deon
 
10.01.19
11:25
(0) Создание ком-объекта в цикл пихать не надо
7 RomaH
 
naïve
10.01.19
11:27
(6) почему?
и как быть?
8 RomaH
 
naïve
10.01.19
11:28
+7 - у меня не совсем цикл, но вызов идет в обработке получения данных выбора - т.е. от 2 до 20 раз по мере набора строки поиска
9 d4rkmesa
 
10.01.19
11:29
(0) Надо от задачи исходить. Если простая валидация, можно делать проще через XDTO. А если хотите извлекать все возможные подстроки, то подумайте еще, что с этим добром будете делать. Вариант как в (4) у меня вполне работает, включая отчеты на СКД на много-много строк. Только повторное использование в модуле включить.
10 gantonio
 
10.01.19
11:30
да никаких проблем.
11 Deon
 
10.01.19
11:32
(7) Потому что тормозит. Если есть возможность не пихаь в цикл, то лучше не пихать )
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший