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