Новые функции работы со строками. Новые функции работы со строками Все функции работы со строками 1с

Новые функции работы со строками. Новые функции работы со строками Все функции работы со строками 1с

27.03.2024

Механизмов для работы со строками в запросах 1С мало. Во-первых, строки можно складывать. Во-вторых, от строки можно взять подстроку. В-третьих, строки можно сравнивать, в том числе по шаблону. Вот пожалуй и всё, что можно делать со строками.

Сложение строк

Для сложения строк в запросе используется операция «+». Складывать можно только строки ограниченной длины.

ВЫБРАТЬ "Наименование: " + Контрагенты.Наименование КАК Колонка1 ИЗ Справочник.Контрагенты КАК Контрагенты ГДЕ Контрагенты.Ссылка = &Ссылка

Функция Подстрока

ПОДСТРОКА(<Строка>, <НачальнаяПозиция>, <Длина>)

Аналог функции Сред() из объектной модели. Функция Подстрока() может применяться к данным строкового типа и позволяет выделить фрагмент <Строки> , начинающийся с символа номер <НачальнаяПозиция> (символы в строке нумеруются с 1) и длиной <Длина> символов. Результат вычисления функции имеет строковый тип переменной длины, причем длина будет считаться неограниченной, если <Строка> имеет неограниченную длину и параметр <Длина> не является константой или превышает 1024.

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

Внимание! Использование функции ПОДСТРОКА() с целью приведения строк неограниченной длины к строкам ограниченной длины не рекомендуется. Вместо нее лучше использовать операцию приведения типа ВЫРАЗИТЬ().

Функция Подобно

Если нужно убедиться, что строковый реквизит соответствует определённым критериям мы его сравниваем:

ВЫБРАТЬ Контрагенты.Наименование КАК Колонка1 ИЗ Справочник.Контрагенты КАК Контрагенты ГДЕ Контрагенты.Наименование = "Газпром"

А что, если нужно более хитрое сравнение? Не просто на равенство или неравенство, а на подобие определенному шаблону? Вот как раз для этого и создана функция ПОДОБНО.

ПОДОБНО — Оператор проверки строки на подобие шаблону. Аналог LIKE в SQL.

Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если значение выражения удовлетворяет шаблону – результатом оператора будет ИСТИНА, иначе – ЛОЖЬ.

Следующие символы в строке шаблона являются служебными и имеют смысл, отличный от символа строки:

  • % (процент): последовательность, содержащая любое количество произвольных символов;
  • _ (подчеркивание): один произвольный символ;
  • […] (в квадратных скобках один или несколько символов): любой одиночный символ из перечисленных внутри квадратных скобок. В перечислении могут встречаться диапазоны, например a-z, означающие произвольный символ, входящий в диапазон, включая концы диапазона;
  • [^…] (в квадратных скобках значок отрицания, за которым следует один или несколько символов): любой одиночный символ, кроме тех, которые перечислены следом за значком отрицания.

Любой другой символ означает сам себя и не несет никакой дополнительной нагрузки. Если в качестве самого себя необходимо записать один из перечисленных символов, то ему должен предшествовать <Спецсимвол>. Сам <Спецсимвол> (любой подходящий символ) определяется в этом же операторе после ключевого слова СПЕЦСИМВОЛ.

К базовым возможностям языка программирования обычно относят работу с числами и строками. Обычно эти возможности зашиты в код компилятора (или реализованы «базовые» классы языка программирования).

В 1С возможности работы со строками запрограммированы в самой платформе. Сегодня мы рассмотрим особенности работы со строками 1С в программах на встроенном языке 1С.

Значение строки 1С

1. Начнем с самого простого. Создание переменной и присваивание ей строкового константного значения выглядит в 1С так:

Переменная = "Привет, мир! ";

Если требуется в константном строковом значении 1С указать символ кавычки, то его нужно задвоить «»

Переменная = "Привет, ""мир""!";

2. Перенос строки 1С можно указать сразу двумя способами. Первый – с использованием символа |

Переменная = "Привет,
| мир! ";

Второй – с использованием системного перечисления Символы. Оно позволяет добавить как перенос строки 1С, так и другие непечатные символы, например TAB.

Переменная = "Привет" + Символы.ПС + "мир! ";

