Функции строк в 1С. Часть 1

В предыдущей статье мы узнали, как работать со строками в 1С 8.3. В этой статье изучим самые часто применяемые функции для работы со строками 1С.

Статья о строках в 1С

Длина строки 1С

В платформе 1С имеется функция, которая вычисляет длину строки – СтрДлина. Эта функция имеет единственный параметр – строку, и возвращает количество символов в этой строке, т.е. её длину. Причем считаются все символы, в том числе пробелы.

Рассмотрим пример.

СтрокаПримера1= "результат    ";
СтрокаПримера2= "результат";

ДлинаСтроки1 = СтрДлина(СтрокаПримера1);
ДлинаСтроки2 = СтрДлина(СтрокаПримера2);

Сообщить("Длина строки:""" + СтрокаПримера1 + """ = " + ДлинаСтроки1);
Сообщить("Длина строки:""" + СтрокаПримера2 + """ = " + ДлинаСтроки2);

И результат.

Длина строки 1С

Регистр строки 1С

В 1С имеются функции для работы с регистрами строк.

НРег – переводит строку в нижний регистр

ВРег – переводит строку в верхний регистр

ТРег – переводит строку в титульный регистр (каждое слово начинается с заглавной буквы).

Рассмотрим пример.

СтрокаПримера= "пРивет оЛег!";

Сообщить(НРег(СтрокаПримера));
Сообщить(ВРег(СтрокаПримера));
Сообщить(ТРег(СтрокаПримера));

И результат.

Регистр строки 1С

Замечу, эти функции не изменяют строку в параметре, а создают новую строку в нужном регистре.

Убрать пробелы в строке 1С

Часто возникает, что в строке 1С в начале строки или в конце строки есть лишние пробелы, которые нужно убрать. Для  этих целей служат следующие функции.

СокрЛ  — убирает пробелы  слева строки.

СокрП — убирает пробелы справа строки.

СокрЛП – убирает пробелы справа и слева строки.

Рассмотрим пример (добавлю символы перед и после функциями, чтобы было понятно как они работают).

СтрокаПримера= "    результат выгрузки    ";

Сообщить("|" + СокрЛ(СтрокаПримера) + "|");
Сообщить("|" + СокрП(СтрокаПримера) + "|");
Сообщить("|" + СокрЛП(СтрокаПримера) + "|");

И результат.

Убрать пробелы в строке 1С

Эти функции, также, не изменяют строку в параметре, а создают новую строку с обрезанными пробелами.

Сократить строку 1С

Если предыдущие функции сокращали только пробелы, то в платформе 1С имеется возможность сократить и саму строку на нужное количество символов. Или наоборот – оставить нужное количество символов. Для этих целей служат следующие функции.

Лев – оставляет нужное количество символов слева.  Имеет следующий синтаксис: Лев(<Cтрока>,<ЧислоСимволов>)

Прав – оставляет нужно количество символов справа. Имеет следующий синтаксис:  Лев(<Cтрока>,<ЧислоСимволов>)

Сред – оставляет нужное количество символов в строке. Имеет следующий синтаксис:  Лев(<Cтрока>,<НачальныйНомер>, <ЧислоСимволов>).

Поясним.

Функции Лев и Прав – создают новую строку, в которой оставлено слева и справа соответственно, то количество символов, которое указанно во втором параметре.

Функция Сред также создает новую строку, в которой оставлено то количество символов, которое указано в третьем параметре.  Но, если предыдущие функции оставлялись символы или с начала строки, или с конца, то эта функция оставляет символы с любого места строки. Для этого во втором параметре нужно указать номер символа, с которого будут оставлены остальные символы (включая символ, номер которого мы указали).

Рассмотрим пример.

СтрокаФИО = "Иванов Иван Иванович";

СтрокаО   = Прав(СтрокаФИО,8);
СтрокаФ   = Лев(СтрокаФИО,6);
СтрокаИ   = Сред(СтрокаФИО,8,4);

Сообщить(СтрокаФ);
Сообщить(СтрокаИ);
Сообщить(СтрокаО);

Сократить строку в 1С

По сути, эти функции позволяют сокращать как нужно строки, но работают наоборот – они оставляют то количество символов, которое необходимо.

Найти в строке 1С

Иногда нужно найти в строке или нужный символ, или нужную группу символов. Для этих целей применятся функция СтрНайти(). Эта функция имеет следующий синтаксис.

СтрНайти(<Cтрока>,<ПодстрокаПоиска>,<НаправлениеПоиска>,<НачальнаяПозиция>,<НомерВхождения>)

Данная функция возвращает позицию первого знака подстроки, которая была найдена. Если 0, то ни чего не найдено.

Разберем параметры:

Строка – строка, по которой осуществляется поиск;

ПодстрокаПоиска – подстрока (или символ), которая ищется в строке поиска;

НаправлениеПоиска – системное перечисление, которое задает в какую сторону осуществляется поиск. Имеет два значения: НаправлениеПоиска.Сначала, НаправлениеПоиска.Сконца. Необязательный параметр.

НачальнаяПозиция – номер символа, с которого начинается поиск. Должен быть в диапазоне от 1 до количества символов, иначе будет ошибка.  Необязательный параметр. Если он не задан и установлен параметр НаправлениеПоиска, то в случае поиска Сначала по умолчанию равен 1, а если поиск СКонца, то по умолчанию равен количеству символов в строке.

НомерВхождения – искомая подстрока (или символ) может несколько раз входить в исходную строку, этот параметр указывает,  какое вхождение нас интересует. По умолчанию равен 1.

Рассмотрим примеры.

СтрокаФИО = "Иванов Сидоров Иванов";
Сообщить(СтрокаФИО);

//ищем с настройками по умолчанию
НомерИванова = СтрНайти(СтрокаФИО,"Иванов");
Сообщить("Номер подстроки ""Иванов"" в строке " + НомерИванова);

//ищем с конца
НомерИванова = СтрНайти(СтрокаФИО,"Иванов",НаправлениеПоиска.СКонца);
Сообщить("Номер подстроки ""Иванов"" в строке " + НомерИванова);

//ищем с конца но начиная с 10 символа
НомерИванова = СтрНайти(СтрокаФИО,"Иванов",НаправлениеПоиска.СКонца,10);
Сообщить("Номер подстроки ""Иванов"" в строке " + НомерИванова);

//ищем с начала, но второе вхождение
НомерИванова = СтрНайти(СтрокаФИО,"Иванов",НаправлениеПоиска.СНачала,,2);
Сообщить("Номер подстроки ""Иванов"" в строке " + НомерИванова);

И результат работы функции

Найти в строке 1С

Т.е. когда мы ищем в строке «Иванов Сидоров Иванов» подстроку «Иванов», то при поиске без дополнительных параметров функция возвращает 1, это номер символа с которого начинается искомая подстрока. Если же мы ищем в направлении СКонца, то возвращается номер символа, с которого начинается второе вхождение подстроки в строку. В третьем случае мы искали в направлении СКонца, но указали номер символа, с которого нужно искать строку, поэтому функция вернула 1, поскольку при поиске начиная с 10 символа с конца строки, искомая подстрока находится только в начале строки. И в последнем примере, мы ищем подстроку с начала, но ищем второе вхождение этой подстроки.

Заменить в строке 1С

В платформе 1С 8.3. имеется метод, при помощи которого можно менять в строке определенные символы на другие символы.  

Этот метод СтрЗаменить, и он имеете следующий синтаксис: СтрЗаменить(<Строка>,<СтрокаПоиска>,<СтрокаЗамены>)

Данные метод возвращается строку, в которой будет выполнена замена или нет, в зависимости от того найдена строка поиска или нет.

Пример.

ФИОНеПравильное = "Иванов_Андрей_Игоревич";
Сообщить(ФИОНеПравильное);

ФИОВерное = СтрЗаменить(ФИОНеПравильное,"_"," ");
Сообщить(ФИОВерное);

ФИОБезОтчетства = СтрЗаменить(ФИОВерное," Игоревич","");
Сообщить(ФИОБезОтчетства); 

Результат:

Заменить в строке 1С

Как видите, при помощи этого метода можно не только менять символы, но и вырезать не нужные символы.

Функции для многострочных строк в 1С

Из предыдущей статьи вы знаете, что в 1С можно задать многострочную строку, делается это при помощи символа «|». Сейчас мы разберем несколько функций, которые могут пригодиться при работе с многострочной строкой.

СтрЧислоСтрок(<Строка>) – позволяет узнать, сколько в строке строк.

Пример.

СтрокаСПереносом = "Первая
                    |Вторая
                    |Третья";
КоличествоСтрок = СтрЧислоСтрок(СтрокаСПереносом);

Сообщить(СтрокаСПереносом);
Сообщить("Количество строк: " + КоличествоСтрок);

Результат

Число строк в строке 1С

СтрПолучитьСтроку – позволяет получить строку из многострочной строки по номеру, имеете следующий синтаксис: СтрПолучитьСтроку(<Строка>, <НомерПолучаемойСтроки>). <НомерПолучаемойСтроки> — начинается с единицы.

Пример

СтрокаСПереносом = "Первая
                    |Вторая
                    |Третья";
ВтораяСтрока = СтрПолучитьСтроку(СтрокаСПереносом,2);

Сообщить(СтрокаСПереносом);
Сообщить("Вторая строка из предыдущей стороки с переносом:
        |" + ВтораяСтрока);

Результат

Заменить в строке 1С

В этой статье я разобрал основные функции, которые были в платформе 8.1, в платформе 8.2 и перешли в платформу 8.3 (кроме функции СтрНайти, но это улучшенная версия функция Найти, которая была в старых платформах) . В следующей статье рассмотрим функции работы со строками, которые появились в платформе 8.3:

Функции строк в 1С. Часть 2

Символы в 1С

Статьи о примитивных типах

Примитивный тип Строка

Примитивный тип Булево

Примитивный тип Число

Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»

Программировать в 1С за 11 шагов

Книга написана понятным и простым языком — для новичка.

  1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  2. Научитесь понимать архитектуру 1С;
  3. Станете писать код на языке 1С;
  4. Освоите основные приемы программирования;
  5. Закрепите полученные знания при помощи задачника.

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Основы разработки в 1С такси
  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму
.

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы:

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

3 × два =