Не работает стрзаменить 1с

Содержание
  1. v7: Вопрос про СтрЗаменить()
  2. Не срабатывает функция СтрЗаменить
  3. Не срабатывает СтрЗаменить(. ) — туплю.
  4. Работа со строками в 1С 8.3
  5. Функции работы со строками в 1С
  6. Строка
  7. СтрДлина
  8. СокрЛП, СокрЛ, СокрП
  9. Лев, Прав, Сред
  10. Найти
  11. ВРег, НРег, ТРег
  12. ПустаяСтрока
  13. СтрЗаменить
  14. СтрЧислоСтрок
  15. СтрПолучитьСтроку
  16. СтрЧислоВхождений
  17. Символ и КодСимвола
  18. Часто встречающиеся задачи по работе со строками в 1С
  19. Конкатенация строк в 1С
  20. Преобразовать число в строку
  21. Кавычки в строке 1С
  22. Символ переноса строки
  23. Сравнение строк в 1С
  24. Убрать пробелы в строке 1С
  25. Работа со строками в 1С 8.2 и 8.3
  26. Функции для работы со строками в 1С 8.2 и 8.3
  27. Строка
  28. СтрДлина
  29. СокрЛП, СокрЛ, СокрП
  30. Лев, Прав, Сред
  31. ВРег, НРег, ТРег
  32. Найти
  33. СтрЧислоВхождений
  34. СтрЗаменить
  35. ПустаяСтрока
  36. СтрЧислоСтрок
  37. СтрПолучитьСтроку
  38. Символ, КодСимвола
  39. Символы
  40. ЗначениеВСтрокуВнутр, ЗначениеИзСтрокиВнутр
  41. ВвестиСтроку

v7: Вопрос про СтрЗаменить()

дано:
Стр = «SKR2|221|69400|0|0|0|0|0|»

получаем:
Стр = «SKR2|221|69400||0||0||»

Вопрос: какого фига?

(5)вобще-то это нормально, не всегда нужно сразу все менять. обычно делают так:

While Find(Стр,»|0|») <> 0 Do
StrReplace(Стр,»|0|»,»||»)
EndDo;

(0) Все правильно оно заменило. Сам подумай. Вот у тебя строка
|0|0|0|0|0|, если разбить на строки подзамены, то будет

|0| 0 |0| 0 |0|, вот оно три вхождения и заменяет.

дык ты самолично написал, менять в какой строке менять «|0| 0 |0| 0 |0|».

А сам рассматриваешь уже совершенно другую строку. «||0|0|0|0|»

грубо там все идет.

«SKR2|221|69400|0|0|0|0|0|» начинает искать «|0|» находит, запоминает позицию и изымает нужные симолы. (15)
«SKR2|221|694000|0|0|0|» продложает искать «|0|» находит, запоминает позицию и изымает нужные симолы. (16)
«SKR2|221|6940000» продложает искать «|0|» находит, запоминает позицию и изымает нужные симолы. (17)

потом обратным порядком вставляет то на что ты просил заменить

Метод делает замену в ПЕРВОНАЧАЛЬНОЙ строке, а ты хочешь, чтобы делал замену в ПРОМЕЖУТОЧНОМ РЕЗУЛЬТАТЕ строке.

+(34) ну а в свете (33) промежуточных результатов вообще нет в том виде, в каком ты их себе представляешь.

впрочем, имхо, все правильно. Именно так я и понимал всегда сущность и предназначение этого метода.

Источник

Не срабатывает функция СтрЗаменить

Нужно убрать пробелы из числовых полей

Почему не убирается пробел?

(5) Увы, я в своё время тоже выплясывал чечетку вокруг этих пробелов. Там просто не могу понять, что циферка, это число, представление циферки, это текст, а мне надо оперировать с переводом из числа в текст.

Автор, ерундой не майся и просто используй Формат. Только первым параметром передай число, а не текст

(10) Самое прикольное что даже разрабы в больших фирмах об этом хитром дефолтном преобразовании чисел в строки забывают.
И можно встретить глюки когда «все работало а потом перестало».

