Посчитать количество символов в строке 1с

Обновлено: 05.07.2024

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

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

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

В данном разделе будут приведены основные функции, позволяющие изменять строки в 1с, либо анализировать информацию содержащуюся в них.

СтрДлина

СтрДлина(<Строка>). Возвращает количество символов содержащихся в строке, переданной в параметре.

Итогом выполнения данного кода будет вывод на экран количества символов строки: 11.

СокрЛ

СокрЛ(<Строка>). Отсекает незначащие символы, стоящие слева от первого значащего символа в строке.
Незначащие символы:

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

СокрП

СокрП(<Строка>). Отсекает незначащие символы, стоящие справа от первого значащего символа в строке.

СокрЛП

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

Пример 5. Убрать незначащие символы стоящие слева и справа в наименовании контрагента.

Лев(<Строка>, <ЧислоСимволов>). Получает первые символы строки, число символов указывается в параметре ЧислоСимволов. Если указанное количество символов превышает длину строки, то возвращается вся строка.

Пример 6. Пусть в структуре Сотрудник содержаться имя, фамилия и отчество сотрудника. Получить строку с фамилией и инициалами.

Прав(<Строка>, <ЧислоСимволов>). Получает последние символы строки, число символов указывается в параметре ЧислоСимволов. Если указанное количество символов превышает длину строки, то возвращается вся строка.

Сред(<Строка>, <НачальныйНомер>, <ЧислоСимволов>). Получает подстроку из строки переданной в параметре Строка, начиная с символа номер которого указан в параметре НачальныйНомер и длиной переданной в параметр ЧислоСимволов. Нумерация символов в строке начинается с 1. Если в параметре НачальныйНомер указано значение, меньшее или равное нулю, то параметр принимает значение 1. Если параметр ЧислоСимволов не указан, то выбираются символы до конца строки.

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

СтрНайти

