В предыдущей статье мы узнали, как работать со строками в 1С 8.3. В этой статье изучим самые часто применяемые функции для работы со строками 1С.
Длина строки 1С
В платформе 1С имеется функция, которая вычисляет длину строки – СтрДлина. Эта функция имеет единственный параметр – строку, и возвращает количество символов в этой строке, т.е. её длину. Причем считаются все символы, в том числе пробелы.
Рассмотрим пример.
СтрокаПримера1= "результат "; СтрокаПримера2= "результат"; ДлинаСтроки1 = СтрДлина(СтрокаПримера1); ДлинаСтроки2 = СтрДлина(СтрокаПримера2); Сообщить("Длина строки:""" + СтрокаПримера1 + """ = " + ДлинаСтроки1); Сообщить("Длина строки:""" + СтрокаПримера2 + """ = " + ДлинаСтроки2);
И результат.

Регистр строки 1С
В 1С имеются функции для работы с регистрами строк.
НРег – переводит строку в нижний регистр
ВРег – переводит строку в верхний регистр
ТРег – переводит строку в титульный регистр (каждое слово начинается с заглавной буквы).
Рассмотрим пример.
СтрокаПримера= "пРивет оЛег!"; Сообщить(НРег(СтрокаПримера)); Сообщить(ВРег(СтрокаПримера)); Сообщить(ТРег(СтрокаПримера));
И результат.

Замечу, эти функции не изменяют строку в параметре, а создают новую строку в нужном регистре.
Убрать пробелы в строке 1С
Часто возникает, что в строке 1С в начале строки или в конце строки есть лишние пробелы, которые нужно убрать. Для этих целей служат следующие функции.
СокрЛ — убирает пробелы слева строки.
СокрП — убирает пробелы справа строки.
СокрЛП – убирает пробелы справа и слева строки.
Рассмотрим пример (добавлю символы перед и после функциями, чтобы было понятно как они работают).
СтрокаПримера= " результат выгрузки "; Сообщить("|" + СокрЛ(СтрокаПримера) + "|"); Сообщить("|" + СокрП(СтрокаПримера) + "|"); Сообщить("|" + СокрЛП(СтрокаПримера) + "|");
И результат.

Эти функции, также, не изменяют строку в параметре, а создают новую строку с обрезанными пробелами.
Сократить строку 1С
Если предыдущие функции сокращали только пробелы, то в платформе 1С имеется возможность сократить и саму строку на нужное количество символов. Или наоборот – оставить нужное количество символов. Для этих целей служат следующие функции.
Лев – оставляет нужное количество символов слева. Имеет следующий синтаксис: Лев(<Cтрока>,<ЧислоСимволов>)
Прав – оставляет нужно количество символов справа. Имеет следующий синтаксис: Лев(<Cтрока>,<ЧислоСимволов>)
Сред – оставляет нужное количество символов в строке. Имеет следующий синтаксис: Лев(<Cтрока>,<НачальныйНомер>, <ЧислоСимволов>).
Поясним.
Функции Лев и Прав – создают новую строку, в которой оставлено слева и справа соответственно, то количество символов, которое указанно во втором параметре.
Функция Сред также создает новую строку, в которой оставлено то количество символов, которое указано в третьем параметре. Но, если предыдущие функции оставлялись символы или с начала строки, или с конца, то эта функция оставляет символы с любого места строки. Для этого во втором параметре нужно указать номер символа, с которого будут оставлены остальные символы (включая символ, номер которого мы указали).
Рассмотрим пример.
СтрокаФИО = "Иванов Иван Иванович"; СтрокаО = Прав(СтрокаФИО,8); СтрокаФ = Лев(СтрокаФИО,6); СтрокаИ = Сред(СтрокаФИО,8,4); Сообщить(СтрокаФ); Сообщить(СтрокаИ); Сообщить(СтрокаО);

По сути, эти функции позволяют сокращать как нужно строки, но работают наоборот – они оставляют то количество символов, которое необходимо.
Найти в строке 1С
Иногда нужно найти в строке или нужный символ, или нужную группу символов. Для этих целей применятся функция СтрНайти(). Эта функция имеет следующий синтаксис.
СтрНайти(<Cтрока>,<ПодстрокаПоиска>,<НаправлениеПоиска>,<НачальнаяПозиция>,<НомерВхождения>)
Данная функция возвращает позицию первого знака подстроки, которая была найдена. Если 0, то ни чего не найдено.
Разберем параметры:
Строка – строка, по которой осуществляется поиск;
ПодстрокаПоиска – подстрока (или символ), которая ищется в строке поиска;
НаправлениеПоиска – системное перечисление, которое задает в какую сторону осуществляется поиск. Имеет два значения: НаправлениеПоиска.Сначала, НаправлениеПоиска.Сконца. Необязательный параметр.
НачальнаяПозиция – номер символа, с которого начинается поиск. Должен быть в диапазоне от 1 до количества символов, иначе будет ошибка. Необязательный параметр. Если он не задан и установлен параметр НаправлениеПоиска, то в случае поиска Сначала по умолчанию равен 1, а если поиск СКонца, то по умолчанию равен количеству символов в строке.
НомерВхождения – искомая подстрока (или символ) может несколько раз входить в исходную строку, этот параметр указывает, какое вхождение нас интересует. По умолчанию равен 1.
Рассмотрим примеры.
СтрокаФИО = "Иванов Сидоров Иванов"; Сообщить(СтрокаФИО); //ищем с настройками по умолчанию НомерИванова = СтрНайти(СтрокаФИО,"Иванов"); Сообщить("Номер подстроки ""Иванов"" в строке " + НомерИванова); //ищем с конца НомерИванова = СтрНайти(СтрокаФИО,"Иванов",НаправлениеПоиска.СКонца); Сообщить("Номер подстроки ""Иванов"" в строке " + НомерИванова); //ищем с конца но начиная с 10 символа НомерИванова = СтрНайти(СтрокаФИО,"Иванов",НаправлениеПоиска.СКонца,10); Сообщить("Номер подстроки ""Иванов"" в строке " + НомерИванова); //ищем с начала, но второе вхождение НомерИванова = СтрНайти(СтрокаФИО,"Иванов",НаправлениеПоиска.СНачала,,2); Сообщить("Номер подстроки ""Иванов"" в строке " + НомерИванова);
И результат работы функции

Т.е. когда мы ищем в строке «Иванов Сидоров Иванов» подстроку «Иванов», то при поиске без дополнительных параметров функция возвращает 1, это номер символа с которого начинается искомая подстрока. Если же мы ищем в направлении СКонца, то возвращается номер символа, с которого начинается второе вхождение подстроки в строку. В третьем случае мы искали в направлении СКонца, но указали номер символа, с которого нужно искать строку, поэтому функция вернула 1, поскольку при поиске начиная с 10 символа с конца строки, искомая подстрока находится только в начале строки. И в последнем примере, мы ищем подстроку с начала, но ищем второе вхождение этой подстроки.
Заменить в строке 1С
В платформе 1С 8.3. имеется метод, при помощи которого можно менять в строке определенные символы на другие символы.
Этот метод СтрЗаменить, и он имеете следующий синтаксис: СтрЗаменить(<Строка>,<СтрокаПоиска>,<СтрокаЗамены>)
Данные метод возвращается строку, в которой будет выполнена замена или нет, в зависимости от того найдена строка поиска или нет.
Пример.
ФИОНеПравильное = "Иванов_Андрей_Игоревич"; Сообщить(ФИОНеПравильное); ФИОВерное = СтрЗаменить(ФИОНеПравильное,"_"," "); Сообщить(ФИОВерное); ФИОБезОтчетства = СтрЗаменить(ФИОВерное," Игоревич",""); Сообщить(ФИОБезОтчетства);
Результат:

Как видите, при помощи этого метода можно не только менять символы, но и вырезать не нужные символы.
Функции для многострочных строк в 1С
Из предыдущей статьи вы знаете, что в 1С можно задать многострочную строку, делается это при помощи символа «|». Сейчас мы разберем несколько функций, которые могут пригодиться при работе с многострочной строкой.
СтрЧислоСтрок(<Строка>) – позволяет узнать, сколько в строке строк.
Пример.
СтрокаСПереносом = "Первая |Вторая |Третья"; КоличествоСтрок = СтрЧислоСтрок(СтрокаСПереносом); Сообщить(СтрокаСПереносом); Сообщить("Количество строк: " + КоличествоСтрок);
Результат

СтрПолучитьСтроку – позволяет получить строку из многострочной строки по номеру, имеете следующий синтаксис: СтрПолучитьСтроку(<Строка>, <НомерПолучаемойСтроки>). <НомерПолучаемойСтроки> — начинается с единицы.
Пример
СтрокаСПереносом = "Первая |Вторая |Третья"; ВтораяСтрока = СтрПолучитьСтроку(СтрокаСПереносом,2); Сообщить(СтрокаСПереносом); Сообщить("Вторая строка из предыдущей стороки с переносом: |" + ВтораяСтрока);
Результат

В этой статье я разобрал основные функции, которые были в платформе 8.1, в платформе 8.2 и перешли в платформу 8.3 (кроме функции СтрНайти, но это улучшенная версия функция Найти, которая была в старых платформах) . В следующей статье рассмотрим функции работы со строками, которые появились в платформе 8.3:
Статьи о примитивных типах
Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 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