Удалить последний символ в строке 1с

Обновлено: 07.07.2024

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

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

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

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

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

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

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


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

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

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


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


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

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

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

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


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

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


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

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

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

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

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

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

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

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

Строка

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

СтрДлина

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

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

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

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

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

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

Найти

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

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

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

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

СтрЗаменить

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Анна Викулина

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • НомерВхождения – Число. Номер вхождения подстроки в строку.
  • тонкий клиент
  • веб-клиент
  • мобильный клиент
  • сервер
  • толстый клиент
  • внешнее соединение
  • мобильное приложение (клиент)
  • мобильное приложение (сервер)
  • интеграция

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Когда заглянул в синтакс-помощник так мне это понравилось, что захотелось написать о работе с строками в «1С:Предприятие».

Строка в 1С относится к примитивному типу данных.

Примитивные типы данных в «1С:Предприятия»: Строка, Число, Булево, Дата, Неопределенно, Null и Тип.


Если посмотреть в справку 1С увидим следующее описание типа Строка (String)
Значения данного типа содержат строку в формате Uni­code произвольной длины.
Если своими словами о строках то получится. Строка — константа, состоящая из различных символов, обрамляется всегда кавычками.

Задание строки
Обращение = “Привет пассажир”;

Многострочные строки в типовых конфигурациях чаще всего создаются с помощью вертикального разделителя “|”:
Строка = “Многострочная
|строка
|пиши
|текст”;

Кавычка внутри строки задаются двойными кавычками.
Строка = ““Текст в кавычках””;

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

Функций по работе со строками

Здесь в краткой форме приведу функций по работе со строками:

ВРег(<Строка>) — Все символы строки функция преобразует в верхний регистр.

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

Лев(<Строка>, <ЧислоСимволов>) – Функция выбирает первые слева символы строки.

Найти(<Строка>, <ПодстрокаПоиска>) — Функция находит вхождение искомой строки как подстроки в исходной строке.

НРег(<Строка>) — Функция преобразует все символы строки в нижний регистр.

Прав(<Строка>, <ЧислоСимволов>) – Данная функция отличается от функций Лев (Left) тем что выбирает последние справа символы строки.

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

Символ(<КодСимвола>) - Функция преобразует код символа в строку, содержащую символ.

СокрЛ(<Строка>) - Функция отсекает незначащие символы, стоящие слева от первого значащего символа в строке.

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

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

Сред(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) — Функция выбирает строку символов, начиная с символа <НачальныйНомер>, общим количеством <ЧислоСимволов>.

СтрДлина(<Строка>) — Функция получает количество символов в строке.

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

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

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

СтрЧислоСтрок(<Строка>) — Функция считает число строк в многострочной строке. В многострочной строке, строки разделены символами перевода строк.

ТРег(<Строка>) — Функция преобразует строку к титульному регистру. Это означает, что у каждого слова первый символ преобразуется к титульному регистру или к верхнему регистру, если титульный регистр для символа не определен. Остальные символы преобразуются к нижнему регистру.

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

Все данные функции подробно описаны в Синтакс-помощник, как начинающему программисту может помочь Синтакс-помощник, я описал в статье СИНТАКС-ПОМОЩНИК, КОНТЕКСТНАЯ ПОДСКАЗКА И ОТЛАДЧИК.

Примеры по работе с строками

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

Для получения строкового представления года следует использовать функцию Формат.

Чтобы преобразовать число к строке без вставки символа-разделителя групп (неразрывного пробела), необходимо применить функцию Формат с параметром ЧГ=0:

Строка Без пробелов.

Проверка строки на пустоту.

Пожалуйста, оставляйте сове мнение, а также вопросы по теме в комментариях.

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

регистр строки

Строковые функции в 1С

Строка

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

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

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

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

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

СтрДлина

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

Найти

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

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

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

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

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

Получите понятные самоучители по 1С бесплатно:

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

СтрЗаменить

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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