СтрНайти(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>). Осуществляет поиск указанной подстроки в строке, возвращает номер позиции первого символа найденной подстроки. Рассмотрим параметры данной функции:

  • Строка. Исходная строка;
  • ПодстрокаПоиска. Искомая подстрока;
  • НаправлениеПоиска. Указывает направление поиска подстроки в строке. Может принимать значения:
    • НаправлениеПоиска.СНачала;
    • НаправлениеПоиска.СКонца;

    ВРег(<Строка>). Преобразует все символы указанной строки в 1с 8 к верхнему регистру.

    НРег(<Строка>). Преобразует все символы указанной строки в 1с 8 к нижнему регистру.

    ТРег(<Строка>). Преобразует строку следующим образом: первый символ каждого слова переводится в верхний регистр, остальные символы слова переводятся в нижний регистр.

    Символ

    Символ(<КодСимвола>). Получает символ по его коду в кодировке Unicod.

    КодСимвола

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

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

    ПустаяСтрока(<Строка>). Проверяет состоит ли строка только из незначащих символов, то есть является ли она пустой.

    Пример 15. Проверить является ли пустой строка состоящая из трех пробелов.

    СтрЗаменить

    СтрЗаменить(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>). Находит в исходной строке все вхождения подстроки поиска и заменяет ее на подстроку замены.

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

    СтрЧислоСтрок(<Строка>). Позволяет посчитать количество строк в многострочной строке. Для перехода на новую строку в 1с 8 используется символ ПС (символ перевода строки).

    Итогом выполнения данного кода будет вывод на экран количества строк в тексте: 3

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

    СтрПолучитьСтроку(<Строка>, <НомерСтроки>). Получает строку в многострочной строке по ее номеру. Нумерация строк начинается с 1.

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

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

    Итогом выполнения данного кода будет вывод на экран числа вхождений: 2.

    СтрНачинаетсяС

    СтрНачинаетсяС(<Строка>, <СтрокаПоиска>). Проверяет начинается ли строка переданная в первом параметре, со строки во втором параметре.

    Пример 20. Определить начинается ли ИНН выбранного контрагента с цифры 1. Пусть в переменной Контрагент хранится ссылка на элемент справочника Контрагенты.

    СтрЗаканчиваетсяНа

    СтрЗаканчиваетсяНа(<Строка>, <СтрокаПоиска>). Проверяет заканчивается ли строка переданная в первом параметре, на строку во втором параметре.

    Пример 21. Определить заканчивается ли ИНН выбранного контрагента на цифру 2. Пусть в переменной Контрагент хранится ссылка на элемент справочника Контрагенты.

    СтрРазделить

    СтрРазделить(<Строка>, <Разделитель>, <ВключатьПустые>). Разделяет строку на части по указанным символам-разделителям и записывает полученные строки в массив. В первом параметре хранится исходная строка, во втором строка содержащая разделитель, в третьем указывается, нужно ли записывать в массив пустые строки (по умолчанию Истина).

    В результате выполнения будет получен массив с числами от 1 до 3-х.

    СтрСоединить

    СтрСоединить(<Строки>, <Разделитель>). Преобразует массив строк из первого параметра в строку, содержащую все элементы массива через разделитель, указанный во втором параметре.

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

    Прочитайте статью про работу с числами: Число в 1С 8.3 — функции работы с числами

    Войдите как ученик, чтобы получить доступ к материалам школы

    Внутренний язык программирования 1С 8.3 для начинающих программистов: работа со строками в 1С

    Автор уроков и преподаватель школы: Владимир Милькин

    Друзья, сегодня будет интереснейший урок. Мы научимся выполнять операции со строками (мы проходили их здесь).

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

    И 1с в этом смысле не исключение. Я, как обычно, прошу вас повторять и проверять у себя весь код, который мы будем писать в этом уроке.

    Откуда в программе появляются строки

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

    . и далее использовать его по своему усмотрению:

    Бывает и так, что значение строки должен ввести сам пользователь. Это делается при помощи команды ВвестиСтроку:

    Из чего состоит строка

    Любая строка состоит из символов.

    К примеру, строка "привет" состоит из символов 'п', 'р', 'и', 'в', 'е', 'т'.

    К этим символам можно обращаться по их порядковому номеру. При этом нумерация символов в строке (в отличие от коллекций) начинается не с 0, а с 1.

    Узнать общее количество символов в строке можно при помощи функции СтрДлина. Она принимает на вход строку и возвращает нам число символов в этой строке.

    Таким образом, цикл обхода строки будет таким:

    Если мы запустим эту программу на компьютере, то увидим такой результат:

    Мы научились получать номера символов в строке, но как получать сами символы?

    За получение нужного символа (или даже группы символов) из строки отвечает функция Сред (сокращение от слов "средина", "средний").

    Она принимает три параметра:

    • Саму строку.
    • Номер символа в строке, который нужно получить.
    • Количество символов, которое нужно получить.

    В нашем случае мы будем получать по одному символу, поэтому третий параметр у нас всегда будет равен 1.

    Итак, перепишем наш код вот так:

    Теперь вывод будет совсем другим:

    Что представляет из себя символ

    Мне иногда кажется, что всё в этом мире есть числа . И символы строки, кстати, не исключение.

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

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

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

    Давайте выведем числовой код каждого символа нашей строки:

    Запустим эту программу, вывод будет таким:

    Получается, что, к примеру, символу 'п' соответствует числовой код 1087? Да, это действительно так. Проверим это.

    Для этого я сообщу вам способ для обратного перевода: из числового кода в символ. За такой перевод отвечает функция Символ. Она принимает на вход числовой код, а возвращает символ.

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

    Давайте представим, что у нас есть две вот такие строки .

    . и мы хотим сложить (ещё говорят "склеить", "объединить") эти строки вместе, чтобы за значением первой строки сразу следовало значение второй.

    Это делается при помощи оператора плюс (+), вот так:

    Выведем эту строку пользователю:

    Выглядит не очень, правда?

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

    Вот так гораздо лучше!

    Поиск в строке

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

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

    К примеру, если пользователь введёт строку "высыпаться по утрам - счастье", то программа должна ему сказать, что слово "счастье" есть в строке и оно находится в позиции 23.

    Будем писать программу по частям.

    Сначала напишем ввод строки от пользователя:

    За поиск в строке отвечает функция СтрНайти.

    На вход она принимает 2 параметра (на самом деле параметров больше, но мы рассмотрим только первые два):

    • Строку, в которой надо искать.
    • Часть строки (её ещё называют "подстрока"), которую надо найти.

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

    С учётом этого продолжим написание программы вот так:

    Замена в строке

    А давайте подшутим над пользователем?

    Пусть он введёт строку со словом "счастье", а мы выведем его же строку, в которой заменим слово "счастье", например, на "удовольствие".

    За замену одной части строки на другую отвечает функция СтрЗаменить.

    На вход она принимает 3 параметра:

    • Строку, в которой нужно сделать замену.
    • Подстроку, которую надо найти и заменить.
    • Подстроку, на которую нужно заменить.

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

    Верхний и нижний регистры

    А вы заметили, что один и тот же символ может иметь два варианта, например: 'п' и 'П'. Первый вариант называется "нижний регистр", а второй - "верхний регистр".

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

    Именно поэтому для компьютера, к примеру, строка "привет" будет не равна строке "Привет":

    Компьютер при сравнении строк сравнивает числовой код каждого символа одной строки с соответствующим ему (по порядку) числовым кодом символа другой строки. И если есть хотя бы одно неравенство - строки считаются различными.

    Но у нас есть замечательная возможность менять регистр строк: из верхнего в нижний и наоборот. За это отвечают функции НРег (сокращение от "нижний регистр") и ВРег (сокращение от "верхний регистр").

    Когда это может быть полезно? Вспомните задачу, когда мы заменяли слово "счастье" на "удовольствие".

    Функция СтрЗаменить (как и Найти) ищет подстроку с учётом регистра. То есть если пользователь введет вместо "счастье", например, "Счастье", то программа не найдёт этого вхождения.

    И чтобы поиск и замена не зависели от того в каком регистре ввёл строку пользователь, мы напишем вот так:

    Теперь, даже если пользователь введёт "Любимая работа - это СЧАСТЬЕ!" программа сможет найти слово "счастье" и вывести пользователю "любимая работа - это удовольствие!".

    Подведём итоги

    Мы рассмотрели основные операции над строками, но на самом деле их больше.

    Некоторые из них вы можете изучить вместе с примерами в справочнике по языку 1с.

    Функции для работы со строками в 1С 8.2 и 8.3

    Строка

    Функция Строка(x) возвращает текстовое представление переданного ей значения “x”.

    СтрДлина

    Функция СтрДлина(x) вычисляет количество символов в строке “x”, учитывая пробелы и ничего не значащие символы.

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

    Функции СокрЛП(x), СокрЛ(x) и СокрП(x) убирают пробелы и ничего не значащие символы у переданной строки “x” с обеих сторон, слева и справа соответственно.

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

    Функции Лев(x, y) и Прав(x, y) возвращают количество символов “y” с левого или правого края переданной им строки “x”. А функция Сред(x, y, z) возвращает количество символов “z” из указанного места “y” переданной строки “x”.

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

    Сообщить(ТРег("Каждое слово с заглавной буквы")); //Каждое Слово С Заглавное Буквы

    Найти

    Функция Найти(x, y) возвращает номер первого символа первого вхождения подстроки “y” в строку “x”, если, конечно, такое вхождение найдено (при этом нумерация начинается с 1). Если же вхождений не найдено, то функция возвращает 0.

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

    Функция СтрЧислоВхождений(x, y) возвращает количество вхождений подстроки “y” в строку “x”.

    СтрЗаменить

    Функция СтрЗаменить(x, y, z) позволяет в указанной строке “x” заменить все вхождения одной подстроки “y” на другую “z”, результатом выполнения функции будет строка с проведенными заменами.

    Сообщить(СтрЗаменить("тест1,тест2,тест3,тест4", ",", " ")); //тест1 тест2 тест3 тест4

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

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

    Функция СтрЧислоСтрок(x) возвращает количество строк в многострочном тексте “x”.

    МногострочныйТекст = СтрЗаменить("тест1,тест2,тест3,тест4", ",", Символы.ПС); //тест1 тест2 тест3 тест4

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

    Функция СтрПолучитьСтроку(x, y) возвращает строку с номером “y” из многострочного текста “x”.

    МногострочныйТекст = СтрЗаменить("тест1,тест2,тест3,тест4", ",", Символы.ПС); //тест1 тест2 тест3 тест4 Сообщить(СтрПолучитьСтроку(МногострочныйТекст, 2)); //тест2

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

    Символы

    Это не функция, а набор наиболее часто используемых специальных символов, состоит из:

    ЗначениеВСтрокуВнутр, ЗначениеИзСтрокиВнутр

    Функция ЗначениеВСтрокуВнутр(x) возвращает системное строковое представление значения “x”. Функция ЗначениеИзСтрокиВнутр(x) проделывает обратную операцию и возвращает значение, полученное из строкового системного представления “x”. Обе эти функции используются для сохранения функциональной совместимости с версией 7.7. Использование для каких-либо других целей не рекомендуется. В новых версиях платформы данные функции не работают (хотя их описание присутствует в справке).

    ВвестиСтроку

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

    Длина строки 1С

    В платформе 1С имеется функция, которая вычисляет длину строки – СтрДлина. Эта функция имеет единственный параметр – строку, и возвращает количество символов в этой строке, т.е. её длину. Причем считаются все символы, в том числе пробелы.

    Длина строки 1С

    Регистр строки 1С

    В 1С имеются функции для работы с регистрами строк.

    НРег – переводит строку в нижний регистр

    ВРег – переводит строку в верхний регистр

    ТРег – переводит строку в титульный регистр (каждое слово начинается с заглавной буквы).

    Регистр строки 1С

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

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

    Часто возникает, что в строке 1С в начале строки или в конце строки есть лишние пробелы, которые нужно убрать. Для этих целей служат следующие функции.

    СокрЛП – убирает пробелы справа и слева строки.

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

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

    Эти функции, также, не изменяют строку в параметре, а создают новую строку с обрезанными пробелами.

    Сократить строку 1С

    Если предыдущие функции сокращали только пробелы, то в платформе 1С имеется возможность сократить и саму строку на нужное количество символов. Или наоборот – оставить нужное количество символов. Для этих целей служат следующие функции.

    Лев – оставляет нужное количество символов слева. Имеет следующий синтаксис: Лев(<Cтрока>,<ЧислоСимволов>)

    Прав – оставляет нужно количество символов справа. Имеет следующий синтаксис: Лев(<Cтрока>,<ЧислоСимволов>)

    Сред – оставляет нужное количество символов в строке. Имеет следующий синтаксис: Лев(<Cтрока>,<НачальныйНомер>, <ЧислоСимволов>).

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

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

    Сократить строку в 1С

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

    Найти в строке 1С

    Иногда нужно найти в строке или нужный символ, или нужную группу символов. Для этих целей применятся функция СтрНайти(). Эта функция имеет следующий синтаксис.

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

    Строка – строка, по которой осуществляется поиск;

    ПодстрокаПоиска – подстрока (или символ), которая ищется в строке поиска;

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

    НачальнаяПозиция – номер символа, с которого начинается поиск. Должен быть в диапазоне от 1 до количества символов, иначе будет ошибка. Необязательный параметр. Если он не задан и установлен параметр НаправлениеПоиска, то в случае поиска Сначала по умолчанию равен 1, а если поиск СКонца, то по умолчанию равен количеству символов в строке.

    НомерВхождения – искомая подстрока (или символ) может несколько раз входить в исходную строку, этот параметр указывает, какое вхождение нас интересует. По умолчанию равен 1.

    И результат работы функции

    Найти в строке 1С

    Т.е. когда мы ищем в строке «Иванов Сидоров Иванов» подстроку «Иванов», то при поиске без дополнительных параметров функция возвращает 1, это номер символа с которого начинается искомая подстрока. Если же мы ищем в направлении СКонца, то возвращается номер символа, с которого начинается второе вхождение подстроки в строку. В третьем случае мы искали в направлении СКонца, но указали номер символа, с которого нужно искать строку, поэтому функция вернула 1, поскольку при поиске начиная с 10 символа с конца строки, искомая подстрока находится только в начале строки. И в последнем примере, мы ищем подстроку с начала, но ищем второе вхождение этой подстроки.

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

    В платформе 1С 8.3. имеется метод, при помощи которого можно менять в строке определенные символы на другие символы.

    Этот метод СтрЗаменить, и он имеете следующий синтаксис: СтрЗаменить(<Строка>,<СтрокаПоиска>,<СтрокаЗамены>)

    Данные метод возвращается строку, в которой будет выполнена замена или нет, в зависимости от того найдена строка поиска или нет.

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

    Как видите, при помощи этого метода можно не только менять символы, но и вырезать не нужные символы.

    Функции для многострочных строк в 1С

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

    СтрЧислоСтрок(<Строка>) – позволяет узнать, сколько в строке строк.

    Число строк в строке 1С

    В этой статье я разобрал основные функции, которые были в платформе 8.1, в платформе 8.2 и перешли в платформу 8.3 (кроме функции СтрНайти, но это улучшенная версия функция Найти, которая была в старых платформах) . В следующей статье рассмотрим функции работы со строками, которые появились в платформе 8.3:

    Статьи о примитивных типах

    Программировать в 1С за 11 шагов

    1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
    2. Научитесь понимать архитектуру 1С;
    3. Станете писать код на языке 1С;
    4. Освоите основные приемы программирования;
    5. Закрепите полученные знания при помощи задачника.

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

    Основы разработки в 1С такси

    1. Очень доступный и понятный язык изложения
    2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
    3. Поймете идеологию управляемого приложения 1С
    4. Узнаете, как разрабатывать управляемое приложение;
    5. Научитесь разрабатывать управляемые формы 1С;
    6. Сможете работать с основными и нужными элементами управляемых форм
    7. Программирование под управляемым приложением станет понятным

    Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
    Только для читателей моего блога,
    промо-код на скидку в 300 рублей на весь комплект: blog


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

    можно оплатить вручную:

    Читайте также: