Стандартные возможности работы со строками при помощи БСП, которые уже каждый придумал для себя

—

от автора

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

Данные возможности точно существуют в версии БСП от 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 // Тип - Число  КонецПроцедуры

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

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

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


ссылка на оригинал статьи https://habr.com/ru/articles/705870/


Комментарии

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

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