Закажите бесплатный расчет стоимости вашей задачи по 1С!
Перезвоним за 10 минут! (в рабочие часы)

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

Строка — примитивный тип данных в языке программирования 1С. Помимо 1С, этот тип данных используется во всех известных языках программирования, обычно он называется «string».

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

Функции работы со строками в 1С

Рассмотрим основные функции встроенного языка программирования 1С.

Строка

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

Пример:

Строка(ТекущаяДата()) //"23.02.2015 21:31:24"

Строка(Истина)  // Да

Строка(1058)  // "1 058"

СтрДлина

Функция позволяет получить количество символов в строке 1C, включая пробелы и незначащие символы.

Например:

СтрДлина("Тестовая строка") // 15

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

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

Полезная функция для удаления незначащих символов в строковом значении. СокрЛ обрабатывает символы, стоящие слева от последнего значащего символа, СокрП — справа. А СокрЛП — справа и слева.

Пример:

СокрЛП(" Слева и справа есть незначащие символы - пробелы ") // получим строку без пробелов слева и справа

Помимо пробелов, функция 1C удаляет такие символы, как перенос строки, неразрывный пробел и т.д.

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

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

Пример:

Лев("Тестовая строка", 4) // "Тест"

Сред("Тестовая строка", 5, 6) // "овая с"

Найти

Функция для поиска подстроки внутри другой подстроки. Синтаксис Найти(<Строка для поиска>, <Подстрока поиска>). Функция возвращает число — номер позиции символа (или символов) в исходной подстроке. Если подстроки не найдено, вернётся число 0. Если в искомой подстроке есть несколько вхождений, вернется номер позиции первого совпадения.

Пример:

Найти("Тестовая строка", "строка") // 10

Найти("Тестовая строка", "123") // вернется 0, подстроки "123" нет в исходной строке

Найти("Тестовая строка", "я") // 8

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

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

Пример:

ВРег("Тестовая строка")  // "ТЕСТОВАЯ СТРОКА"

НРег("Тестовая строка")  // "тестовая строка"

ТРег("Тестовая строка") // "Тестовая Строка"

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

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

Пример:

ПустаяСтрока("Тест") //ложь

ПустаяСтрока(" ") // истина

Аналогично можно проверить строку на пустое значение следующим образом:

СокрЛП(" ") = "" // истина

СтрЗаменить

Функция СтрЗаменить позволяет массово заменить искомое значение на нужное нам. Синтаксис:

Например:

СтрЗаменить("Произвольная Строка", " " , "") //"ПроизвольнаяСтрока"

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

Позволяет получить количество строк в многострочном тексте. Функция считает количество переносов строк (Символы.ПС).

Например, построчная обработка текстового фрагмента:

Для Н=1 по СтрЧислоСтрок(ТекстФайла) Цикл

.....

КонецЕсли;

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

С помощью данной функции можно получить произвольную строку из многострочного текста. Синтаксис — СтрПолучитьСтроку(<Строка>, <Номер строки>).

Пример:

СтрокаНомер5 =  СтрПолучитьСтроку(ИсходнаяСтрока, 5)

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

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

Пример:

СтрЧислоВхождений ("Тестовая строка", "т")  // 2

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

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

Примеры:

КодСимвола("Т")  // 1 058

Символ(1058) // "Т"

Часто встречающиеся задачи по работе со строками в 1С

Рассмотрим классические примеры решения задач в работе с текстовыми переменными.

Конкатенация строк в 1С

Конкатенация, или объединение строк в 1С делается оператором «+».

Например:

"Первая часть строки " + "и вторая" // получим "Первая часть строки и вторая"

Преобразовать число в строку

Тут всё просто. Достаточно использовать метод «Строка()»:

Строка(12355.44) // "12 355,44"

Однако может смущать наличие неразрывного пробела.

Его можно убрать с помощью замены неразрывного пробела на пустую строку:

СтрЗаменить(Строка(12355.44),Символы.НПП,"")  // "12355,44"

или с помощью метода Формат:

Строка(Формат(12355.44,"ЧГ="))

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

Для новичков достаточно трудно установить кавычки внутри строки, хотя в этом нет ничего сложного. Достаточно внутри строки поставить вместо одних кавычек двое.

