Убрать пробелы в строках 1С 8.5

Зачем вообще убирать пробелы?

Пробелы могут вызвать кучу проблем:

  • Сравнение строк: «Иванов» и «Иванов » – для 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СимволовНаименования
ИЗ
   Справочник.Номенклатура КАК Ном

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Отправьте форму и мы вам перезвоним

Отправляя форму вы соглашаетесь с политикой конфиденциальности и даете согласие на обработку персональных данных компании ИП Рыжиченко Антону Ивановичу
Сайт itviar.ru использует cookie для персонализации и хранения настроек.
Отправляя форму вы соглашаетесь с политикой конфиденциальности и даете согласие на обработку персональных данных компании ИП Рыжиченко Антону Ивановичу