3. Конфигурации в 1С могут быть разработаны не только для одного языка (русского, английского или другого) – но одновременно для нескольких языков. В этом случае используемый в настоящее время язык выбирается в нижней части окна 1С.

Список языков находится в окне конфигурации в ветке Общие/Языки. Каждый язык имеет короткий идентификатор, такой как ru или eng .

Понятное дело, что при программировании такой конфигурации строки 1С тоже могут быть многоязычными. Для этого есть возможность создать такую строку 1С, указав через; варианты по идентификатору языка:

Переменная = "ru=""Привет, мир! ""; en=""Hello, world! """;

Если Вы будете использовать сформированную так строку 1С как обычно – то она и будет тем, что в ней написано. Для того, чтобы система разбивала ее на два варианта и использовала нужный – необходимо использовать функцию НСтр():

//правильно для двуязычных конфигураций
Сообщить(НСтр(Переменная));

Реквизит с типом строки 1С

Реквизит – это поле справочника/документа 1С. Отличается от переменной в программе на языке 1С тем, что для реквизита точно указывается его тип (число, строка 1С и т.п.). Если Вам нужно освежить в памяти что такое реквизит – посмотрите урок, посвященный .

Если Вы укажите тип реквизита – строка 1С, то дополнительно необходимо указать параметры.

Строки 1С бывают неограниченной длины (указывается как длина = 0) и ограниченной длины, с указанием точного количества символов. Строки 1С неограниченной длины хранятся в отдельной таблице SQL, поэтому их использование менее производительно, чем ограниченной.

Именно поэтому использование строк 1С неограниченной длины имеет свои ограничения – не везде возможно их использовать. Например, нельзя в качестве номера документа, кода справочника, измерения.

Работа со строками 1С

Для работы со строками есть несколько встроенных функций платформы 1С.

  • СокрЛП("Невероятно, но факт!")
    Убирает из строки 1С лишние пробелы. Также можно использовать для преобразования любых типов к строке 1С (например, числа).
  • Переменная = "Вася " + СокрЛП(" плюс") + " Оля"; //будет "Вася плюс Оля"
    Пример суммирования нескольких строковых значений 1С. В результате получится одна строка 1С.
  • Переменная = Лев("Музыка", 2); //будет "Му"
    Переменная = Сред("Музыка", 2, 2); //будет "зы"
    Переменная = Прав("Музыка", 2); //будет "ка"
    Различные варианты получения подстроки из строки 1С.
  • Переменная = Найти("Музыка", "зы"); //будет 3
    Поиск подстроки в строке 1С, начиная с символа 1.
  • Переменная = СтрДлина("Музыка"); //будет 6
    Возвращает количество символов в строке 1С.
  • Сообщить("Привет") //в окне сообщений внизу окна 1С
    Предупреждение("Привет") //всплывающее диалоговое окно
    Состояние("Привет") //в строчке отображения состояния внизу слева
    .

Приведение объектов к строке 1С

Как известно самый популярный формат для обмена структурированной информацией в настоящее время – это XML . Даже последняя версия MS Office Word и Excel сохраняют файлы в этом формате (docx и xlsx соответственно, поменяйте расширение на zip, откройте в архиваторе).

Платформа 1С для обмена данными предоставляет несколько вариантов, основной из которых – также XML.

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

Для справочника по умолчанию это будет его наименование. Для документа – имя документа, номер и дата.

2. Любой объект 1С (с ограничениями) может быть преобразован в XML и обратно. Процесс преобразования называется сериализация.

СтрокаВидаXml = XMLСтрока(Значение); //получаем XML из значения 1С
Значение1С = XMLЗначение(Тип("СправочникСсылка.Номенклатура"),СтрокаВидаXml); //получаем значение 1С из строки XML, необходимо указать тип 1С, который должен быть получен

3. Существует собственный способ платформы 1С преобразовать в строку любой объект 1С. Он мигрировал из версии 1С 7.7. Этот формат не понимают другие программы, но понимает другая 1С, что позволяет легко использовать его для обмена между базами 1С.

Строка = ЗначениеВСтрокуВнутр(Значение1С); //получаем строку 1С из значения 1С
ЗначениеВФайл("C:\MyFile.txt", Значение1С); //другой вариант, получаем файл с сохраненной строкой из значения 1С
Значение1С = ЗначениеИзСтрокиВнутр(Строка); //обратно из строки 1С
Значение1С = ЗначениеИзФайла("C:\MyFile.txt"); //обратно из файла

