Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Полезные функции для работы со строками , для 1С 8.х          
Vofka Подменю пользователя
сообщение 23.04.15, 10:23
Сообщение #1

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Для себя писал несколько функций, которыми периодически пользуюсь. Ничего сверхъестественного, просто полезно иметь что-то такое под рукой. Если у вас есть что-то подобное - можно так же тут выкладывать.

// Возвращает массив цифр в виде стоковых символов
//
Функция ПолучитьМассивЦифровыхСимволов() Экспорт
    
    МассивЦифр = Новый Массив();
    
    МассивЦифр.Добавить("0");
    МассивЦифр.Добавить("1");
    МассивЦифр.Добавить("2");
    МассивЦифр.Добавить("3");
    МассивЦифр.Добавить("4");
    МассивЦифр.Добавить("5");
    МассивЦифр.Добавить("6");
    МассивЦифр.Добавить("7");
    МассивЦифр.Добавить("8");
    МассивЦифр.Добавить("9");
    
    Возврат МассивЦифр;
    
КонецФункции

// Возвращает Истину, если в передаваемой строке есть что-то кроме цифр
//
Функция ЕстьНеЦифры(Строка) Экспорт
    
    МассивЦифр = ПолучитьМассивЦифровыхСимволов();
    
    ЕстьНеЦифры = Ложь;
    Для ъ = 1 По СтрДлина(Строка) Цикл
        Символ = Сред(Строка, ъ, 1);
        Если МассивЦифр.Найти(Символ) = Неопределено Тогда
            ЕстьНеЦифры = Истина;
            Прервать;
        КонецЕсли;
    КонецЦикла;
    
    Возврат ЕстьНеЦифры;
    
КонецФункции

// Возвращает строку, в которой убирает любые символы, кроме цифр
//
Функция ПолучитьТолькоЦифры(Строка) Экспорт
    
    МассивЦифр = ПолучитьМассивЦифровыхСимволов();
    
    Для ъ = 1 По СтрДлина(Строка) Цикл
        Символ = Сред(Строка, ъ, 1);
        Если МассивЦифр.Найти(Символ) = Неопределено Тогда
            Строка = СтрЗаменить(Строка, Символ, " ");
        КонецЕсли;
    КонецЦикла;
    Строка = СтрЗаменить(Строка, " ", "");
    
КонецФункции

// Возвращает Истину, если в передаваемой строке есть буквы
//
Функция ЕстьБуква(Строка) Экспорт
    
    МассивБукв = ПолучитьМассивБукв();
    ЕстьБуква = Ложь;
    Для ъ=1 По СтрДлина(Строка) Цикл
        Буква = ВРег(Сред(Строка, ъ, 1));
        Если МассивБукв.Найти(Буква) <> Неопределено Тогда
            ЕстьБуква = Истина;
            Прервать;
        КонецЕсли;
    КонецЦикла;
    Возврат ЕстьБуква;
    
КонецФункции

