Работа со строками в 1С 8.3
Меню

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

Строка в 1С:Предприятие – это базовый тип данных, представленный в виде строки в формате unicode. Тип «строка» доступна для работы в тонком клиенте, веб-клиенте, на сервере, толстом клиенте, внешнем соединении, мобильном приложении (клиент/сервер). Тип «строка» может быть передан между клиентом и сервером, может быть сериализован.

Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://www.w3.org/2001/XMLSchema}. Имя типа XDTO: может быть любым из перечисленных: string, anySimpleType, anyURI, duration, gDay, gMonth, gMonthDay, gYear, gYearMonth, NOTATION.

Существует достаточно большой список функции работы со строками в 1С, перечень функций:

  • СтрДлина
  • СокрЛ
  • СокрП
  • СокрЛП
  • Лев
  • Прав
  • Сред
  • СтрНайти
  • ВРег
  • НРег
  • ТРег
  • Символ
  • КодСимвола
  • ПустаяСтрока
  • СтрЗаменить
  • СтрЧислоСтрок
  • СтрПолучитьСтроку
  • СтрЧислоВхождений
  • СтрСравнить
  • СтрНачинаетсяС
  • СтрЗаканчиваетсяНа
  • СтрРазделить
  • СтрСоединить
  • ПолучитьСклоненияСтроки

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

Далее каждая функция будет рассмотрена более детально.

СтрДлина – функция возвращает длину строки (число).

Сигнатура (жирным курсивом выделены обязательные параметры):

  • СтрДлина(< Строка >)

Функция доступна:

