Давайте перейдем уже на новый уровень работы со строками и уйдем от типовых скудных возможностей платформы.
В данном кратком обзоре, я приведу несколько мега-удобных "полезняшек" и "ускоряшек" работы со строками, используя функционал библиотеки стандартных подсистем (БСП), которые я использую повсеместно в своей практике. В обзоре приведу не все функции и возможности, а только самые полезные с моей точки зрения.
Пора все-таки отказываться от использования только типовых функций платформы.
Определение версии БСП
Первым шагом определим, включена ли библиотека стандартных подсистем в вашу конфигурацию, а так же ее версию.
Для этого напишем такой небольшой код во внешней обработке:
// Создаем кнопочку "Команда 1" на УФ
&НаКлиенте
Процедура Команда1(Команда)
ПоказатьВерсиюБСП();
КонецПроцедуры
&НаСервере
Процедура ПоказатьВерсиюБСП()
МояСтрока = "Версия библиотеки: %1";
Сообщить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(МояСтрока,СтандартныеПодсистемыСервер.ВерсияБиблиотеки()));
КонецПроцедуры
В мою конфигурацию включена версия БСП 3.0.3.130. Могу использовать функционал работы со строками этой полезной библиотеки.
Полезные функции работы со строками с примерами
Указанные функции выполняются как на клиенте, так и на сервере. Условно обозначим их как функция 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(Команда)
МояСтрока = """Привет всем. Данная строка будет выведена без ""двойных"" кавычек""";
Итог = СтроковыеФункцииКлиентСервер.СократитьДвойныеКавычки(МояСтрока);
Сообщить(Итог); //Привет всем. Данная строка будет выведена без "двойных" кавычек
КонецПроцедуры
Функция такая
Функция СократитьДвойныеКавычки(Знач Значение) Экспорт
Пока СтрНачинаетсяС(Значение, """") Цикл
Значение = Сред(Значение, 2);
КонецЦикла;
Пока СтрЗаканчиваетсяНа(Значение, """") Цикл
Значение = Лев(Значение, СтрДлина(Значение) - 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 // Тип - Число
КонецПроцедуры
Преобразовывает в тип число, даже удаляет "лидирующие нули" и "видит" пробелы.
В статье привел наиболее часто используемые мной функции работы со строками, значительно ускоряющие написание доработок или обработок для конфигурации, основанных на библиотеке стандартных подсистем.
Я привел описание 14 удобных функций библиотеки стандартных подсистем работы со строками, использование которых значительно ускорит процесс разработки, вот они:
1. РазложитьСтрокуВМассивПодстрок(МояСтрока, Разделитель, ПропускатьПустыеСтроки, СокращатьНепечатаемыеСимволы)
2. ПодставитьПараметрыВСтроку(ШаблонСтроки,Параметр1, ..... ,Параметр9)
3. ВставитьПараметрыВСтроку(ШаблонСтроки, Параметры)
4. ПараметрыИзСтроки(СтрокаПараметров, Разделитель)
5. РазложитьСтрокуВМассивСлов(Значение, РазделителиСлов)
6. ТолькоЛатиницаВСтроке(СтрокаПроверки, УчитыватьРазделителиСлов, ДопустимыеСимволы = "")
7. СократитьДвойныеКавычки(Значение)
8. ЭтоУникальныйИдентификатор(Значение)
9. ДополнитьСтроку(Значение, ДлинаСтроки, Символ = "0", Режим = "Слева")
10. ПреобразоватьЧислоВРимскуюНотацию(АрабскоеЧисло, ИспользоватьКириллицу = Истина)
11. ПреобразоватьЧислоВАрабскуюНотацию(РимскоеЧисло, ИспользоватьКириллицу = Истина)
12. СтрокаЛатиницей(Значение)
13. СтрокаВДату(Значение)
14. СтрокаВЧисло(Значение)
Конечно, в БСП есть еще несколько функций для удобства работы со строками, но они в основном максимально-приближены к типовым функциям платформы.
Данный небольшой обзор 14 функций написан, используя версию БСП 3.0.3.130. Версия платформы 1С Предприятия 8.3.16.1063. Спасибо за внимание!
Если вам интересен мой практический подход и информация, которую вы сможете реально использовать, если у вас есть желание, чтобы данный комплекс статей наполнялся практическими материалы для программистов - я не откажусь от поддержки как данной статьи, так и всего комплекса статей в целом.
П.С. Старайтесь использовать БСП, не изобретайте велосипеды! Все уже придумано за вас!
Так же прошу ознакомиться с моей статьей Полезные встроенные функции для работы с печатными формами и не только на УТ 11.4 и БП 3.0