Реализовано в версии 8.3.6.1977.
"Мы расширили набор функций, предназначенных для работы со строками. Мы это сделали для того, чтобы дать вам более развитые инструменты для разбора строковых данных. Новые функции будут удобны и полезны в технологических задачах анализа текста. В задачах, связанных с разбором текста, который содержит данные в форматированном виде. Это может быть анализ каких-то файлов, полученных от оборудования, или, например, анализ технологического журнала.
Все действия, которые выполняют новые функции, вы могли выполнять и раньше. С помощью более или менее сложных алгоритмов, написанных на встроенном языке. Поэтому новые функции не дают вам каких-то принципиально новых возможностей. Однако они позволяют сократить количество кода, сделать код более простым и понятным. А кроме этого они позволяют ускорить выполнение действий. Потому что функции, реализованные в платформе, работают, конечно же, быстрее, чем аналогичный алгоритм, написанный на встроенном языке."
Функции на самом деле удобны и помогают разработчикам в решении повседневных задач, но их нельзя использовать в режиме совместимости. Поэтому придется еще немного подождать, когда уже все потихоньку перейдут на последнии версии платформы, и можно будет не задумываясь использовать нововведения и радоваться жизни.
Когда пишете на "своих" конфигурациях, тогда можно делать что душе угодно, но когда разработка идет в "чужую" конфигурацию - стоит задуматься каким путем пойти:
- Использовать новые функции и обязать заказчика перейти на свежую платформу
- Сделать проверку текущей версии платформы и использовать новые функции и старые механизмы работы
- Использовать только старые механизмы работы
По второму - идеальный вариант, но не каждый разработчик будет перед каждым вызовом новой функции строить городульки чтобы узнать версию платформы. Хотя данный вариант имеет право на жизнь.
Функция работы со строками СтрНайти(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>)
Функция выполняет поиск подстроки в различных направлениях и не только с начала строки.
Сообщить(СтрНайти("2212","1")); //вернет 3
В режиме совместимости 8.3.5 и ниже возникает ошибка
{ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта(1,10)}: Процедура или функция с указанным именем не определена (СтрНайти)
Сообщить(<<?>>СтрНайти("1","2212"));
Остается довольствоваться тем, что имеем
Сообщить(Найти("2212","1")); //вернет 3
меньше возможностей, но не вылетает с ошибкой
Функция Найти() осталась только для совместимости с 8.3.5 и в дальнейшем ожидаем, что ее не станет.
Функция работы со строками СтрШаблон(<Шаблон>, <Значение1-Значение10>)
Функция выполняет замену маркеров подстановки (вида %1) в шаблонной строке на реальные значения.
Сообщить(СтрШаблон("ПРИВЕТ %1 ","МИР!!!")); //вернет ПРИВЕТ МИР!!!
В режиме совместимости возникает ошибка
{ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта(3,10)}: Процедура или функция с указанным именем не определена (СтрШаблон)
Сообщить(<<?>>СтрШаблон("Ошибка в строке "" %1 ""","МояСтрока"));
Функция работы со строками СтрСравнить(<Строка1>, <Строка2>)
Функция выполняет лексикографическое сравнение строк без учета регистра.
Сообщить(СтрСравнить("Первая строка", "Вторая строка")); //вернет 1
Возникающая ошибка
{ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта(5,10)}: Процедура или функция с указанным именем не определена (СтрСравнить)
Сообщить(<<?>>СтрСравнить("Первая строка", "Вторая строка"));
Но можно сделать по-другому
Сравнение = Новый СравнениеЗначений;
Сообщить(Сравнение.Сравнить("Первая строка", "Вторая строка"));
Функция работы со строками СтрНачинаетсяС(<Строка>,<СтрокаПоиска>)
Функция проверяет, что строка начинается на подстроку.
СтрокаПоиска = "http://";
ЭтоВеб = СтрНачинаетсяС("http://google.com", СтрокаПоиска);
Сообщить(ЭтоВеб);//вернет Истина
Возникает ошибка
{ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта(22,10)}: Процедура или функция с указанным именем не определена (СтрНачинаетсяС)
Сообщить(<<?>>СтрНачинаетсяС("http://google.com", "http://"));
Но можно сделать по-старому
СтрокаПоиска = "http://";
Сообщить(Лев("http://google.com",СтрДлина(СтрокаПоиска))=СтрокаПоиска); //вернет истина
Функция работы со строками СтрЗаканчиваетсяНа(<Строка>, <СтрокаПоиска>)
Функция проверяет, что строка оканчивается подстрокой.
СтрокаПоиска = "@mail.ru";
ЭтоМайлРу = СтрЗаканчиваетсяНа("vasya_pupkin@mail.ru", СтрокаПоиска);
Сообщить(ЭтоМайлРу);//вернет Истина
Возникает ошибка
{ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта(22,10)}: Процедура или функция с указанным именем не определена (СтрНачинаетсяС)
Сообщить(<<?>>СтрНачинаетсяС("http://google.com", "http://"));
Но можно сделать по-другому
СтрокаПоиска = "@mail.ru";
Сообщить(Прав("vasya_pupkin@mail.ru",СтрДлина(СтрокаПоиска))=СтрокаПоиска); //вернет истина
Функция работы со строками СтрРазделить(<Строка>,<Разделитель>,<ВключатьПустые>)
Функция работы со строками СтрСоединить(<Строки>, <Разделитель>)
Функция СтрРазделить() разделяет строку на части по указанному разделителю.
Функция СтрСоединить() соединяет строки из массива подстрок.
Массив = СтрРазделить("1,2,3,4,5,6,7,8,9,,10",",",Ложь);//вернет массив
Строка = СтрСоединить(Массив,",")//вернет 1,2,3,4,5,6,7,8,9,10
Удобные функции, но возникает ошибка
{(1,10)}: Процедура или функция с указанным именем не определена (СтрРазделить)
Массив = <<?>>СтрРазделить("1,2,3,4,5,6,7,8,9,,10",",",Ложь);//вернет массив
{(2,10)}: Процедура или функция с указанным именем не определена (СтрСоединить)
Строка = <<?>>СтрСоединить(Массив,",")//вернет 1,2,3,4,5,6,7,8,9,10
Если вы уверены, что разработка будет использоваться на платформе выше 8.3.6.1977, то можете смело использовать все нововведения, иначе придется работать по старинке.