пстр
Функция пстр извлекает нужную часть текста, начиная с указанной позиции.
Она пригодится, когда в одном значении содержится несколько частей и из него нужно получить только определённый фрагмент: например, номер документа, код, реквизит или текст после определённого слова.
Синтаксис
пстр(текст, позиция, длина)
Параметры:
текст— исходное значение, из которого необходимо получить часть текста. Обязательный параметр;позиция— номер символа, с которого начинается нужный фрагмент. Обязательный параметр. Отсчёт начинается с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