Редактирование строк 1С на форме

Кроме работы со строками 1С в программе на языке 1С конечно хотелось бы, чтобы пользователь мог их редактировать. Для этого есть несколько возможностей:

1. Самый простой способ – запросить ввод строки 1С по требованию. Этот способ используют при обучении программированию 1С, в жизни он применяется гораздо реже (но применяеся!).

Переменная = "";
Строка = ВвестиЗначение(Переменная, "Введите ФИО");

2. Для вывода реквизита объекта 1С (справочника/документа) или реквизита формы (см. ) чаще всего используют поле ввода. Это самый распространенный в 1С инструмент для работы пользователя с редактированием полей.

3. Возможности поля ввода можно расширить (см. свойства поля ввода, правой кнопкой на нем, подробнее ):

  • Галочка Многострочный режим редактирования
  • Галочка Расширенное редактирование (доступна если установлена предыдущая галочка)
  • Галочка Режим пароля (см. ).

4. Если всех возможностей поля ввода Вам не хватает – есть встроенный редактор. Для его добавлению на форму нужно в меню Форма/Вставить элемент управления добавить Поле текстового документа. В его свойствах можно указать режим его работы – свойство Расширение.

Поле текстового документа нельзя связать напрямую с данными. Необходимо в обработчике события ПриОткрытии() формы (см. ) прописать функцию:

ЭлементыФормы.ИмяЭлементаПолеТекстовогоДокумента.УстановитьТекст(ЗначениеСтрока); //здесь ЗначениеСтрока – это текст полученный, например из реквизита

А в обработчика сохранения – например, в кнопке Сохранить – добавить сохранение:

ЗначениеСтрока = ЭлементыФормы.ИмяЭлементаПолеТекстовогоДокумента.ПолучитьТекст(); //ЗначениеСтрока здесь – это реквизит, куда мы сохраняем значение

5. В 1С версии 8.2.11, в управляемых формах, появилась новая возможность представления строки 1С – поле Форматированный документ.


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

  • В объект 1С, форму которого мы делаем (справочник, документ, обработка и т.п.) – добавьте реквизит с типом ХранилищеЗначения
  • В функции ПриЧтенииНаСервере() установим текст из реквизита

    //здесь Реквизит – это добавленный реквизит объекта 1С
    //здесь ФорматированныйДокумент – это имя поля на форме для редактирования
    &НаСервере

    ФорматированныйДокумент = ТекущийОбъект.Реквизит.Получить();
    КонецПроцедуры

  • В функции ПередЗаписьюНаСервере() или по кнопке запишем текст из поля

    &НаСервере
    Процедура ПриЧтенииНаСервере(ТекущийОбъект)
    ТекущийОбъект.Реквизит = Новый ХранилищеЗначения(ФорматированныйДокумент);
    КонецПроцедуры

Тип «Строка» встречается во всех языках программирования. Он является примитивным, и в 1С существует много функций для работы с ним. В данной статье мы подробно рассмотрим различные способы работы со строковыми типами в 1С 8.3 и 8.2 на примерах.

Строка

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

Строка(Ложь) // возвращает «Нет»
Строка(12345) // возвращает «12 345»
Строка(ТекущаяДата()) //»21.07.2017 11:55:36″

Преобразовывать к строке возможно не только примитивные типы, но и остальные, например элементы справочников, документов.

СокрЛП, СокрЛ, СокрП

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

СокрЛП(» Будут удалены пробелы с обеих сторон «) // «Будут удалены пробелы с обеих сторон»
СокрЛ(» Будут удалены пробелы с обеих сторон «) // «Будут удалены пробелы слева »
СокрП(» Будут удалены пробелы с обеих сторон «) // « Будут удалены пробелы справа»

Лев, Прав, Сред

Данные функции позволяют обрезать часть строки. Функция «Лев()» вернет часть строки с ее левой стороны указанной длины. Функция «Прав()» аналогично, но обрезка производится справа. Функция «Сред()» позволяет указать номер символа, с которого будет выделена строка и ее длину.

Лев(«Строковая переменная», 4) // возвращает «Стро»
Прав(«Строковая переменная», 7) // возвращает «еременная»
Сред(«Строковая переменная», 2, 5)// возвращает «троко»

