Убрать пробелы в 1С

В этой статье разберём простые, но рабочие способы, как убрать пробелы в 1С в строках.

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

Для демонстрации сделаем обработку, на управляемой форме которой создадим два реквизит, которые будут на этой форме в виде элементов, а также создадим команду формы с клиентским обработчиком.

Управляемая форма 1С

Самый простой способ убрать пробелы, это воспользоваться функциям СокрЛ, СокрП, СокрЛП. Эти функции убирают пробелы слева, справа и с обеих сторон соответственно. Опробуем их в созданной команде:

&НаКлиенте
Процедура УбратьПробелы(Команда)
	СтрокаБезПробелов = СокрЛ(СтрокаСПробелами);
КонецПроцедуры

Возьмем строку, в которой есть пробелы с обеих сторон

Убрать пробелы в 1С

И используем команду:

Убрать пробелы в 1С

Также для функции СокрП:

СтрокаБезПробелов = СокрП(СтрокаСПробелами);

Убрать пробелы в 1С

Функция СокрЛП уберёт пробелы с обеих сторон:

СтрокаБезПробелов = СокрЛП(СтрокаСПробелами);

Убрать пробелы в 1С

Если нам нужно убрать пробелы во всей строке, то тут следует применять функцию СтрЗаменить.

Функция имеет три параметра. В качестве первого параметра функции выступит сама строка, в которой следует заменить пробелы, второго параметра – символ, который нужно найти для замены, в нашем случае это сам пробел, а в качестве третьего параметр пустая строка.

Получится такой код:

СтрокаБезПробелов = СтрЗаменить(СтрокаСПробелами," ","");

Этот способ удобно использовать, когда нужно разные цифры превратить в одно число.

Убрать пробелы в 1С

Но, бывают случаи, когда нужно отсечь лишние пробелы в строке. Например, мы имеем такую строку: «  всё было     хорошо пока не     пошёл дождь     ». Нужно убрать именно повторяющиеся пробелы, и оставить пробелы между словами.

В этом нам помогут методы СтрРазделить и СтрСоединить.

Метод СтрРазделить возвращает массив, который получится в результате разделения исходной строки по указанному символу. А метод СтрСоединить вернёт строку, которая будет получена из указанного массива со строками.

Метод СтрРазделить  имеет следующий синтаксис:

СтрРазделить(<Строка>, <СимволРазделения>, <ВключатьПустые>)

Где:

Строка – строка, которую нужно разделить;

СимволРазделения – символ, по которому будет разделена строка;

ВключатьПустыебулево значение, если Истина, то будут включены пустые строки.

Метод СтрСоединить имеет следующий синтаксис:

СтрСоединить(<МассивСтрок>, <СимволСоединения>)

МассивСтрок – массив, строки, которого нужно соединить;

СимволСоединения – символ, по которому они будут соединены.

В нашем случае алгоритм будет такой: мы разбиваем строку в массив, обходим массив и убираем все  пробелы, соединяем массив обратно в строку.

&НаКлиенте
Процедура УбратьПробелы(Команда)
	МассивСтрок = СтрРазделить(СтрокаСПробелами," ",Ложь);
	Для н = 0 по МассивСтрок.ВГраница() Цикл 
		МассивСтрок[н] = СокрЛП(МассивСтрок[н]);	
	КонецЦикла;	                              
	СтрокаБезПробелов = СтрСоединить(МассивСтрок," ");
КонецПроцедуры

Алгоритм будет давать следующий результат:

Убрать пробелы в 1С

Убрать пробелы в числе 1С

Если какое-то число выводить в строку, то будут добавлены ненужные пробелы. Для демонстрации добавим на форму нашей обработки реквизит с типом число.

Реквизит формы 1С

При выполнении команды запишем в реквизит СтрокаСПробелами это число.

СтрокаСПробелами = Строка(Число);

У нас получится следующая строка:

Убрать пробелы в числе 1С

Это лидирующие пробелы (или группировка), и они иногда не нужны.

Убрать эти пробелы можно двумя способами.

В первом способе, мы используем уже знакомый на метод СтрЗаменить, только в качестве символа замены нужно использовать символ непрерывного пробела.

СтрокаБезПробелов = СтрЗаменить(Строка(Число),Символы.НПП,"");

С таким результатом:

Убрать пробелы в числе 1С

Или, можно использовать метод Формат, где в качестве первого параметра указываем число, которое нужно форматировать, а в качестве второго параметра — форматную строку, в которой указываем, что отсутствует группировка.

Форматная строка 1С

У нас получится в результате такой код:

СтрокаБезПробелов = Формат(число,"ЧГ=0");

И такой результат:

Убрать пробелы в числе 1С

Успеха в обучении!

Подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»

Программировать в 1С за 11 шагов





Книга написана понятным и простым языком — для новичка.

  1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  2. Научитесь понимать архитектуру 1С;
  3. Станете писать код на языке 1С;
  4. Освоите основные приемы программирования;
  5. Закрепите полученные знания при помощи задачника





О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»




Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Основы разработки в 1С такси
  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu


Также, у меня имеются два комплекта книг, в которых присутствуют обе эти книги:

Комплект книг по разработке в 1С КОМБО-1

Комплект книг по разработке в 1С КОМБО-2
Только для читателей моего блога, промо-код на скидку в 300 рублей на оба комплекта: blog

Вступайте в мои группы:

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

Подписывайтесь на телеграмм-канал: https://t.me/Programming1CNizamutdinov

Обсудить вопросы программирования в 1С (и не только) можно в моём тг-чате

Добавить комментарий

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