Тонкий клиент
  • Веб-клиент
  • Мобильный клиент
  • Сервер
  • Толстый клиент
  • Внешнее соединение
  • Мобильное приложение (клиент)
  • Мобильное приложение (сервер)
  • Пример использования:

    
    	 МояСтрока = "Какой-то текст";
    	 ДлинаСтроки = СтрДлина(МояСтрока);
    	 Сообщить(ДлинаСтроки);
    	 Сообщить(ТипЗнч(ДлинаСтроки));
    

    Результат выполнения:

    14

    Число

    СокрЛ, СокрП, СокрЛП – эти функции очень похожи по своей сути, поэтому будут рассмотрены совместно. Функции убирают пробелы, переносы строк, перевод каретки слева (СокрЛ), справа (СокрП), слева и права (СокрЛП).

    Сигнатура:

    • СокрЛ(<Строка>)
    • СокрП(<Строка>)
    • СокрЛП(<Строка>)

    Функции доступны:

    • тонкий клиент
    • веб-клиент
    • мобильный клиент
    • сервер, толстый клиент
    • внешнее соединение
    • мобильное приложение (клиент)
    • мобильное приложение (сервер)

    Пример использования:

    
    	 МояСтрока = " Какой-то текст
    	 | ";
    	 МояСтрока2 = СокрЛ(МояСтрока);
    	 МояСтрока3 = СокрП(МояСтрока);
    	 МояСтрока4 = СокрЛП(МояСтрока);
    	 Сообщить(СтрШаблон("""%1""", МояСтрока2));
    	 Сообщить(СтрШаблон("""%1""", МояСтрока3));
    	 Сообщить(СтрШаблон("""%1""", МояСтрока4));
    

    Результат выполнения:

    "Какой-то текст

    "

    "Какой-то текст"

    "Какой-то текст"

    Лев, Прав, Сред – данные функции также будут рассмотрены совместно. Функции получают определенное количество символов слева, справа, с середины строки. Результат выполнения – строка.

    Сигнатура (жирным курсивом выделены обязательные параметры):

    • Лев(< Строка >, < ЧислоСимволов>)
    • Прав(< Строка >, < ЧислоСимволов>)
    • Сред(< Строка >, < НачальныйНомер>, <ЧислоСимволов>)

    Функции доступны:

    • тонкий клиент
    • веб-клиент
    • мобильный клиент
    • сервер
    • толстый клиент
    • внешнее соединение
    • мобильное приложение (клиент)
    • мобильное приложение (сервер)

    Пример использования:

    
    	 МояСтрока = "Какой-то текст";
    	 Сообщить(Лев(МояСтрока, 3));
    	 Сообщить(Прав(МояСтрока, 3));
    	 Сообщить(Сред(МояСтрока, 3, 4)); // если не указать параметр число символов, подстрока будет получена до конца строки
    

    Результат выполнения:

    Как (Какой-то текст)

    кст (Какой-то текст)

    кой- (Какой-то текст)

    СтрНайти – Функция находит подстроку (первое вхождение) в строке с учетом регистра. Результат выполнения – строка.

    Сигнатура (жирным курсивом выделены обязательные параметры):

    • СтрНайти(< Строка >, < ПодстрокаПоиска >, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>)

    Где:

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

    Если параметр не задан и в параметре НаправлениеПоиска указано значение СНачала, то значение по умолчанию равно 1.

    Если параметр не задан и в параметре НаправлениеПоиска указано значение СКонца, то значение по умолчанию равно длине строки.

    Допускаются значения от 1 до количества символов в строке, в которой выполняется поиск. Если указано значение, не входящее в диапазон, генерируется ошибка «Неверное значение параметра».

    • НомерВхождения – Число. Номер вхождения подстроки в строку.

    Функция доступна:

    • тонкий клиент
    • веб-клиент
    • мобильный клиент
    • сервер
    • толстый клиент
    • внешнее соединение
    • мобильное приложение (клиент)
    • мобильное приложение (сервер)
    • интеграция

    Пример использования:

    
    	 МояСтрока = "Какой-то текст, просто пробный текст";
    	 Сообщить(СтрНайти(МояСтрока, "текст"));
    

    Результат выполнения:

    10 (Какой-то текст, просто пробный текст)

    
    	 МояСтрока = "Какой-то текст, просто пробный текст";
    	 Сообщить(СтрНайти(МояСтрока, "текст", НаправлениеПоиска.СКонца));
    

    Результат выполнения:

    32 (Какой-то текст, просто пробный текст)

    
    	 МояСтрока = "Какой-то текст, просто пробный текст";
    	 Сообщить(СтрНайти(МояСтрока, "текст",,, 2));
    

    Результат выполнения:

    32 (Какой-то текст, просто пробный текст)

    
    	 МояСтрока = "Какой-то текст, просто пробный текст";
    	 Сообщить(СтрНайти(МояСтрока, "т",, 7));
    

    Результат выполнения:

    10 (Какой-то текст, просто пробный текст)

    ВРег, НРег, ТРег – данные функции будут рассмотрены совместно. Функции изменяют регистр строк. Верхний, нижний, каждое слово с заглавной буквы.

    Сигнатура (жирным курсивом выделены обязательные параметры):

    • Врег(<Строка>)
    • Нрег(<Строка>)
    • Трег(<Строка>)

    Функция доступна:

    • тонкий клиент
    • веб-клиент
    • мобильный клиент
    • сервер
    • толстый клиент
    • внешнее соединение
    • мобильное приложение (клиент)
    • мобильное приложение (сервер)

    Пример использования:

    
    	 МояСтрока = "Какой-то текст";
    	 Сообщить(ВРег(МояСтрока));
    	 Сообщить(НРег(МояСтрока));
    	 Сообщить(ТРег(МояСтрока));
    

    Результат выполнения:

    КАКОЙ-ТО ТЕКСТ

    какой-то текст

    Какой-То Текст

    Символ – функция возвращает символ (строку) код которой был передан (код в формате unicode).

    Сигнатура (жирным курсивом выделены обязательные параметры):

    • Символ(<КодСимвола>)

    Функция доступна:

    • тонкий клиент
    • веб-клиент
    • мобильный клиент
    • сервер
    • толстый клиент
    • внешнее соединение
    • мобильное приложение (клиент)
    • мобильное приложение (сервер)

    Пример использования:

    
    	 Сообщить(Символ(1072));
    	 Сообщить(Символ(1073));
    	 Сообщить(Символ(1074));
    

    Результат выполнения:

    а

    б

    в

    КодСимвола – Функция обратная функции Символ, т.е. на вход принимает строку, возвращает код (число) символа в формате unicode.

    Сигнатура (жирным курсивом выделены обязательные параметры):

    • КодСимвола(< Строка >, <НомерСимвола>)

    Функция доступна:

    • тонкий клиент
    • веб-клиент
    • мобильный клиент
    • сервер
    • толстый клиент
    • внешнее соединение
    • мобильное приложение (клиент)
    • мобильное приложение (сервер)

    Пример использования:

    
    	 Сообщить(КодСимвола("а"));
    	 Сообщить(КодСимвола("б"));
    	 Сообщить(КодСимвола("Слово", 4));
    

    Результат выполнения:

    1072

    1073

    1074

    ПустаяСтрока – функция проверяет, пустая ли строковая переменная, возвращает тип булево. Игнорируются пробелы, переносы строк, перенос каретки.

    Сигнатура (жирным курсивом выделены обязательные параметры):

    • ПустаяСтрока(<Строка>)

    Функция доступна:

    • тонкий клиент
    • веб-клиент
    • мобильный клиент
    • сервер
    • толстый клиент
    • внешнее соединение
    • мобильное приложение (клиент)
    • мобильное приложение (сервер)

    Пример использования:

    
    	 МояСтрока = "Какой-то текст";
    	 МояСтрока2 = "";
    	 МояСтрока3 = " ";
    	 МояСтрока4 = "Текст";
    	 Сообщить(ПустаяСтрока(МояСтрока));
    	 Сообщить(ПустаяСтрока(МояСтрока2));
    	 Сообщить(ПустаяСтрока(МояСтрока3));
    	 Сообщить(ПустаяСтрока(МояСтрока4));
    

    Результат выполнения:

    Нет

    Да

    Да

    Нет

    СтрЗаменить – функция заменяет все подстроки в строке.

    Сигнатура (жирным курсивом выделены обязательные параметры):

    • СтрЗаменить( <Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>)

    Функция доступна:

    • тонкий клиент
    • веб-клиент
    • мобильный клиент
    • сервер
    • толстый клиент
    • внешнее соединение
    • мобильное приложение (клиент)
    • мобильное приложение (сервер)

    Пример использования:

    
    	 МояСтрока = "Како/й-то/ т/ек/ст";
    	 Сообщить(СтрЗаменить(МояСтрока, "/", ""));
    

    Результат выполнения:

    Какой-то текст

    СтрЧислоСтрок – функция возвращает количество строк в многострочном документе, строки разделенные символом переноса строки.

    Сигнатура (жирным курсивом выделены обязательные параметры):

    • СтрЧислоСтрок(< Строка >)

    Функция доступна:

    • тонкий клиент
    • веб-клиент
    • мобильный клиент
    • сервер
    • толстый клиент
    • внешнее соединение
    • мобильное приложение (клиент)
    • мобильное приложение (сервер)

    Пример использования:

    
    	 МояСтрока = "Какой-то текст
    	 |Какой-то текст
    	 |Какой-то текст";
    	 Сообщить(СтрЧислоСтрок(МояСтрока));
    

    Результат выполнения:

    3

    СтрПолучитьСтроку – Получения строки по номеру из многострочного документа.

    Сигнатура (жирным курсивом выделены обязательные параметры):

    • СтрПолучитьСтроку( <Строка>, <НомерСтроки>)

    Функция доступна:

    • тонкий клиент
    • веб-клиент
    • мобильный клиент
    • сервер
    • толстый клиент
    • внешнее соединение
    • мобильное приложение (клиент)
    • мобильное приложение (сервер)

    Пример использования:

    
    	 МояСтрока = "Какой-то текст
    	 |Какой-то текст1
    	 |Какой-то текст3";
    	 Сообщить(СтрПолучитьСтроку(МояСтрока, 2));
    

    Результат выполнения:

    Какой-то текст1

    СтрЧислоВхождений – функция возвращает число вхождений подстроки в строку. Поиск регистронезависимый.

    Сигнатура (жирным курсивом выделены обязательные параметры):

    • СтрЧислоВхождений( <Строка>, <ПодстрокаПоиска>)

    Функция доступна:

    • тонкий клиент
    • веб-клиент
    • мобильный клиент
    • сервер
    • толстый клиент
    • внешнее соединение
    • мобильное приложение (клиент)
    • мобильное приложение (сервер)

    Пример использования:

    
    	 МояСтрока = "Какой-то текст
    	 |Какой-то текст1
    	 |Какой-то текст3";
    	 Сообщить(СтрЧислоВхождений(МояСтрока,"текст"));
    

    Результат выполнения:

    3

    СтрСравнить – функция сравнивает строки без учета регистра. Возвращается число, если -1 – тогда первая строка меньше второй, 1 – первая строка больше второй, 0 – строки равны.

    Сигнатура (жирным курсивом выделены обязательные параметры):

    • СтрСравнить( <Строка1>, <Строка2>)

    Функция доступна:

    • тонкий клиент
    • веб-клиент
    • мобильный клиент
    • сервер
    • толстый клиент
    • внешнее соединение
    • мобильное приложение (клиент)
    • мобильное приложение (сервер)

    Пример использования:

    
    	 МояСтрока1 = "Какой-то текст";
    	 МояСтрока2 = "Какой-то";
    	 Если СтрСравнить(МояСтрока1, МояСтрока2) = 1 Тогда
    	 Сообщить(СтрШаблон("Строка ""%1"" больше ""%2""", МояСтрока1,
    	 МояСтрока2));
    	 ИначеЕсли СтрСравнить(МояСтрока1, МояСтрока2) < 0 Тогда
    	 Сообщить(СтрШаблон("Строка ""%1"" меньше ""%2""", МояСтрока1,
    	 МояСтрока2));
    	 ИначеЕсли СтрСравнить(МояСтрока1, МояСтрока2) = 0 Тогда
    	 Сообщить("Строки равны");
    

    Результат выполнения:

    Строка "Какой-то текст" больше "Какой-то"

    СтрНачинаетсяС, СтрЗаканчиваетсяНа – определяют (с учетом регистра) начинается/заканчивается строка с определенной подстроки. Возвращает булево.

    Сигнатура (жирным курсивом выделены обязательные параметры):

    • СтрНачинаетсяС( <Строка>, <СтрокаПоиска>) СтрЗаканчиваетсяНа( <Строка>, <СтрокаПоиска>)

    Функция доступна:

    • тонкий клиент
    • веб-клиент
    • мобильный клиент
    • сервер
    • толстый клиент
    • внешнее соединение
    • мобильное приложение (клиент)
    • мобильное приложение (сервер)

    Пример использования:

    
    	 МояСтрока = "Какой-то текст";
    	 Если СтрНачинаетсяС(МояСтрока, "как") Тогда
    	 Сообщить(СтрШаблон("""%1"" начинается с ""как""", МояСтрока));
    	 КонецЕсли;
    	 Если СтрЗаканчиваетсяНа(МояСтрока, "ст") Тогда
    	 Сообщить(СтрШаблон("""%1"" заканчивается на ""ст""", МояСтрока));
    	 КонецЕсли;
    

    Результат выполнения:

    "Какой-то текст" начинается с "как"

    "Какой-то текст" заканчивается на "ст"

    СтрРазделить – функция разбивает строку на подстроки, возвращается массив. Последний параметр определяет, нужно ли учитывать пустые строки, по умолчанию значение «Истина».

    Сигнатура (жирным курсивом выделены обязательные параметры):

    • СтрРазделить( <Строка>, <Разделитель>, <ВключатьПустые>)

    Функция доступна:

    • тонкий клиент
    • веб-клиент
    • мобильный клиент
    • сервер
    • толстый клиент
    • внешнее соединение
    • мобильное приложение (клиент)
    • мобильное приложение (сервер)

    Пример использования:

    
    	 МояСтрока = "Какой-то текст, Какой-то текст,, Какой-то текст, Какой-то текст";
    	 МассивПодстрок = СтрРазделить(МояСтрока, ",", Ложь);
    	 МассивПодстрок2 = СтрРазделить(МояСтрока, ",");
    	 Сообщить(ТипЗнч(МассивПодстрок));
    	 Для Каждого Стр Из МассивПодстрок Цикл
    	 Сообщить(СтрШаблон("%1[%2]", Символы.Таб, Стр));
    	 КонецЦикла;
    

    Результат выполнения:

    Массив

    [Какой-то текст]

    [Какой-то текст]

    []

    [Какой-то текст]

    [Какой-то текст]

    Если вывести МассивПодстрок2, результат будет таким:

    Массив

    [Какой-то текст]

    [Какой-то текст]

    [Какой-то текст]

    [Какой-то текст]

    СтрСоединить – функция противоположная СтрРазделить, т.е. склеивает подстроки в одну строку.

    Сигнатура (жирным курсивом выделены обязательные параметры):

    • СтрСоединить( <Строки>, <Разделитель>)

    Функция доступна:

    • тонкий клиент
    • веб-клиент
    • мобильный клиент
    • сервер
    • толстый клиент
    • внешнее соединение
    • мобильное приложение (клиент)
    • мобильное приложение (сервер)

    Пример использования:

    
    	 МояСтрока = "Какой-то текст, Какой-то текст,, Какой-то текст, Какой-то текст";
    	 МассивПодстрок = СтрРазделить(МояСтрока, ",", Ложь);
    	 Сообщить(СтрСоединить(МассивПодстрок, "|"));
    

    Результат выполнения:

    Какой-то текст| Какой-то текст| Какой-то текст| Какой-то текст

    ПолучитьСклоненияСтроки

    Сигнатура (жирным курсивом выделены обязательные параметры):

    • ПолучитьСклоненияСтроки( <СклоняемаяСтрока>, <ОписаниеСтроки>, <ФорматнаяСтрока>)

    Функция доступна:

    • сервер
    • толстый клиент
    • внешнее соединение

    Пример использования:

    
    	 МояСтрока = "токарь третьего разряда";
    	 МассивВариантов = ПолучитьСклоненияСтроки(МояСтрока,
    	 "ПЛ=Мужской",
    	 "ПД=Дательный");
    	 Сообщить(СтрСоединить(МассивВариантов, ", "));
    

    Результат выполнения:

    токарю третьего разряда

    Рассказать друзьям
    Предыдущая статья статья
    Комиссионная торговля в 1С 8.3 Бухгалтерия
    Следующая статья статья
    1С:Управление торговлей 8 версия 11.5: обзор возможностей
    Комментарии