СтрДлина

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

СтрДлина(«Слово «) // результатом выполнения будет число 5

Найти

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

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

Найти(«раз, два, раз, два, три», «два») // функция вернет число 6

ПустаяСтрока

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

ПустаяСтрока(«Пупкин Василий Иванович») // функция вернет значение Ложь
ПустаяСтрока(» «) // функция вернет значение Истина

ВРег, НРег, ТРег

Данные функции очень полезны при сравнении и преобразовании строковых переменных. «Врег()» вернет исходную строку в верхнем регистре, «НРег()» в нижнем, а «ТРег()» отформатирует ее так, что первый символ каждого отдельного слова будет с большой буквы, а все последующие с маленькой.

ВРег(«ГеНераЛьныЙ дИРЕктОр») // возвращаемое значение – «ГЕНЕРАЛЬНЫЙ ДИРЕКТОР»
НРег(«ГеНераЛьныЙ дИРЕктОр») // возвращаемое значение – «генеральный директор»
ТРег(«ГеНераЛьныЙ дИРЕктОр») // возвращаемое значение – «Генеральный Директор»

СтрЗаменить

Данная функция является аналогом замены в текстовых редакторах. Она позволяет подменять один символ или набор символов другим в строковых переменных.

СтрЗаменить(«красный, белый, желтый», «,», «;») // вернет «красный; белый; желтый»

СтрЧислоСтрок

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

Цикл, в приведенном ниже примере, пройдет три круга, так как функция СтрЧислоСтрок вернет значение 3:

Для инд=1 по СтрЧислоСтрок(«Строка1» + Символы.ПС + «Строка2» + Символы.ПС + «Строка3») Цикл
<тело цикла>
КонецЦикла;

СтрПолучитьСтроку

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

СтрПолучитьСтроку(«Строка1» + Символы.ПС + «Строка2» + Символы.ПС + «Строка3», 2) // вернет «Строка2»

СтрЧислоВхождений

Функция подсчитывает количество вхождений символа или подстроки в искомой строке.

СтрЧислоВложений(«а;б;в;г; «, «;») // функция вернет число 4

Символ и КодСимвола

Эти функции позволяют получать символ по его коду в кодировке Unicode, а так же определять этот код по самому символу.

КодСимвола(«А») // функция вернет число 1 040
КодСимвола(1040) // функция вернет «А»

Частые задачи при работе со строками

Объединение строк

Чтобы объединить несколько строк (произвести конкатенацию) достаточно использовать оператор сложения.

«Строка 1″ + » Строка 2″ //результатом сложения двух строк будет «Строка 1 Строка 2»

Преобразование типов

Для того, чтобы преобразовать тип в строку, например, ссылку на элемент справочника, число и прочее, достаточно использовать функцию «Строка()». Функции, подобные «СокрЛП()» так же будут преобразовывать переменные в строку, но уже сразу с отсечением незначащих символов.

Строка(1000) // вернет «1 000»

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

СтрЗаменить(Строка(1000),Символы.НПП,»») // вернет «1000»

Строка(Формат(1000,»ЧГ=»)) // вернет «1000»

Кавычки в строке

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

Заголовок = Строка(«ООО «»Рога и копыта»» — это мы!») // вернет «ООО «Рога и копыта» — это мы!»

Многострочность, перенос строки

Для того, чтобы создать многострочный текст достаточно добавить в него символы переноса строки (Символы.ПС).

МногострочныйТекст = «Первая строка» + Символы.ПС + «Вторая строка»

Как убрать пробелы

Для того, чтобы убрать пробелы справа или слева можно воспользоваться функцией «СокрЛП()» (а так же «СокрЛ()» и «СокрП()»):

СтрокаБезПробелов = СокрЛП(» Много букв «) // функция вернет значение «Много букв»

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

СтрокаБезПробелов = СтрЗаменить(Строка(99999),Символы.НПП,»») // вернет «99999»

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

СтрокаБезПробелов = СтрЗаменить(« п р и в е т», » » ,»») // вернет «привет»

Сравнение строк между собой

Сравнить сроки можно обычным знаком равенства. При сравнении учитывается регистр.

«Здраствуйте» = «здравствуйте» // вернет Ложь
«Здраствуйте» = «Здравствуйте» // вернет Истина
«Здраствуйте» = «До свидания» // вернет Ложь