Ну да сначала у вас была нумерация «Объект_1», «Объект_2» и т.д.
А потом наступил «Объект_1 001» и словили глюк потому что например пробелы в этих наименованиях недопустимы.

(7)Ну ты же не хочешь сначала почитать, а потом писать. Вот и люди не хотят.

(4)В запросе тебе это не надо.

у меня на днях был запар. представьте PHP в нем есть массив, массивы бывают ассоциативные (аналог структуры ы 1с), числовые (к ним надо обращатся по ЧИСЛОВОМУ индексу, и каждый новый элемент получает инкрементный от последнего индекс).

Читайте также:  Ppl595 u36w не работает

так вот в коде есть запрос в базу и от туда получается числовой массив (в базе он хранится в виде серилизованной строки), я получаю массив и вижу там 3 элемента, при этом в коде обращение идет примерно так «а = массив[20]», где 20 это числовой индекс, я стал искать где это я потерял 17 записей массива, ну нету их и все.

оказалось, что нумерация массива с числовым индексом может идти с пробелами, в моем массиве было 3 элемента с индексами 4,10,20 я себе весь мозг взорвал 🙂 а вы говорите «неразрывный пробел» 🙂

Источник

Не срабатывает СтрЗаменить(. ) — туплю.

Спр.Номенклатура
нужно: в наименовании и полном наименовании — слеши в обралении пробелами справа и/или слева заменить на » | «

— не заменяется в Наименовании.

[code]
СпрН = СоздатьОбъект(«Справочник.Номенклатура»);
СпрН.ИспользоватьРодителя(ВыбГруппа);
СпрН.ПорядокКодов();
СпрН.ВыбратьЭлементы(1);
Пока СпрН.ПолучитьЭлемент()=1 Цикл
поз = Найти(СпрН.Наименование,»\»)+Найти(СпрН.ПолнНаименование,»\»)+Найти(СпрН.Наименование,»/»)+Найти(СпрН.ПолнНаименование,»/»)+Найти(СпрН.Наименование,» «)+Найти(СпрН.ПолнНаименование,» «);
Если поз = 0 Тогда Продолжить; КонецЕсли;
Сообщить(«——————————————————«);
Сообщить(СпрН.Наименование);
Сообщить(СпрН.ПолнНаименование);

СпрН.ПолнНаименование = СтрЗаменить(СпрН.ПолнНаименование,» / «,»/»);
СпрН.ПолнНаименование = СтрЗаменить(СпрН.ПолнНаименование,» \ «,»/»);

СпрН.ПолнНаименование = СтрЗаменить(СпрН.ПолнНаименование,» /»,»/»);
СпрН.ПолнНаименование = СтрЗаменить(СпрН.ПолнНаименование,» \»,»/»);

СпрН.ПолнНаименование = СтрЗаменить(СпрН.ПолнНаименование,»/ «,»/»);
СпрН.ПолнНаименование = СтрЗаменить(СпрН.ПолнНаименование,»\ «,»/»);

СпрН.Наименование = СтрЗаменить(СпрН.Наименование,» / «,»/»);
СпрН.Наименование = СтрЗаменить(СпрН.Наименование,» \ «,»/»);

СпрН.Наименование = СтрЗаменить(СпрН.Наименование,»/ «,»/»);
СпрН.Наименование = СтрЗаменить(СпрН.Наименование,»\ «,»/»);

СпрН.Наименование = СтрЗаменить(СпрН.Наименование,» /»,»/»);
СпрН.Наименование = СтрЗаменить(СпрН.Наименование,» \»,»/»);

СпрН.ПолнНаименование = СтрЗаменить(СпрН.ПолнНаименование,»/»,» | «);
СпрН.Наименование = СтрЗаменить(СпрН.Наименование,»/ «,» | «);
СпрН.Записать();

Сообщить(СимволТабуляции+СпрН.Наименование,»i»);
Сообщить(СимволТабуляции+СпрН.ПолнНаименование,»i»);
КонецЦикла;

