Как убрать пробелы из строки 1с
Перейти к содержимому

Как убрать пробелы из строки 1с

  • автор:

Как убрать пробелы из строки 1с

Загружаю данные из excel в документ 1с , чужой обработкой. При загрузке почему-то реквизит ИНН типа «строка (!)», разбивается на триады пробелами. Можно ли при дальнейшей обработке в моем документе(поиск по ИНН) убрать из строки эти пробелы? Или каким образом это может разбиваться, чтобы убрать при загрузке? Подскажите пожалуйста!
Никак не могу разобраться, а надо срочно!

СтрЗаменить() ?

СтрЗаменить (StrReplace)
Синтаксис:
СтрЗаменить(, , )
Параметры:
(обязательный)
Тип: Строка. Исходная строка.
(обязательный)
Тип: Строка. Искомая подстрока.
(обязательный)
Тип: Строка. Подстрока, на которую будет заменена подстрока поиска.
Возвращаемое значение:
Тип: Строка. Строка, полученная в результате замены.
Описание:
Находит в исходной строке все вхождения подстроки поиска и заменяет ее на подстроку замены.
Пример:
Результат = СтрЗаменить(Номенклатура.Наименование, «_», » «);

зачем темы повторять?

пока не покажешь код ни кто тебе не подскажет. скорее всего у тебя где-то преобразование в число и обратно идет.

тогда тебе надо убирать не пробелы а НеразрывныеПробелы.

короче сначало код потом совет.

Пробовал, а какие параметры поставить в кавычках? я поставил так,
СтрЗаменить(Номенклатура.Наименование, » «, «»);
не помогло

(4) там кода страниц пять ! выкладывать? и как убрать НеразрывныеПробелы?

(4)
Процедура ВыборЛиста(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
ПоказатьСтрок=25;
ФормаУстановок = ПолучитьФорму(«Настройка»);
ФормаУстановок.ОткрытьМодально();

ЭлементыФормы.ДанныеЛиста.Колонки.Очистить();
ЭлементыФормы.тпСопоставление.Колонки.Очистить();
ДанныеЛиста.Колонки.Очистить();
Для к=1 по ВыбраннаяСтрока[3] цикл
Колонка = ЭлементыФормы.ДанныеЛиста.Колонки.Добавить(«К»+Строка(к));
Колонка.Данные = «К» + Строка(к); // кажись вот так нада
сопКол = ЭлементыФормы.тпСопоставление.Колонки.Добавить(«К»+Строка(к));
сопКол.Данные = «К» + Строка(к);
ДанныеЛиста.Колонки.Добавить(«К»+Строка(к));
КонецЦикла;
Для к=1 по ПоказатьСтрок цикл
нСтр=ДанныеЛиста.Добавить();
Для п=1 по ВыбраннаяСтрока[3] цикл
нСтр[п-1]=ВыбраннаяСтрока[1].Cells(к,п).Value();;
КонецЦикла;
КонецЦикла;
Колонок= ВыбраннаяСтрока[3];
Строк = ВыбраннаяСтрока[2];
ЕХ_объект = ВыбраннаяСтрока[1];
КонецПроцедуры

Идет преобразование в число и бьются на триады — Фоматни:
ИНН = Формат(ЛистПост.Cells(НомерСтроки,3).Value,»ЧГ=0″);

Как убрать пробелы из строки 1с

строка исходная «1 620,5″ тип-строка. Почему СтрЗаменить(стр.Ширина,» «,»») не убирает пробел? Вообще получается что там не пробел вовсе, Найти(стр.Ширина,» «) возвращает 0.
В конце концов нужно Вычислить(«1 620,5»), запятая на точку нормально меняется, а с этим «пробелом» беда какая-то. Что это такое и как с этим побороться?

2353464564557-ая жертва неразнывного пробела

(0)
Пока Найти(СтрИсходная, Символы.НПП) > 0 Цикл
СтрИсходная = СтрЗаменить(СтрИсходная, Символы.НПП, «»);
КонецЦикла;

(2) а зачем здесь цикл?
(3) Для надежности
(3) Что вернет один раз СтрЗаменить от числа «1 000 123,89»?
(6) И что же?

Находит в исходной строке все вхождения подстроки поиска и заменяет ее на подстроку замены.

цикл это хорошо, цикл это надежно (с) борис бритва

Про лишний цикл уже было?

(9) Ссори, переклинило.
Цикл использовал когда из строки с несколькими пробелами надо было сделать один.
«Контрагент_-_1» переделать «Контрагент_1»

Согласен, надежность в наше неспокойное время важна.
(0) оставляй как в (2)
(11) А какая разница? Неразрывный пробел херить или обычный, или ещё какой символ?

(13) наверное имелл в виду из одного, двух, трех, четырех и т.д. подряд идущих пробелов сделать один.тогда в цикле заменяя двойной на одинарный можно достич результата.

(0) вместо вот этой всей тряхомудии со стырзаменитём, сыграй на опережение: Формат(Число, «ЧГ=0»). Чтобы числа получались без всяких там пробелов

(15) прав. Остальные, вон из профессии.

(12) «Тяжесть — это хорошо. Тяжесть — это надежно. Даже если не выстрелит, таким всегда можно дать по голове.»

(15) Дело говоришь)
(15) взял на вооружение «тряхомудие». полезное слово. емкое.
а цикл все же избыточен, имхо
Для не знающих дао программирования
Неразрывный пробел это символ с кодом 160
С теклады алт плюс 0160

(21) есть строка из слов
Слова разделяются пробелами
Количество пробелов подряд идущих Интегра ничего
Пользуясь стрзаменить и символом пробела привести строку к словам с разделением одним пробелом

(0) в принципе можно догадаться почему
Потому что если число представить в виде строки, то такая строка при выводе с недостатком места на пробеле раазделителе разрядов порвется как баян на похоронах тёщи. А это очень некузяво, поэтому и не рвётся и значит там не пробел

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

При работе со строками, для удаления пробелов и других незначащих символов в 1С предусмотрены функции СокрЛ(), СокрП(), СокрЛП().

Удалить пробелы справа, слева

Незначащие символы — это «Пробел», «Неразрывный пробел», «Табуляция», «Возврат коретки», «Перевод коретки», «Перевод строки», «Перевод формы».

//Отсекает незначащие символы слева
Строка = СокрЛ(" Строка ");
//Строка = "Строка ";

//Отсекает незначащие символы справа
Строка = СокрП(" Строка ");
//Строка = " Строка";

//Отсекает незначащие символы слева и справа
Строка = СокрЛП(" Строка ");
//Строка = "Строка";

Удалить все пробельные символы

Для удаления всех пробельных символов строки можно воспользоваться функцией «СтрЗаменить()». Эта функция позволяет заменить одну подстроку на другую.

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

При преобразовании числа к строке могут появиться разделители групп числа. Если разделителем групп является символ «Неразрывный пробел», то функцией СтрЗаменить() можно заменить данный символ на пустую строку.

Иногда, приведенные выше примеры не удаляют пробельные символы. Такая ситуация может возникнуть, например, при работе с Excel файлами. Для решения данной задачи можно попробовать заменить Символ(160) на пустую строку.

Строка = СтрЗаменить(" Строка ", Символ(160), "");
//Строка = "Строка";

Убрать пробелы в 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С КОМБО-2
Только для читателей моего блога, промо-код на скидку в 300 рублей на оба комплекта: blog

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

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

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

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