- v7: Вопрос про СтрЗаменить()
- Не срабатывает функция СтрЗаменить
- Не срабатывает СтрЗаменить(. ) — туплю.
- Работа со строками в 1С 8.3
- Функции работы со строками в 1С
- Строка
- СтрДлина
- СокрЛП, СокрЛ, СокрП
- Лев, Прав, Сред
- Найти
- ВРег, НРег, ТРег
- ПустаяСтрока
- СтрЗаменить
- СтрЧислоСтрок
- СтрПолучитьСтроку
- СтрЧислоВхождений
- Символ и КодСимвола
- Часто встречающиеся задачи по работе со строками в 1С
- Конкатенация строк в 1С
- Преобразовать число в строку
- Кавычки в строке 1С
- Символ переноса строки
- Сравнение строк в 1С
- Убрать пробелы в строке 1С
- Работа со строками в 1С 8.2 и 8.3
- Функции для работы со строками в 1С 8.2 и 8.3
- Строка
- СтрДлина
- СокрЛП, СокрЛ, СокрП
- Лев, Прав, Сред
- ВРег, НРег, ТРег
- Найти
- СтрЧислоВхождений
- СтрЗаменить
- ПустаяСтрока
- СтрЧислоСтрок
- СтрПолучитьСтроку
- Символ, КодСимвола
- Символы
- ЗначениеВСтрокуВнутр, ЗначениеИзСтрокиВнутр
- ВвестиСтроку
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с), числовые (к ним надо обращатся по ЧИСЛОВОМУ индексу, и каждый новый элемент получает инкрементный от последнего индекс).
так вот в коде есть запрос в базу и от туда получается числовой массив (в базе он хранится в виде серилизованной строки), я получаю массив и вижу там 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. Если в искомой подстроке есть несколько вхождений, вернется номер позиции первого совпадения.
ВРег, НРег, ТРег
Функции для управления регистром строки. ВРег — преобразует строку в верхний регистр. НРег — в нижний. ТРег — у каждого нового слова первая буква преобразуется в верхний регистр, остальные в нижний.
ПустаяСтрока
Функция, позволяющая сравнить исходную строку с пустой строкой. Проверяется наличие незначащих символов.
Аналогично можно проверить строку на пустое значение следующим образом:
СтрЗаменить
Функция СтрЗаменить позволяет массово заменить искомое значение на нужное нам. Синтаксис:
СтрЧислоСтрок
Позволяет получить количество строк в многострочном тексте. Функция считает количество переносов строк (Символы.ПС).
Например, построчная обработка текстового фрагмента:
СтрПолучитьСтроку
С помощью данной функции можно получить произвольную строку из многострочного текста. Синтаксис — СтрПолучитьСтроку( , ).
СтрЧислоВхождений
Функция для подсчета числа вхождений произвольного фрагмента в строку. Например, подсчитать количество вхождений определенных символов или слов в текст.
Символ и КодСимвола
Две обратные функции. С помощью КодСимвола можно получить код символа в кодировке 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”. Функция возвращает Истина — если ввод был произведен, Ложь — если пользователь отказался от ввода. Выглядит это окно примерно так:
Источник