Источник

Работа со строками в 1С 8.3

Строка — примитивный тип данных в языке программирования 1С. Помимо 1С, этот тип данных используется во всех известных языках программирования, обычно он называется «string».

Функции работы со строками в 1С

Рассмотрим основные функции встроенного языка программирования 1С.

Строка

Функция Строка() позволяет получить текстовое представление переменных других типов.

СтрДлина

Функция позволяет получить количество символов в строке 1C, включая пробелы и незначащие символы.

СокрЛП, СокрЛ, СокрП

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания — попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

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

Помимо пробелов, функция 1C удаляет такие символы, как перенос строки, неразрывный пробел и т.д.

Лев, Прав, Сред

С помощью данных функций очень просто получить первые (Лев) или последние (Прав) символы в строке, а также произвольное количество символов (Сред).

Найти

Функция для поиска подстроки внутри другой подстроки. Синтаксис Найти( , ). Функция возвращает число — номер позиции символа (или символов) в исходной подстроке. Если подстроки не найдено, вернётся число 0. Если в искомой подстроке есть несколько вхождений, вернется номер позиции первого совпадения.

ВРег, НРег, ТРег

Функции для управления регистром строки. ВРег — преобразует строку в верхний регистр. НРег — в нижний. ТРег — у каждого нового слова первая буква преобразуется в верхний регистр, остальные в нижний.

Читайте также:  Autodesk meshmixer не работает

ПустаяСтрока

Функция, позволяющая сравнить исходную строку с пустой строкой. Проверяется наличие незначащих символов.

Аналогично можно проверить строку на пустое значение следующим образом:

СтрЗаменить

Функция СтрЗаменить позволяет массово заменить искомое значение на нужное нам. Синтаксис:

СтрЧислоСтрок

Позволяет получить количество строк в многострочном тексте. Функция считает количество переносов строк (Символы.ПС).

Например, построчная обработка текстового фрагмента:

СтрПолучитьСтроку

С помощью данной функции можно получить произвольную строку из многострочного текста. Синтаксис — СтрПолучитьСтроку( , ).

СтрЧислоВхождений

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

Символ и КодСимвола

Две обратные функции. С помощью КодСимвола можно получить код символа в кодировке Unicode. Функцией Символ можно получить символ, зная Unicode кодификатор.

Часто встречающиеся задачи по работе со строками в 1С

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

Конкатенация строк в 1С

Конкатенация, или объединение строк в 1С делается оператором «+».

Преобразовать число в строку

Тут всё просто. Достаточно использовать метод «Строка()»:

Однако может смущать наличие неразрывного пробела.

Его можно убрать с помощью замены неразрывного пробела на пустую строку:

или с помощью метода Формат:

Кавычки в строке 1С

Для новичков достаточно трудно установить кавычки внутри строки, хотя в этом нет ничего сложного. Достаточно внутри строки поставить вместо одних кавычек двое.

Символ переноса строки

Символ переноса строки необходим для переноса строки на следующую строку. В 1С это можно сделать с помощью специальной конструкции «Символы.ПС».

Сравнение строк в 1С

Сравнить строки достаточно просто с помощью оператора сравнения — «=».

Однако для получения корректного сравнения часто требуется возвести строки в один регистр и убрать незначащие символы:

Таким образом, мы получим более точное сравнение двух строк.

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

Достаточно часто нужно убрать пробелы в строке 1С.

Если требуется убрать пробелы справа и слева:

Если требуется убрать абсолютно все пробелы, можно заменить их на пустую строку:

Если требуется убрать неразрывные пробелы из строки, которая получена из числового типа, сделать это можно так:

Другие статьи по 1С:

Если Вы начинаете изучать 1С программирование, рекомендуем наш курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Источник

Работа со строками в 1С 8.2 и 8.3

Строка — это один из примитивных типов данных существующих 1С и работать с ним приходится практически постоянно. Следовательно необходимо иметь представление о том, какие функции для работы со строками существуют, как и когда они используются, а также, что получается в результате. Этим и займемся.

