Зачем вообще убирать пробелы?
Пробелы могут вызвать кучу проблем:
- Сравнение строк: «Иванов» и «Иванов » – для 1С это разные значения.
- Поиск в справочнике может не сработать из‑за лишнего пробела в начале.
- При выгрузке в Excel или txt лишние пробелы портят внешний вид отчётов.
- Запросы могут не находить нужные записи, если в базе данных «загрязнены» пробелами.
Поэтому уделять пробелы – полезная привычка.
Убрать пробелы слева и справа
Если нужно убрать пробелы только по краям строки, лучше всего использовать готовые функции 1С:
Строка = СокрЛ(Строка); // убрать пробелы слева
Строка = СокрП(Строка); // убрать пробелы справа
Строка = СокрЛП(Строка); // убрать пробелы слева и справаПример использования:
Строка = " Привет, 1С! ";
Строка = СокрЛП(Строка);
// Результат: "Привет, 1С!"Убрать все пробелы в строке
Если нужно удалить все пробелы из строки, тогда подойдет СтрЗаменить():
СтрокаБезПробелов = СтрЗаменить(Строка, " ", "");Такой способ убирает именно обычные пробелы внутри текста. Например, строка «1 2 3» превратится в «123»:
Строка = "Счет 62 01";
СтрокаБезПробелов = СтрЗаменить(Строка, " ", "");
// Результат: "Счет6201"Этот способ удобен, когда пробелы вообще не нужны, например в кодах, номерах документов или идентификаторах. Но важно помнить: если строка — это обычный текст, удаление всех пробелов может сделать его нечитаемым.
Убрать повторяющиеся пробелы (оставить по одному)
Часто требуется привести строку к нормальному виду: между словами должен быть ровно один пробел, а в начале/конце – ни одного. Можно сделать через цикл Пока – для начинающих самый понятный вариант:
Исходная = " Иванов Петр Сергеевич ";
// 1. Удаляем пробелы по краям
БезПробеловВначале = СокрЛП(Исходная); // "Иванов Петр Сергеевич"
// 2. Заменяем два пробела на один, повторяем, пока есть двойные
Пока Найти(БезПробеловВначале , " ") > 0 Цикл
БезПробеловВначале = СтрЗаменить(БезПробеловВначале , " ", " ");
КонецЦикла;
Сообщить(БезПробеловВначале); // "Иванов Петр Сергеевич"Убрать неразрывные пробелы
Иногда обычная замена пробела не помогает. Это бывает, когда в строке есть неразрывный пробел — такой символ часто появляется после преобразования числа в строку или при копировании данных.
В этом случае можно заменить неразрывный пробел на пустую строку:
СтрокаБезПробелов = СтрЗаменить(Строка, Символы.НПП, "");Или использовать код символа 160:
СтрокаБезПробелов = СтрЗаменить(Строка, Символ(160), "");Это особенно полезно при работе с числовыми строками, где 1С может автоматически вставлять разделители разрядов. Если число сначала преобразуется в строку, 1С может вставить пробелы как разделители тысяч. Например, 10000 может превратиться в «10 000». Если вы именно формируете строку из числа без группировки есть еще один способ, он избавляет от проблемы сразу на этапе преобразования:
СтрокаБезПробелов = Формат(Число, "ЧГ=0");Убрать переносы строк и табуляции
Если строка многострочная, то пробелы — это не только обычный пробел. Там могут быть символы конца строки, переносы и табуляции. В простых случаях их тоже можно заменить через СтрЗаменить():
Строка = СтрЗаменить(Строка, Символы.ПС, "");
Строка = СтрЗаменить(Строка, Символы.ВК, "");Убрать пробелы в запросе 1С
Начиная с версии платформы 8.3.20 в язык запросов были добавлены функции СОКРЛП, СОКРЛ, СОКРП и СТРЗАМЕНИТЬ. Работают они по тому же принципу, что и подобные строковые функции на встроенном языке. Ниже приведен пример использования:
ВЫБРАТЬ
СТРЗАМЕНИТЬ(Ном.Наименование, " ", "") КАК НаименованиеБезПробелов,
СОКРЛП(Ном.Наименование) КАК НаименованиеБезПробеловСлеваСправа,
СОКРЛ(Ном.Наименование) КАК НаименованиеБезПробеловСлева,
СОКРП(Ном.Наименование) КАК НаименованиеБезПробеловСправа,
ВЫРАЗИТЬ(Ном.Наименование КАК Строка(100)) КАК Первые100СимволовНаименования
ИЗ
Справочник.Номенклатура КАК Ном