ЧАСТЬ 1. МЕТОДЫ (26).

1.1. Базовые методы (10). Независимые, построены на своих простых алгоритмах.

Стр_Дополнить() (дополнение справа-слева указанными символами).

Стр_Инверс () (инверсия - символы справа на лево).

Стр_Коды() (коды символов через ”,” и массив с кодами)

Стр_Символы() (строка из кодов через ”,” или из массива с кодами)

Стр_ЗаменитьСимволы() (замена одних символов на другие).

Стр_ИзМассива() (строка из массива фрагментов через разделитель)

Стр_НайтиВх() (поиск подстроки (в т.ч справа) с указ. номером вхождения).

Стр_НайтиГр() (Поиск группы символов, входящих в указанный набор символов)

Стр_НайтиЧисл() (Поиск числа, в т. ч справа с указанным номером вхождения)

Стр_Интерпретировать() (в массив, согласно установленному синтаксису)

1.2. Производные методы (12). Собственно, это применение четырёх обобщенных методов-алгоритмов (см. Часть 2)

Стр_Число() (с начала и с конца строки, не ”боиться” нецифровых символов.

Стр_Найти() (поиск подстроки (в т.ч без учета регистра и справа) с указ. номером вхождения).

Стр_Заменить() (искать (в т.ч. без учета регистра и справа), и заменять подстроки-разделители).

Стр_Кусок() (кусок строки между указанными вхождениями разделителя (слева или справа)).

Стр_ЗаменитьКусок() (замена в исходной строке ”куска ” на указанную строку).

Стр_ВМассив() (между указанными вхождениями разделителя (в т.ч. справа и без регистра).

Стр_ПеренестиПоСлогам() (разбить на подстроки ”Жёстко”, с дефисом).

Стр_ПеренестиПоСловам() (разбить на подстроки “Мягко”)

Стр_Разрезать() (“Разрезать” на подстроки указанных длин)

Стр_СокрЛ() (заменить лев. группу "сокращаемых" символов на "строку замены"

Стр_СокрП() (заменить прав. группу "сокращаемых" символов на "строку замены"

Стр_СокрС() (заменить посредине группы "сокращаемых" символов на "строку замены"

Стр_Расширить (расширение до указ. длины за счет увеличения колич. указанных символов)

1.3. Детализованные методы (3). "Препарирование" строки с переносом в таблицу с детальной информацией.

Стр_вТаблВх() (в таблицу согласно системе вложенных разделителей).

Стр_вТаблГр (в таблицу согласно многоуровневому фильтру).

Стр_вТаблЧисел (в таблицу с числами и фрагментами между ними).

ЧАСТЬ 2. ОБОБЩЕННЫЕ МЕТОДЫ-АЛГОРИМЫ (3).

Стр_Вхождение() (методы ”Найти” и ”Заменить”).

Стр_Фрагменты() (методы ”Кусок”,”ЗаменитьКусок,”ВМассив”,”вТаблВх”).

Стр_Сокр () (методы "СокрЛ","СокрП","СокрС","Расширить”.

Стр_Разбить() (методы “ПеренестиПоСлогам”,”ПеренестиПоСловам”,”Разрезать”).

ЧАСТЬ 3. УНИВЕРСАЛЬНАЯ ФУНКЦИЯ.

Это своего рода условный программный интерфейс, позволяющий

применять к строке сразу несколько методов. Реализован в виде

функции с семью параметрами ("Демо" построено на этой функции):

Стр_(Методы, Подметоды, Вход, Парам1, Парам2, Длины_Номера_Позиции, ДопВыход)

Параметры:

- ” Методы” - несколько ”совмещаемых” и (или) один “монопольный” метод

(односимвольные коды или названия, можно через ",")

- ”Подметоды” - несколько ”совмещаемых” и(или) “монопольный ” варианты

“монопольного” метода (односимвольные коды или названия);

- “Вход” - Строка, или Массив или Таблица значений;

- “Парам1” - строка поиска, замещения, разделители, фильтры;

- “Парам2” - замещающая строка или символы;

- “Длины_Номера_Позиции ” -Число, Числа через разделитель или массив с Числами;

- “ДопВыход ” - Число или Строка или Массив или Таблица значений;

Имена и(или) односимвольные Коды методов-подметодов, а также числа в

(Длины_Номера_Позиции) могут быть в любом регистре и отделены

любым из следующих разделителей: ”, :;”.

ЧАСТЬ 4. НЕКОТОРЫЕ ПРИМЕРЫ.

ЕстьЧислаВСтроке=(Стр_НайтиЧисл(ВхСтрока)<>Неопределено);

ЕстьЦифрыВСтроке=(Стр_НайтиГр(ВхСтрока,"+0123456789")>0);

ЕстьЛатиница=(Стр_НайтиГр(ВхСтр, Стр_Интерпретировать("lL"))>0);

ЕстьУказанныеЗнаки=(Стр_НнайтиГр(ВхСтр, "+к рогЮ.0р9")>0);

ЕстьНеПечатные=(Стр_НайтиГр(ВхСтр, Стр_Интерпретировать("-l-L-р-Р-П-З-Ц"))>0);

ЧАСТЬ 5. ЗАКЛЮЧЕНИЕ.

Где возможно, обходился одним проходом по строке. Второй проход - обычно уже по фрагментам. Не пользовался встроенной функцией СтрЧислоВхождений().

Использованы встроенные функции: Лев(),Прав()Сред(),СтрДлина()

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

Реализовано в версии 8.3.6.1977.

Мы расширили набор функций, предназначенных для работы со строками. Мы это сделали для того, чтобы дать вам более развитые инструменты для разбора строковых данных. Новые функции будут удобны и полезны в технологических задачах анализа текста. В задачах, связанных с разбором текста, который содержит данные в форматированном виде. Это может быть анализ каких-то файлов, полученных от оборудования, или, например, анализ технологического журнала.

Все действия, которые выполняют новые функции, вы могли выполнять и раньше. С помощью более или менее сложных алгоритмов, написанных на встроенном языке. Поэтому новые функции не дают вам каких-то принципиально новых возможностей. Однако они позволяют сократить количество кода, сделать код более простым и понятным. А кроме этого они позволяют ускорить выполнение действий. Потому что функции, реализованные в платформе, работают, конечно же, быстрее, чем аналогичный алгоритм, написанный на встроенном языке.

Функция форматирования СтрШаблон()

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

СтрШаблон(<Шаблон>, <Значение1-Значение10>)

<Шаблон> - это строка, в которую нужно подставить представления параметров.

<Значение1> , ... <Значение10> - это параметры (максимально - десять), представления которых нужно подставить в строку.

Чтобы указать конкретное место в шаблоне, в которое нужно выполнить подстановку, нужно использовать маркеры вида %1, ... %10. Количество маркеров, задействованных в шаблоне, и количество параметров, содержащих значения, должны совпадать.

Например, результатом выполнения такого оператора:

будет строка:

Ошибка в данных в строке 2 (требуется тип Дата)

Функция работы со строками СтрСравнить()

Эта функция сравнивает две строки без учёта регистра. Например, так:

Это же действие вы могли выполнить и раньше с помощью объекта СравнениеЗначений:

Однако использование новой функции выглядит более простым. А кроме этого функция, в отличие от объекта СравнениеЗначений, работает и в тонком клиенте, и в веб-клиенте.

Функции работы со строками СтрНачинаетсяС(), СтрЗаканчиваетсяНа()

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

Например, их удобно использовать в операторе Если:

Функции работы со строками СтрРазделить(), СтрСоединить()

Эти функции разделяют строку на части по указанному разделителю. Или наоборот, соединяют несколько строк в одну, вставляя между ними выбранный разделитель. Они удобны для создания или анализа логов, технологического журнала. Например, запись технологического журнала вы можете легко разобрать на части, пригодные для дальнейшего анализа:

Функция работы со строками СтрНайти()

Вместо старой функции Найти() мы реализовали новую функцию, которая имеет дополнительные возможности:

  • Поиск в разных направлениях (с начала, с конца);
  • Поиск с указанной позиции;
  • Поиск вхождения с указанным номером (второе, третье и т.д.).

Фактически она дублирует возможности старой функции. Так сделано для того, чтобы сохранить совместимость с модулями, скомпилированными в старых версиях. Старую функцию Найти() рекомендуется больше не использовать.

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

© 2024 nimfettamine.ru - Windows. Железо. Программы. Безопасность. Операционные системы