Например:

Строка("Наша организация называется ""Березка"", мы работаем на рынке с 1999 года")

Символ переноса строки

Символ переноса строки необходим для переноса строки на следующую строку. В 1С это можно сделать с помощью специальной конструкции «Символы.ПС».

Пример:

"Этот текст будет на первой строке" + Символы.ПС + "А этот на второй"

Сравнение строк в 1С

Сравнить строки достаточно просто с помощью оператора сравнения — «=».

Однако для получения корректного сравнения часто требуется возвести строки в один регистр и убрать незначащие символы:

СокрЛП(ВРег(Строка1)) = СокрЛП(ВРег(Строка2))

Таким образом, мы получим более точное сравнение двух строк.

Убрать пробелы в строке 1С

Достаточно часто нужно убрать пробелы в строке 1С.

Если требуется убрать пробелы справа и слева:

ИсходнаяСтрока = СокрЛП(ИсходнаяСтрока)

Если требуется убрать абсолютно все пробелы, можно заменить их на пустую строку:

ИсходнаяСтрока = СтрЗаменить(ИсходнаяСтрока, " " ,"")

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

ИсходнаяСтрока = СтрЗаменить(ИсходнаяСтрока, Символы.НПП ,"")

Другие статьи по 1С:

Если Вы начинаете изучать 1С программирование, рекомендуем наш курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Остались вопросы?

СПРОСИТЕ в комментариях!

Комментариев: 13 на “Работа со строками в 1С 8.3
  1. Как в Запросе вывести в поле текст в две строки, то есть вставить символы перевода строки (CR + LF)?

    Ответить

    • Можете попробовать вот так, т.е. перенос строки прямо внутри кавычек:
      ВЫБРАТЬ
      «Первая строка» + »
      » + «Вторая строка» КАК ПримерСтрокиСПереносом

      Главное, не ставить отступ (табуляцию или пробелы), а то вторая строка будет с таким же отступом.

      Ответить

      • Кавычки автоматически заменились на угловые, но смысл, надеюсь, понятен.

        Ответить

  2. А как убрать гласные из строки?

    Ответить

  3. Нстр() забыли

    Ответить

  4. Добрый день, уважаемые господа,
    Мы создаём базу данных в среде 1С. Номенклатура Продукции содержит символы: тире (-), скобки (), пробелы, символ конца строки и тд. Для поиска нужной позиции мы из файла Excel вставляем позицию номенклатуры в строку поиска в базе данных 1С. Естественно ничего не находим, а позиция эта в базе есть. Разработчик-программист утверждает что убрать символы для проведения поиска невозможно в 1С. Это правда ?

    Ответить

    • Конечно, неправда. Программист может все. Я когда сравниваю две строки, всегда убираю с обоих концов пробелы и перевожу либо в верхний или нижний регистр сравниваемые позиции(это обязательно уже многие годы). А убрать скобки и т.д. внутри сравниваемых реквизитов тоже возможно.

      Ответить

    • При загрузке из файла убрать можно но вот найти в базе игнорируя все это будет проблематично. Запрос тут бесполезен, только пребором а лучше с кешированием, дабы хот как то ускорить. Но все это обязательно очень скажется на производительности особенно если в базе много номенклатуры. Я бы выбрал все наименования из базы, прошелся бы по таблице и изменил их как требуется, потом добавил бы индекс по этому полю и искал бы из файла, но это сработет при условии что хватит памяти на такую таблицу

      Ответить

  5. Добрый день. А как записать в 1с управляющий код — межстрочный интервал?

    Ответить

    • В большинстве случаев нет, т.к. почти везде используется неформатированный текст.

      Ответить

  6. а в шаблоне в печ форме перенос строки( символы.ПС) работает ?

    Ответить

  7. Цитата:
    Однако для получения корректного сравнения часто требуется возвести строки в один регистр и убрать незначащие символы:
    СокрЛП(ВРег(Строка1)) = СокрЛП(ВРег(Строка2))
    Таким образом, мы получим более точное сравнение двух строк.

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

    Ответить

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

Ваш адрес email не будет опубликован.