Консультация Беларусь
Консультация Россия
Блог

СокрЛП(): Особенности при удалении концевых пробелов в строке

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

Часто при описании алгоритмов на встроенном языке в 1С нужно удалять из строк концевые пробелы (слева и справа). 
Например, из строки 
image
нужно получить строку
image
Для этого существуют встроенные функции:
  • СокрЛ(<Исходная строка>) — удалить пробелы слева
  • СокрП(<Исходная строка>) — удалить пробелы справа
  • СокрЛП(<Исходная строка>) — удалить пробелы и справа и слева

Но существует особенность, которую нужно учитывать, если Вы действительно хотите получить строку без концевых пробелов.

Рассмотрим конкретный пример. Конфигурация «Бухгалтерия для Беларуси, редакция 2.1». В конфигурации есть справочник «Банки», настройки стандартных реквизитов «Код» и «Наименование» приведены на скриншоте ниже:
image
Часть содержимого справочника (выделена колонка БИК — это и есть Код в справочнике):
image
Допустим, нужно на основании данных справочника «Банки» получить таблицу с двумя колонками «Ссылка» и «Код» (без концевых пробелов). Для этого можно использовать следующий программный код:
image
Что делает этот код: сначала запросом выбираем данные из справочника Банки, затем, используя функцию СокрЛП() удаляем из строки реквизита «Код» концевые пробелы.
Но в результате выполнения платформа показывает следующее сообщение:
image
Обратите внимание, что несмотря на использование функции СокрЛП() пробелы справа никуда не делись.

Связано это с тем, что в настройках справочника «Банки» для кода выбрана фиксированная длина строки — 11 символов.
При таких настройках, если пользователь укажет код из 5 символов, строка будет дополнена справа 6-ю пробелами. При этом встроенная функция платформы СокрЛП() не удаляет пробелы справа для строк фиксированной длины.

Для того чтобы получить в таблице код без пробелов, можно использовать следующий прием: добавить в таблицу новую колонку «КодБезПробелов» и заполнять её, применяя функцию СокрЛП() к значению в колонке «Код»:
image
Для новой колонки по-умолчанию будет использоваться переменная длина строки, что позволит решить поставленную задачу. Результат выполнения кода после изменения:
image
Таким образом, при работе со строками во встроенном языке 1С нужно обращать внимание на настройку «Допустимая длина строки» и учитывать тот факт, что если эта настройка установлена в значение «Фиксированная», то применение встроенных функции СокрЛ(), СокрП(), СокрЛП() к таким строкам не приводит к удалению концевых пробелов.