// Просто возвращает массив наших и латинских букв
//
Функция ПолучитьМассивБукв() Экспорт
    
    МассивБукв = Новый Массив;
    
    МассивБукв.Добавить("А");
    МассивБукв.Добавить("Б");
    МассивБукв.Добавить("В");
    МассивБукв.Добавить("Г");
    МассивБукв.Добавить("Д");
    МассивБукв.Добавить("Е");
    МассивБукв.Добавить("Ё");
    МассивБукв.Добавить("Ж");
    МассивБукв.Добавить("З");
    МассивБукв.Добавить("И");
    МассивБукв.Добавить("Й");
    МассивБукв.Добавить("К");
    МассивБукв.Добавить("Л");
    МассивБукв.Добавить("М");
    МассивБукв.Добавить("Н");
    МассивБукв.Добавить("О");
    МассивБукв.Добавить("П");
    МассивБукв.Добавить("Р");
    МассивБукв.Добавить("С");
    МассивБукв.Добавить("Т");
    МассивБукв.Добавить("У");
    МассивБукв.Добавить("Ф");
    МассивБукв.Добавить("Х");
    МассивБукв.Добавить("Ц");
    МассивБукв.Добавить("Ч");
    МассивБукв.Добавить("Ш");
    МассивБукв.Добавить("Щ");
    МассивБукв.Добавить("Ъ");
    МассивБукв.Добавить("Ы");
    МассивБукв.Добавить("Ь");
    МассивБукв.Добавить("Э");
    МассивБукв.Добавить("Ю");
    МассивБукв.Добавить("Я");
    МассивБукв.Добавить("І");
    МассивБукв.Добавить("Ї");
    МассивБукв.Добавить("Є");
    МассивБукв.Добавить("Ґ");
    
    МассивБукв.Добавить("A");
    МассивБукв.Добавить("B");
    МассивБукв.Добавить("C");
    МассивБукв.Добавить("D");
    МассивБукв.Добавить("E");
    МассивБукв.Добавить("F");
    МассивБукв.Добавить("G");
    МассивБукв.Добавить("H");
    МассивБукв.Добавить("I");
    МассивБукв.Добавить("J");
    МассивБукв.Добавить("K");
    МассивБукв.Добавить("L");
    МассивБукв.Добавить("M");
    МассивБукв.Добавить("N");
    МассивБукв.Добавить("O");
    МассивБукв.Добавить("P");
    МассивБукв.Добавить("Q");
    МассивБукв.Добавить("R");
    МассивБукв.Добавить("S");
    МассивБукв.Добавить("T");
    МассивБукв.Добавить("U");
    МассивБукв.Добавить("V");
    МассивБукв.Добавить("W");
    МассивБукв.Добавить("X");
    МассивБукв.Добавить("Y");
    МассивБукв.Добавить("Z");
    
    Возврат МассивБукв;
    
КонецФункции

// Из передаваемой строки убираются любые не буквенные символы
//
Функция ПолучитьТолькоБуквы(Строка) Экспорт
    
    ВозвращаемаяСтрока = "";
    МассивБукв = ПолучитьМассивБукв();
    
    Для ъ = 1 По СтрДлина(Строка) Цикл
        Буква = ВРег(Сред(Строка, ъ, 1));
        
        Если МассивБукв.Найти(Буква) = Неопределено Тогда
            Продолжить;
        КонецЕсли;
        
        ВозвращаемаяСтрока = ВозвращаемаяСтрока + Сред(Строка, ъ, 1);
    КонецЦикла;
    
    Возврат ВозвращаемаяСтрока;
    
КонецФункции


Сообщение отредактировал Vofka - 23.04.15, 10:30

sava1 Подменю пользователя
сообщение 23.04.15, 10:35
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

Про Регулярные выражения слышали ?

Petre Подменю пользователя
сообщение 23.04.15, 10:41
Сообщение #3

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2902
Из: Київ, Україна
Спасибо сказали: 1144 раз
Рейтинг: 1225

Цитата(sava1 @ 23.04.15, 11:35) *
Про Регулярные выражения слышали ?

Расскажите о регулярных выражениях в 1с на Линукс.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

sava1 Подменю пользователя
сообщение 23.04.15, 10:42
Сообщение #4

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

Не пользую

Vofka Подменю пользователя
сообщение 23.04.15, 10:45
Сообщение #5

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Слышали. Но для них, как минимум, нужно использовать COM объект, а это использование не родного функционала платформы (я не говорю, что это есть какая-то большая проблема, но в Линуксе, например, работать оно в таком случае не будет). Конечно, во многих случаях на это можно забить. Ну и лично я в регулярных выражениях не шибко силен и мне удобнее использовать подобные функции.

Сообщение отредактировал Vofka - 23.04.15, 10:47

Petre Подменю пользователя
сообщение 23.04.15, 10:55
Сообщение #6

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2902
Из: Київ, Україна
Спасибо сказали: 1144 раз
Рейтинг: 1225

Регулярные выражения - очень мощный инструмент. Но в большинстве случаев необходимо отдавать предпочтение штатным возможностям 1с. В конце концов проблема не только в Линукс, но и в доменных политиках, в тонких и веб-клиентах...


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 29.03.24, 6:47
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!