В данном кратком материале, привожу несколько типовых методов работы со строками, используя функционал библиотеки стандартных подсистем (БСП), которые я использую повсеместно в своей практике.

Данные возможности точно существуют в версии БСП от 3.0. Обзор будет основан на изучении общих модулей именно этой версии. А по-факту - сейчас актуальная БСП - это от версии 3.1.6.

Полезные функции работы со строками с примерами

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

Функция 1. РазложитьСтрокуВМассивПодстрок(МояСтрока, Разделитель, ПропускатьПустыеСтроки, СокращатьНепечатаемыеСимволы)

Тип возвращаемого значения: Массив.

Данная функция раскладывает строку в массив (аналог СтрЗаменить с применением Символы.ПС). Пример использования на клиенте:

&НаКлиенте
Процедура Команда1(Команда)

МояСтрока = "Иванов И.И.;г.Новокузнецк;Специалист 1С;01.05.1975";
// Разделитель ";", 
Итог = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(МояСтрока,";",Истина,Истина);
Сообщить(Итог[0]); //Иванов И.И. 

КонецПроцедуры

Возвращает массив "Итог" с элементами, по разделителю ";" (в данном случае), плюс к этому сокращает непечатаемые символы. 

Функция 2. ПодставитьПараметрыВСтроку(ШаблонСтроки,Параметр1, .....  ,Параметр9)

Тип возвращаемого значения: Строка.

Еще одна очень удобная функция, которая позволяет вставить до 9 параметров вашу строку. Работает так:

&НаКлиенте
Процедура Команда1(Команда)

МояСтрока = "Иванов И.И.;%1;Специалист 1С;%2";
Итог = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(МояСтрока,"г.Новокузнецк","01.01.1975");
Сообщить(Итог); //Иванов И.И.;г.Новокузнецк;Специалист 1С;01.01.1975

КонецПроцедуры

Вместо %1 .... %9 - подставляем значения и получаем необходимую строку.

Функция 3. ВставитьПараметрыВСтроку(ШаблонСтроки, Параметры)

Тип возвращаемого значения: Строка.

&НаКлиенте
Процедура Команда1(Команда)

СтруктураПараметров = Новый Структура("Фамилия, Квалификация", "Иванов И.И.", "Специалист 1с");
МояСтрока = "[Фамилия] подтвердил свою квалификацию сертификатом [Квалификация].";
Итог = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(МояСтрока, СтруктураПараметров);
Сообщить(Итог); //Иванов И.И. подтвердил свою квалификацию сертификатом Специалист 1с.

КонецПроцедуры

Параметры заключаем в квадратные скобочки в шаблоне строки "МояСтрока".

Функция 4. ПараметрыИзСтроки(Знач СтрокаПараметров, ";")

Тип возвращаемого значения: Структура.

&НаКлиенте
Процедура Команда1(Команда)
	
		
	МояСтрока = "ИНН=4567435676, КПП=554554545, ТЕЛ=5454455, ПОЧТА=mail@mail.ru ";
	
	Итог = СтроковыеФункцииКлиентСервер.ПараметрыИзСтроки(МояСтрока,",");

	Сообщить(Итог.ИНН); //4567435676
	Сообщить(Итог.КПП); //554554545
	Сообщить(Итог.ТЕЛ); //5454455
	Сообщить(Итог.ПОЧТА); //mail@mail.ru
	
КонецПроцедуры

Удобно, но данную функцию я не особо часто использовал. Но, нужно знать про нее. Сэкономит время, если что!

В коде у меня стоит разделитель ",". 

Функция 5. РазложитьСтрокуВМассивСлов(Знач Значение, РазделителиСлов = Неопределено)

Тип возвращаемого значения: Массив.

Функция, которая позволит разделить вам строку, используя несколько разделителей одновременно.

&НаКлиенте
Процедура Команда1(Команда)
	
		
	МояСтрока = "ИНН=4567435676, КПП=554554545;ТЕЛ=5454455;ПОЧТА=mail@mail.ru ";
	
	Итог = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивСлов(МояСтрока,",;");

	Сообщить(Итог[0]); //ИНН=4567435676
	Сообщить(Итог[1]); //КПП=554554545
	Сообщить(Итог[2]); //ТЕЛ=5454455
	Сообщить(Итог[3]); //ПОЧТА=mail@mail.ru
	
КонецПроцедуры

Я одновременно использую два разделителя - это запятая и точка с запятой. 

Функция 6. ТолькоЛатиницаВСтроке(СтрокаПроверки, УчитыватьРазделителиСлов, ДопустимыеСимволы = "")

Тип возвращаемого значения: Булево.

Функция, позволяющая проверить на корректность заполнения какой-нибудь строки. Возможно использовать допустимые символы.

&НаКлиенте
Процедура Команда1(Команда)
		
	МояСтрока = "Ivanova Marina, Ж";
	
	Итог = СтроковыеФункцииКлиентСервер.ТолькоЛатиницаВСтроке(МояСтрока, Ложь, "Ж");

	Сообщить(Итог);  // Да
	
КонецПроцедуры

В примере будет возврат Истины, поскольку пол, буква "Ж" - добавлен в допустимые символы. Все просто.

