Перейти к содержимому

Как убрать пробелы в строке 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С » Язык 1С » 1С СокрЛП, 1С СокрЛ, 1С СокрП – удаление лишних символов

1С СокрЛП, 1С СокрЛ, 1С СокрП – удаление лишних символов

Функции 1С СокрЛП(Строка), 1С СокрЛ(Строка) и 1С СокрП(Строка) удаляют из текста лишние символы.

  • Выполняем

    СокрЛП(»
    | Привет, мир!
    | «)

  • 1С возвращает «Привет, мир!»
  • 1С СокрЛ – с начала строки до «значащих символов»
  • 1С СокрП – с последнего «значащего символа» до конца строки
  • 1С СокрЛП – одновременно слева и справа.

«Лишние символы», которые можно убрать с помощью 1С СокрЛ, 1С СокрП, 1С СокрЛП:

  • Пробел
  • Перенос строки, страницы
  • Табуляция.

Лишние пробелы внутри строки, между словами функции 1С СокрЛ, 1С СокрП, 1С СокрЛП не удаляют.

Строковые реквизиты, например справочнков, имеют обычно определенную длину, например возьмем 50 символов. При вводе пользователи может ввести лишние пробелы в конце, особенно если текст в поле не вводится вручную, а копируется из сторонней программы.

Если пользователь ввел значение с пробелом, то сравнение с заданной строкой не будет работать – ведь сравнение учитывает все символы, включая незначимые.

  • Пользователь ввел: «РОССИЯ «
  • Мы сравниваем: Если Страна = «РОССИЯ» //не сработает
  • Чтобы сработало, пишем: Если СокрЛП(Страна) = «РОССИЯ» //сработает

1С СокрЛП() некоторые программисты используют при переводе чисел в строку, вместо Строка(). Дело в том, что числа форматируются при переводе по настройкам локализации с пробелами между разрядами: 22500 -> «22 500». Однако 1С СокрЛП() не убирает пробелы между словами. Вместо этого можно применять Формат():

Число = 22500;
ЧислоСтрокой = Формат(Число, «ЧГ=0»);
//ЧислоСтрокой будет равно «22500»

Добавим в наш анализатор строки программы, позволяющие удалить незначащие символы как слева и справа, так и между словами (про анализатор текста см. выше «Функции работы со строками 1С»).

Только зарегистрированные пользователи VIP группы могут видеть этот контент.

Проголосовать за этот пост:

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

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

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

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

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

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

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

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

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

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

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

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

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

Как убрать пробелы в строке 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) в принципе можно догадаться почему
Потому что если число представить в виде строки, то такая строка при выводе с недостатком места на пробеле раазделителе разрядов порвется как баян на похоронах тёщи. А это очень некузяво, поэтому и не рвётся и значит там не пробел

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

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