Функции для работы со строками в 1С 8.2 и 8.3

Строка

Функция Строка(x) возвращает текстовое представление переданного ей значения “x”.

Читайте также:  Не работать компрессор фубаг

СтрДлина

Функция СтрДлина(x) вычисляет количество символов в строке “x”, учитывая пробелы и ничего не значащие символы.

СокрЛП, СокрЛ, СокрП

Функции СокрЛП(x), СокрЛ(x) и СокрП(x) убирают пробелы и ничего не значащие символы у переданной строки “x” с обеих сторон, слева и справа соответственно.

Лев, Прав, Сред

Функции Лев(x, y) и Прав(x, y) возвращают количество символов “y” с левого или правого края переданной им строки “x”. А функция Сред(x, y, z) возвращает количество символов “z” из указанного места “y” переданной строки “x”.

ВРег, НРег, ТРег

Функция ВРег(x) преобразует все символы переданной строки “x” в верхний регистр, НРег(x) — в нижний регистр, ТРег(x) — первую букву каждого слова преобразует в верхний регистр, а все остальные нижний.

Найти

Функция Найти(x, y) возвращает номер первого символа первого вхождения подстроки “y” в строку “x”, если, конечно, такое вхождение найдено (при этом нумерация начинается с 1). Если же вхождений не найдено, то функция возвращает 0.

СтрЧислоВхождений

Функция СтрЧислоВхождений(x, y) возвращает количество вхождений подстроки “y” в строку “x”.

СтрЗаменить

Функция СтрЗаменить(x, y, z) позволяет в указанной строке “x” заменить все вхождения одной подстроки “y” на другую “z”, результатом выполнения функции будет строка с проведенными заменами.

ПустаяСтрока

Функция ПустаяСтрока(x) сравнивает переданную ей строку “x” с пустой и возвращает результат этого сравнения — Истина или Ложь, при этом строка состоящая из пробелов и/или ничего не значащих символов приравнивается к пустой.

СтрЧислоСтрок

Функция СтрЧислоСтрок(x) возвращает количество строк в многострочном тексте “x”.

СтрПолучитьСтроку

Функция СтрПолучитьСтроку(x, y) возвращает строку с номером “y” из многострочного текста “x”.

Символ, КодСимвола

Функция Символ(x) получает код символа “x” и возвращает строку содержащую соответствующий символ (в кодировке Unicode). Функция КодСимвола(x) делает обратное действие — получает символ “x” и возвращает его код в кодировке Unicode. Таблицу символов Unicode можно найти, например, тут.

Символы

Это не функция, а набор наиболее часто используемых специальных символов, состоит из:

  • ВК (CR) — возврат каретки;
  • ВТаб (VTab) — вертикальная табуляция;
  • НПП (NBSp) — неразрывный пробел;
  • ПС (LF) — перевод строки;
  • ПФ (FF) — перевод формы;
  • Таб (Tab) — символ горизонтальной табуляции.

ЗначениеВСтрокуВнутр, ЗначениеИзСтрокиВнутр

Функция ЗначениеВСтрокуВнутр(x) возвращает системное строковое представление значения “x”. Функция ЗначениеИзСтрокиВнутр(x) проделывает обратную операцию и возвращает значение, полученное из строкового системного представления “x”. Обе эти функции используются для сохранения функциональной совместимости с версией 7.7. Использование для каких-либо других целей не рекомендуется. В новых версиях платформы данные функции не работают (хотя их описание присутствует в справке).

ВвестиСтроку

Функция ВвестиСтроку(x, y, z, w) вызывает диалог для ввода строки, введенная строка записывается в переменную “x”, кроме этого можно указать подсказку “y”, длину вводимой строки “z”, отметку многострочности вводимого текста “w”. Функция возвращает Истина — если ввод был произведен, Ложь — если пользователь отказался от ввода. Выглядит это окно примерно так:

Источник

Оцените статью