Функция 7. СократитьДвойныеКавычки(Знач Значение)

Тип возвращаемого значения: Строка.

Удобная функция, которая удалит двойные кавычки в начале и конце строки.

&НаКлиенте
Процедура Команда1(Команда)

МояСтрока = """Привет всем. Данная строка будет выведена без ""двойных"" кавычек""";
Итог = СтроковыеФункцииКлиентСервер.СократитьДвойныеКавычки(МояСтрока);
Сообщить(Итог); //Привет всем. Данная строка будет выведена без "двойных" кавычек

КонецПроцедуры

Функция 8. ЭтоУникальныйИдентификатор(Знач Значение)

Тип возвращаемого значения: Булево.

Проверка, является ли значение уникальным идентификатором. Использует маску-шаблон:

&НаКлиенте
Процедура Команда1(Команда)

МояСтрока = "sfsdf-sdfsd-sfsff";
Итог = СтроковыеФункцииКлиентСервер.ЭтоУникальныйИдентификатор(МояСтрока);
Сообщить(Итог); //Нет (Ложь) 

КонецПроцедуры

Функция 9. ДополнитьСтроку(Значение, ДлинаСтроки, Символ = "0", Режим = "Слева")

Тип возвращаемого значения: Строка.

Добивает строку слева или справа до определенной длины заданными символами. Вот так:

&НаКлиенте
Процедура Команда1(Команда)

МояСтрока = "427380";
Итог = СтроковыеФункцииКлиентСервер.ДополнитьСтроку(МояСтрока, 12, 0, "Слева");
Сообщить(Итог); //000000427380 

КонецПроцедуры

Не нужно заморачиваться с типовым функционалом платформы Лев(), Прав().

Функция 10. ПреобразоватьЧислоВРимскуюНотацию(АрабскоеЧисло, ИспользоватьКириллицу = Истина)

Тип возвращаемого значения: Строка. 

Функция преобразовывает арабские цифры (обычные) в римские. Используя кириллицу - римское число будет выведено "русскими" буквами:

&НаКлиенте
Процедура Команда1(Команда)

МояСтрока = 59;
Итог = СтроковыеФункцииКлиентСервер.ПреобразоватьЧислоВРимскуюНотацию(МояСтрока);
Сообщить(Итог); //Л1Х

КонецПроцедуры

Функция 11. ПреобразоватьЧислоВАрабскуюНотацию(РимскоеЧисло, ИспользоватьКириллицу = Истина)

Тип возвращаемого значения: Число. 

Обратная процедура преобразования в арабские цифры. Здесь, опять используем кириллицу, римское число перед обработкой заключили в кавычки:

&НаКлиенте
Процедура Команда1(Команда)

МояСтрока = "Л1Х";
Итог = СтроковыеФункцииКлиентСервер.ПреобразоватьЧислоВАрабскуюНотацию(МояСтрока);
Сообщить(Итог); //59 

КонецПроцедуры

Функция 12. СтрокаЛатиницей(Знач Значение)

Тип возвращаемого значения: Строка.

 Функция, позволяющая перекодировать строку в латиницу, не городя огород:

&НаКлиенте
Процедура Команда1(Команда)

МояСтрока = "Иванов Иван Иванович. Привет всем!";
Итог = СтроковыеФункцииКлиентСервер.СтрокаЛатиницей(МояСтрока);
Сообщить(Итог); //Ivanov Ivan Ivanovich. Privet vsem!

КонецПроцедуры 

Функция 13. СтрокаВДату(Знач Значение)

Тип возвращаемого значения: Дата.

Также мега-полезная функция:

&НаКлиенте
Процедура Команда1(Команда)

МояСтрока = "04.07.2020";
Итог = СтроковыеФункцииКлиентСервер.СтрокаВДату(МояСтрока);
Сообщить(Итог); //04.07.2020 0:00:00 // Тип - Дата

КонецПроцедуры

Функция 14. СтрокаВЧисло(Знач Значение)

Тип возвращаемого значения: Число. 

Функция так же капитально избавляет от "головной боли" и придумывания "велосипедов":

&НаКлиенте
Процедура Команда1(Команда)

МояСтрока = "000 1 256 888.55";
Итог = СтроковыеФункцииКлиентСервер.СтрокаВЧисло(МояСтрока);
Сообщить(Итог); //1 256 888,55 // Тип - Число

КонецПроцедуры

Преобразовывает в тип число, даже удаляет "лидирующие нули" и "видит" пробелы.

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

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

Комментарии (5)


  1. OnlySlon
    16.12.2022 07:41
    +2

    Мои глаза....


  1. rabid_otter
    16.12.2022 07:50

    Какой смысл копировать часть БСП в статью на Хабре?


    1. Naf2000
      16.12.2022 08:54

      Но и нормального мануала по БСП нет


  1. vis_inet
    16.12.2022 10:12

    Подобные функции, конечно, полезные, но пока сильно не все используемые на предприятиях конфигурации содержат БСП.


  1. Sheen_84
    18.12.2022 10:31

    Это все прекрасно описано в комментариях к функциям в самой БСП