Перейти к содержанию

пстр

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

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

Синтаксис

пстр(текст, позиция, длина)

Параметры:

  • текст — исходное значение, из которого необходимо получить часть текста. Обязательный параметр;
  • позиция — номер символа, с которого начинается нужный фрагмент. Обязательный параметр. Отсчёт начинается с 1;
  • длина — количество символов, которое необходимо получить. Обязательный параметр.

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

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

Возвращаемое значение

Функция возвращает указанную часть исходного текста.

Например:

пстр("ДОГ-2026-125", 5, 4)

Результат:

2026

В этом выражении 5 указывает, с какого символа начать, а 4 — сколько символов получить.

Примеры

Получение текста от известной позиции до конца строки

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

Например, поле номерДокумента содержит:

ДОГ-125/2026

Выражение:

пстр(номерДокумента, 5, длина(номерДокумента))

вернёт:

125/2026

Такой вариант подходит и для значений разной длины:

ДОГ-15/2026
ДОГ-125/2026
ДОГ-12548/2026

Начало остаётся одинаковым — пятый символ, а длина позволяет получить оставшуюся часть значения до конца.


Получение текста от найденного фрагмента

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

Например, поле реквизиты содержит:

ИНН: 7701234567; КПП: 770101001

Нужно получить только значение КПП.

пстр(реквизиты, поиск(реквизиты, "КПП: ") + длина("КПП: "), длина(реквизиты))

Результат:

770101001

Здесь:

  • поиск находит, где начинается КПП:;
  • длина("КПП: ") позволяет пропустить название реквизита и пробел после него;
  • длина(реквизиты) позволяет получить оставшийся текст до конца;
  • пстр возвращает нужную часть значения.

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

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


Получение текста между двумя фрагментами

С помощью поиск можно вычислить не только начало, но и длину нужной части.

Например, поле основание содержит:

Договор поставки №125/2026 от 14.09.2026

Нужно получить только номер договора:

125/2026

Выражение:

пстр(основание, поиск(основание, "№") + 1, поиск(основание, " от ") - поиск(основание, "№") - 1)

Результат:

125/2026

В этом случае:

  • начало определяется по символу ;
  • конец — по тексту от;
  • количество символов между ними рассчитывается непосредственно в выражении.

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

№15/2026
№125/2026
№12548/2026