Строка — это один из примитивных типов данных существующих 1С и работать с ним приходится практически постоянно. Следовательно необходимо иметь представление о том, какие функции для работы со строками существуют, как и когда они используются, а также, что получается в результате. Этим и займемся.
Содержание
- Функции для работы со строками в 1С 8.2 и 8.3
- Строка
- СтрДлина
- СокрЛП, СокрЛ, СокрП
- Лев, Прав, Сред
- ВРег, НРег, ТРег
- Найти
- СтрЧислоВхождений
- СтрЗаменить
- ПустаяСтрока
- СтрЧислоСтрок
- СтрПолучитьСтроку
- Символ, КодСимвола
- Символы
- ЗначениеВСтрокуВнутр, ЗначениеИзСтрокиВнутр
- ВвестиСтроку
- Функции для работы со строками начиная с версии 8.3.6.1977
- СтрШаблон
- СтрСравнить
- СтрНайти
- СтрНачинаетсяС, СтрЗаканчиваетсяНа
- СтрРазделить, СтрСоединить
- Типовые задачи при работе со строками в 1С 8.2 и 8.3
- Сложение строк
- Преобразования строка-число, число-строка
- Кавычки в строке
- Символ переноса строки
- Сравнение строк
- Разделение строки по разделителю
Функции для работы со строками в 1С 8.2 и 8.3
Строка
Функция Строка(x) возвращает текстовое представление переданного ей значения “x”.
&НаКлиенте Процедура ТестСтрока(Команда) Сообщить(Строка(35)); //35 Сообщить(Строка(Истина)); //Да Сообщить(Строка(‘20170425151515’)); //25.04.2017 15:15:15 КонецПроцедуры |
СтрДлина
Функция СтрДлина(x) вычисляет количество символов в строке “x”, учитывая пробелы и ничего не значащие символы.
&НаКлиенте Процедура ТестСтрока(Команда) Сообщить(СтрДлина(«тестовая строка»)); //15 КонецПроцедуры |
СокрЛП, СокрЛ, СокрП
Функции СокрЛП(x), СокрЛ(x) и СокрП(x) убирают пробелы и ничего не значащие символы у переданной строки “x” с обеих сторон, слева и справа соответственно.
&НаКлиенте Процедура ТестСтрока(Команда) Сообщить(СокрЛ(» тест «)); //»тест « Сообщить(СокрП(» тест «)); //» тест» Сообщить(СокрЛП(» тест «)); //»тест» КонецПроцедуры |
Лев, Прав, Сред
Функции Лев(x, y) и Прав(x, y) возвращают количество символов “y” с левого или правого края переданной им строки “x”. А функция Сред(x, y, z) возвращает количество символов “z” из указанного места “y” переданной строки “x”.
&НаКлиенте Процедура ТестСтрока(Команда) Сообщить(Лев(«тестовая строка», 5)); //»тесто» Сообщить(Прав(«тестовая строка», 5)); //»трока» Сообщить(Сред(«тестовая строка», 5)); //»овая строка» Сообщить(Сред(«тестовая строка», 5, 5)); //»овая» КонецПроцедуры |
ВРег, НРег, ТРег
Функция ВРег(x) преобразует все символы переданной строки “x” в верхний регистр, НРег(x) — в нижний регистр, ТРег(x) — первую букву каждого слова преобразует в верхний регистр, а все остальные нижний.
&НаКлиенте Процедура ТестСтрока(Команда) Сообщить(ВРег(«Верхний регистр»)); //ВЕРХНИЙ РЕГИСТР Сообщить(НРег(«Нижний регистр»)); //нижний регистр Сообщить(ТРег(«Каждое слово с заглавной буквы»)); //Каждое Слово С Заглавное Буквы КонецПроцедуры |
Найти
Функция Найти(x, y) возвращает номер первого символа первого вхождения подстроки “y” в строку “x”, если, конечно, такое вхождение найдено (при этом нумерация начинается с 1). Если же вхождений не найдено, то функция возвращает 0.
&НаКлиенте Процедура ТестСтрока(Команда) Сообщить(Найти(«тестовая строка», «с»)); //3 Сообщить(Найти(«тестовая строка», «м»)); //0 КонецПроцедуры |
СтрЧислоВхождений
Функция СтрЧислоВхождений(x, y) возвращает количество вхождений подстроки “y” в строку “x”.
&НаКлиенте Процедура ТестСтрока(Команда) Сообщить(СтрЧислоВхождений(«тестовая строка», «т»)); //3 КонецПроцедуры |
СтрЗаменить
Функция СтрЗаменить(x, y, z) позволяет в указанной строке “x” заменить все вхождения одной подстроки “y” на другую “z”, результатом выполнения функции будет строка с проведенными заменами.
&НаКлиенте Процедура ТестСтрока(Команда) Сообщить(СтрЗаменить(«тест1,тест2,тест3,тест4», «,», » «)); //тест1 тест2 тест3 тест4 КонецПроцедуры |
ПустаяСтрока
Функция ПустаяСтрока(x) сравнивает переданную ей строку “x” с пустой и возвращает результат этого сравнения — Истина или Ложь, при этом строка состоящая из пробелов и/или ничего не значащих символов приравнивается к пустой.
&НаКлиенте Процедура ТестСтрока(Команда) Сообщить(ПустаяСтрока(» «)); //Да Сообщить(ПустаяСтрока(«тестовая строка»)); //Нет КонецПроцедуры |
СтрЧислоСтрок
Функция СтрЧислоСтрок(x) возвращает количество строк в многострочном тексте “x”.
&НаКлиенте Процедура ТестСтрока(Команда) МногострочныйТекст = СтрЗаменить(«тест1,тест2,тест3,тест4», «,», Символы.ПС); //тест1 тест2 тест3 тест4 Сообщить(СтрЧислоСтрок(МногострочныйТекст)); //4 КонецПроцедуры |
СтрПолучитьСтроку
Функция СтрПолучитьСтроку(x, y) возвращает строку с номером “y” из многострочного текста “x”.
&НаКлиенте Процедура ТестСтрока(Команда) МногострочныйТекст = СтрЗаменить(«тест1,тест2,тест3,тест4», «,», Символы.ПС); //тест1 тест2 тест3 тест4 Сообщить(СтрПолучитьСтроку(МногострочныйТекст, 2)); //тест2 КонецПроцедуры |
Символ, КодСимвола
Функция Символ(x) получает код символа “x” и возвращает строку содержащую соответствующий символ (в кодировке Unicode). Функция КодСимвола(x) делает обратное действие — получает символ “x” и возвращает его код в кодировке Unicode. Таблицу символов Unicode можно найти, например, тут.
&НаКлиенте Процедура ТестСтрока(Команда) Сообщить(Символ(1046)); //Ж Сообщить(КодСимвола(«Ж»)); //1046 КонецПроцедуры |
Символы
Это не функция, а набор наиболее часто используемых специальных символов, состоит из:
- ВК (CR) — возврат каретки;
- ВТаб (VTab) — вертикальная табуляция;
- НПП (NBSp) — неразрывный пробел;
- ПС (LF) — перевод строки;
- ПФ (FF) — перевод формы;
- Таб (Tab) — символ горизонтальной табуляции.
ЗначениеВСтрокуВнутр, ЗначениеИзСтрокиВнутр
Функция ЗначениеВСтрокуВнутр(x) возвращает системное строковое представление значения “x”. Функция ЗначениеИзСтрокиВнутр(x) проделывает обратную операцию и возвращает значение, полученное из строкового системного представления “x”. Обе эти функции используются для сохранения функциональной совместимости с версией 7.7. Использование для каких-либо других целей не рекомендуется. В новых версиях платформы данные функции не работают (хотя их описание присутствует в справке).
ВвестиСтроку
Функция ВвестиСтроку(x, y, z, w) вызывает диалог для ввода строки, введенная строка записывается в переменную “x”, кроме этого можно указать подсказку “y”, длину вводимой строки “z”, отметку многострочности вводимого текста “w”. Функция возвращает Истина — если ввод был произведен, Ложь — если пользователь отказался от ввода. Выглядит это окно примерно так:
&НаКлиенте Процедура ТестСтрока(Команда) НовСтр = «»; ВвестиСтроку(НовСтр, «Введите имя», 50, Ложь); КонецПроцедуры |
Функции для работы со строками начиная с версии 8.3.6.1977
В обновлении 8.3.6.1977 набор функций для работы со строками был серьезно расширен.
СтрШаблон
Функция СтрШаблон(x, y1-y10) является аналогом функции printf из языка C++ и многих других. В исходной строке “x” можно использовать маркеры подстановки “%1, %2..%10” (не более 10), которые впоследствии заменяются на соответствующие “y1, y2..y10”. Функция возвращает результат этой замены. Если количество маркеров замены не соответствует количеству параметров “y1, y2..y10”, то генерируется ошибка.
&НаКлиенте Процедура ТестСтрока(Команда) Сообщить(СтрШаблон(«%1,%2,%3,%4,%5,%6,%7,%8,%9,%10», 101, 102, 103, 104, 105, 106, 107, 108, 109, 110)); //101,102,103,104,105,106,107,108,109,110 КонецПроцедуры |
СтрСравнить
Функция СтрСравнить(x, y) выполняет лексикографическое сравнение переданных ей строк “x” и “y” и возвращает одно из трех значений:
- 0 — строки равны;
- 1 — строка “x” больше строки “y”;
- -1 — строка “x” меньше строки “y”.
&НаКлиенте Процедура ТестСтрока(Команда) Сообщить(СтрСравнить(«ааа», «ааб»)); //-1 КонецПроцедуры |
СтрНайти
Функция СтрНайти(x, y, z, w, v) призвана полность заменить функцию Найти(), так как она ее полность повторяет (строка “x” и подстрока поиска “y”), а также позволяет указать необязательные дополнительные параметры поиска: направление поиска “z”, начальную позицию “w” и номер вхождения “v”.
&НаКлиенте Процедура ТестСтрока(Команда) Сообщить(СтрНайти(«тестовая строка», «т», НаправлениеПоиска.СНачала)); //1 Сообщить(СтрНайти(«тестовая строка», «т», НаправлениеПоиска.СНачала, 2)); //4 Сообщить(СтрНайти(«тестовая строка», «т», НаправлениеПоиска.СНачала,, 3)); //11 Сообщить(СтрНайти(«тестовая строка», «т», НаправлениеПоиска.СКонца)); //11 КонецПроцедуры |
СтрНачинаетсяС, СтрЗаканчиваетсяНа
Функции СтрНачинаетсяС(x, y) и СтрЗаканчиваетсяНа(x, y) проверяют начинается/заканчиватся ли строка “x” с/на подстроку “y” и возвращают результат — Истина или Ложь.
&НаКлиенте Процедура ТестСтрока(Команда) Сообщить(СтрНачинаетсяС(«тестовая строка», «т»)); //Да Сообщить(СтрНачинаетсяС(«тестовая строка», «п»)); //Нет Сообщить(СтрЗаканчиваетсяНа(«тестовая строка», «а»)); //Да Сообщить(СтрЗаканчиваетсяНа(«тестовая строка», «б»)); //Нет КонецПроцедуры |
СтрРазделить, СтрСоединить
Функция СтрРазделить(x, y, z) разделяет строку “x” по разделителю “y” и возвращает получившийся массив строк, параметр “z” позволяет указать, нужно ли включать в этот массив пустые строки. Функция СтрСоединить(x, y) выполняет обратную задачу — склеивает массив строк “x” в одну строку через разделитель “y” (если этот разделитель указан).
&НаКлиенте Процедура ТестСтрока(Команда) МассивСтрок = СтрРазделить(«тест1,тест2,тест3,тест4», «,», Ложь); Сообщить(МассивСтрок[0]); //тест1 Сообщить(СтрСоединить(МассивСтрок, «+»)); //тест1+тест2+тест3+тест4 КонецПроцедуры |
Типовые задачи при работе со строками в 1С 8.2 и 8.3
Сложение строк
В языке 1С работает сложение как непосредственно строк, так и сложение переменных:
&НаКлиенте Процедура ТестСтрока(Команда) Мама = «Мама «; Мыла = «мыла «; Раму = «раму»; Сообщить(«Мама «+»мыла «+»раму»); //Мама мыла раму Сообщить(Мама+Мыла+Раму); //Мама мыла раму Сообщить(«Мама «+Мыла+»раму»); //Мама мыла раму КонецПроцедуры |
Преобразования строка-число, число-строка
Помимо специальных функций:
- Строка(x) — подробно описана выше;
- Число(x) — подробно описана в статье о числах в 1С.
Кроме этого прекрасно работает приведение типов «на лету», тут все завит от того, что с чем складывает (какой тип данных идет первым), в случае если приведение типов невозможно, будет вызвана исключительная ситуация и показана соответствующая ошибка:
&НаКлиенте Процедура ТестСтрока(Команда) Сообщить(6+»6″); //12 — Число Сообщить(«6″+6); //66 — Строка Сообщить(«»+6+»6»); //66 — Строка КонецПроцедуры |
Кавычки в строке
Одинарные кавычки не нуждаются в каком-либо экранировании, а для использования внутри строки двойных кавычек каждую двойную кавычку нужно продублировать:
&НаКлиенте Процедура ТестСтрока(Команда) Сообщить(«‘Мама’ «»мыла»» ‘раму'»); //’Мама’ «мыла» ‘раму’ Сообщить(«»»»); //» КонецПроцедуры |
Символ переноса строки
Символ переноса строки (и все остальные специальные символы) ведут себя точно также как и простые строки, т.е. могут складываться с другими строками. При сложении символа переноса строк с другими строками получается много строчный текст, для работы с которым существуют специальные функции описанные выше:
&НаКлиенте Процедура ТестСтрока(Команда) МногострочныйТекст = «тест1″+Символы.ПС+»тест2″+Символы.ПС+»тест3″+Символы.ПС+»тест4»; КонецПроцедуры |
Сравнение строк
При сравнении строк будет разумно (в зависимости от задачи, конечно) обрезать все не значащие символы и привести строки к одному регистру:
&НаКлиенте Процедура ТестСтрока(Команда) Строка1 = » тЕсТ «; Строка2 = » ТЕсТ «; Если НРег(СокрЛП(Строка1)) = НРег(СокрЛП(Строка2)) Тогда Сообщить(«Строки равны»); КонецЕсли; КонецПроцедуры |
Разделение строки по разделителю
Для того чтобы разбить строку по разделителю в языке 1С существует два способа, старый:
&НаКлиенте Процедура ТестСтрока(Команда) СтрокаСРазделителями = «тест1,тест2,тест3,тест4»; МногострочныйТекст = СтрЗаменить(СтрокаСРазделителями, «,», Символы.ПС); Для Счетчик = 1 По СтрЧислоСтрок(МногострочныйТекст) Цикл Сообщить(СтрПолучитьСтроку(МногострочныйТекст,Счетчик)); КонецЦикла; КонецПроцедуры |
Начиная с версии 8.3.6.1977 в языке 1С существует специальная функция позволяющая разложить строку по разделителю в массив строк:
&НаКлиенте Процедура ТестСтрока(Команда) МассивСтрок = СтрРазделить(СтрокаСРазделителями, «,»); Для Каждого ТекСтрока Из МассивСтрок Цикл Сообщить(ТекСтрока); КонецЦикла; КонецПроцедуры |
Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Загрузка…
04.10.05 — 08:05
Как найти кавычки в тексте?
При перносе информации через текстовый файл с разделителями каждая пара кавычек является одним элементом. А если в переносимой текстовой информации есть дополнительные кавычки, то элементов в строке становится гораздо больше чем надо.
1 — 04.10.05 — 08:17
Пример строки то хоть покажи
2 — 04.10.05 — 08:24
«Кресло»,»2″,»200.35″,»Фирма «МебельПлюс»»
Так вот нужно найти восьмую и девятую кавычку и заменить на () скобки
3 — 04.10.05 — 08:26
(0) выбери другой разделитель — хотя бы РазделительСтрок.
Или у тебя строки и с табуляцией встречаются?
Вообще для переноса через текстовый файл в качестве разделителя выбирается неиспользуемый символ или производится подмена этого символа в исходных данных
4 — 04.10.05 — 08:28
А как у тебя формируется эта строка?
5 — 04.10.05 — 08:32
(3) ну или при выгрузке меняй «» на что нибудь типа | и при загрузке меняй взад, если уж сильно нравится пользовать «» как разделитель, хотя в таких случаях я при выгрузке на всякий случай преобразовываю строку, что б разделитель не попался случайно
6 — 04.10.05 — 08:32
(2) Если файл входящий от других, то вырезай данные в два шага:
1. Обрезать первый и последний символ строки
2. РазделительДанных=CHR(0022)+»,»+CHR(0022) или как там кавычки называются
7 — 04.10.05 — 08:34
Сначала я формирую текстовый файл (см. пример), а затем из этого файла беру строки и используя \ИзСтрокиСРазделителями(<Строка>)\ разбиваю на элементы. А лишние кавычки мешают.
Вопрос такой: можно или нельзя найти кавычки в текстовой строке средствами 1С.
8 — 04.10.05 — 08:36
(7)для тех кто в танке —
когда выгружаешь:
стрзаменить(выгружаемаястрока,»»»»,»|»)
когда загружаешь
стрзаменить(выгружаемаястрока,»|»,»»»»)
9 — 04.10.05 — 08:44
Сам ты в танке…
Туда, сюда — она мне строку и повторит. Мне надо убрать только 8 и 9 кавычку (см. пример)
10 — 04.10.05 — 08:47
Возвращаясь к 6 посту. какой код у кавычек?
11 — 04.10.05 — 08:49
+9 Убрать надо при создании текстового файла.
12 — 04.10.05 — 08:51
млин…
перед тем как запихивать в список свои строки преобразовывай строки и в файле НЕ будет левых «» после того как достанешь ИзСтрокиСРазделителями ты ж пробежишь по списку, доставая строки — вот тогда и форматируешь их в первозданный вид — или я в танке. или я цели не понял…
13 — 04.10.05 — 08:55
Видимо цели не понял.
14 — 04.10.05 — 08:55
или покажи куски кода выгрузки/загрузки
15 — 04.10.05 — 09:08
Нашел!!!
//Стр — текстовая строка
Стр = СтрЗаменить(Стр,Симв(34)+»,»+Симв(34),»ёё»); // Заменяем «,» на нечто
Стр = СтрЗаменить(Стр,Симв(34),»»); //Заменяем оставшиеся кавычки на
Стр = СтрЗаменить(Стр,»ёё»,Симв(34)+»,»+Симв(34)); //Заменяем нечто на «,»
Стр = Симв(34) + Сред(Стр,2); //Заменяем первый символ на кавычки
Стр = Лев(Стр,СтрДлина(СокрЛП(Стр))-1) +Симв(34) ; // и последний тоже
Сообщить(Стр);
Всем спасибо!
16 — 04.10.05 — 09:18
что это было…???
ну куда то в нужном направлении…
17 — 04.10.05 — 09:23
СпСтроки=глРазложить(СтрокаСКавычками,»»»»);
Результ=»»;
Для й=1 по СпСтроки.РазмерСписка() Цикл
Если (й=8)ИЛИ(й=9) тогда
Результ=СпСтроки.ПолучитьЗначение(й)+»(«;//ну или что там у тебя
Иначе
Результ=СпСтроки.ПолучитьЗначение(й)+»»»»;
КонецЕСли;
18 — 04.10.05 — 09:59
17 не есть «Good»
Это в конкретном примере они 8 и 9, а могут быть где угодно.
15 бест форева — работает «проверено на себе».
19 — 04.10.05 — 10:02
Если кто не понял Симв(34) — это символ » кавычки (код 34)
ёё — сочетание символов, которое в реальной жизни практически не встречается.
2(19) ОднаКавычка = «»»»;
Как найти кавычку?
Гость 0 — 12.12.2012 — 14:48 |
Найти(НаимКонтрагента,»»») — как-то не так, наверное, короче, мне их надо удалить из строки, чтоб без кавычек осталось. |
|
Чучундер 1 — 12.12.2012 — 14:49 |
«»»»
|
|
user1C 2 — 12.12.2012 — 14:54 |
СтрЗаменить(НаимКонтрагента,»»»»,»»)
|
|
Гость 3 — 12.12.2012 — 14:54 |
А это будет как бы одна кавычка? Я попробовала 3 и 5 почему-то.
|
|
Гость 4 — 12.12.2012 — 14:55 |
Спасибо!
|
|
Гость 5 — 12.12.2012 — 14:55 |
через код символа и переменную не ?
|
|
Гость 6 — 12.12.2012 — 14:56 |
Можно с извращением)))
|
|
Гость 7 — 12.12.2012 — 14:57 |
или СтрЗаменить(НаимКонтрагента,Символ(34),»»)
|
|
Ткачик 8 — 12.12.2012 — 14:58 |
Надеюсь, что Мисту скоро починят, а то начавшееся омистенение Т1С что-то не радует.
|
|
Гость 9 — 12.12.2012 — 15:19 |
Может, мне у вас понравится, и я туда не вернусь!
|
|
Ткачик 10 — 12.12.2012 — 15:19 |
Не дай бог!
|
|
Чучундер 11 — 12.12.2012 — 15:27 |
(9) главное, чтобы ты нам понравилась! Здесь в личку фотки мало кто помещает (такое ощущение что есть только у меня) — есть шанс получать ответы без сисек.
|
|
Гость 12 — 12.12.2012 — 15:39 |
(8) rfr nj e; cjdctv yt lhe;tk.,yj ;))
|
|
Гость 13 — 12.12.2012 — 15:40 |
(12) + … (с) Дядюшка Мокус
|
Тип «Строка» встречается во всех языках программирования. Он является примитивным, и в 1С существует много функций для работы с ним. В данной статье мы подробно рассмотрим различные способы работы со строковыми типами в 1С 8.3 и 8.2 на примерах.
Содержание
- Строковые функции в 1С
- Строка
- СокрЛП, СокрЛ, СокрП
- Лев, Прав, Сред
- СтрДлина
- Найти
- ПустаяСтрока
- ВРег, НРег, ТРег
- СтрЗаменить
- СтрЧислоСтрок
- СтрПолучитьСтроку
- СтрЧислоВхождений
- Символ и КодСимвола
- Частые задачи при работе со строками
- Объединение строк
- Преобразование типов
- Кавычки в строке
- Многострочность, перенос строки
- Как убрать пробелы
- Сравнение строк между собой
Строковые функции в 1С
Строка
Для того чтобы преобразовать переменную какого-либо типа в строку, существует одноименная функция «Строка()». Входным параметром будет сама переменная, строковое представление которой необходимо получить.
Строка(Ложь) // возвращает «Нет»
Строка(12345) // возвращает «12 345»
Строка(ТекущаяДата()) //»21.07.2017 11:55:36″
Преобразовывать к строке возможно не только примитивные типы, но и остальные, например элементы справочников, документов.
СокрЛП, СокрЛ, СокрП
В качестве входных параметров данных функций выступает переменная строкового типа. Функции удаляют незначащие символы (пробелы, переносы каретки и прочие): с левой и правой стороны, только с левой стороны, и только с правой соответственно.
СокрЛП(» Будут удалены пробелы с обеих сторон «) // «Будут удалены пробелы с обеих сторон»
СокрЛ(» Будут удалены пробелы с обеих сторон «) // «Будут удалены пробелы слева »
СокрП(» Будут удалены пробелы с обеих сторон «) // « Будут удалены пробелы справа»
Лев, Прав, Сред
Наша команда предоставляет услуги по консультированию, настройке и внедрению 1С.
Связаться с нами можно по телефону +7 499 350 29 00.
Услуги и цены можно увидеть по ссылке.
Будем рады помочь Вам!
Данные функции позволяют обрезать часть строки. Функция «Лев()» вернет часть строки с ее левой стороны указанной длины. Функция «Прав()» аналогично, но обрезка производится справа. Функция «Сред()» позволяет указать номер символа, с которого будет выделена строка и ее длину.
Лев(«Строковая переменная», 4) // возвращает «Стро»
Прав(«Строковая переменная», 7) // возвращает «еременная»
Сред(«Строковая переменная», 2, 5)// возвращает «троко»
СтрДлина
Функция определяет количество символов, которые содержатся в строковой переменной.
СтрДлина(«Слово «) // результатом выполнения будет число 5
Найти
Функция дает возможность искать в какой-либо строковой переменной часть строки. В качестве возвращаемого значения будет выступать число, которое показывает позицию начала найденной строки. Если совпадений не обнаружено, возвращается ноль.
Обратите внимание, что поиск производится с учетом регистра. Если в изначальной строке будет больше одного вхождения подстроки поиска, функция вернет начало первого вхождения.
Найти(«раз, два, раз, два, три», «два») // функция вернет число 6
ПустаяСтрока
Использование данной функции позволяет определить, является ли строка пустой. Незначимые символы, например, пробел, перенос каретки и другие не учитываются.
ПустаяСтрока(«Пупкин Василий Иванович») // функция вернет значение Ложь
ПустаяСтрока(» «) // функция вернет значение Истина
ВРег, НРег, ТРег
Данные функции очень полезны при сравнении и преобразовании строковых переменных. «Врег()» вернет исходную строку в верхнем регистре, «НРег()» в нижнем, а «ТРег()» отформатирует ее так, что первый символ каждого отдельного слова будет с большой буквы, а все последующие с маленькой.
ВРег(«ГеНераЛьныЙ дИРЕктОр») // возвращаемое значение – «ГЕНЕРАЛЬНЫЙ ДИРЕКТОР»
НРег(«ГеНераЛьныЙ дИРЕктОр») // возвращаемое значение – «генеральный директор»
ТРег(«ГеНераЛьныЙ дИРЕктОр») // возвращаемое значение – «Генеральный Директор»
СтрЗаменить
Данная функция является аналогом замены в текстовых редакторах. Она позволяет подменять один символ или набор символов другим в строковых переменных.
СтрЗаменить(«красный, белый, желтый», «,», «;») // вернет «красный; белый; желтый»
СтрЧислоСтрок
Функция позволяет определить количество строк, разделенных переносом каретке в текстовой переменной.
Цикл, в приведенном ниже примере, пройдет три круга, так как функция СтрЧислоСтрок вернет значение 3:
Для инд=1 по СтрЧислоСтрок(«Строка1» + Символы.ПС + «Строка2» + Символы.ПС + «Строка3») Цикл
<тело цикла>
КонецЦикла;
СтрПолучитьСтроку
Данная функция работает с многострочным текстом так же, как и предыдущая. Она позволяет получить определенную строку из текстовой переменной.
СтрПолучитьСтроку(«Строка1» + Символы.ПС + «Строка2» + Символы.ПС + «Строка3», 2) // вернет «Строка2»
СтрЧислоВхождений
Функция подсчитывает количество вхождений символа или подстроки в искомой строке.
СтрЧислоВложений(«а;б;в;г; «, «;») // функция вернет число 4
Символ и КодСимвола
Эти функции позволяют получать символ по его коду в кодировке Unicode, а так же определять этот код по самому символу.
КодСимвола(«А») // функция вернет число 1 040
КодСимвола(1040) // функция вернет «А»
Частые задачи при работе со строками
Объединение строк
Чтобы объединить несколько строк (произвести конкатенацию) достаточно использовать оператор сложения.
«Строка 1″ + » Строка 2″ //результатом сложения двух строк будет «Строка 1 Строка 2»
Преобразование типов
Для того, чтобы преобразовать тип в строку, например, ссылку на элемент справочника, число и прочее, достаточно использовать функцию «Строка()». Функции, подобные «СокрЛП()» так же будут преобразовывать переменные в строку, но уже сразу с отсечением незначащих символов.
Строка(1000) // вернет «1 000»
Обратите внимание, что при преобразовании числа в строку, программа автоматически добавила пробел, отделяющий тысячу. Для того чтобы этого избежать можно воспользоваться следующими конструкциями:
СтрЗаменить(Строка(1000),Символы.НПП,»») // вернет «1000»
или
Строка(Формат(1000,»ЧГ=»)) // вернет «1000»
Кавычки в строке
Довольно часто вам придется сталкиваться с необходимостью указать в строковой переменной кавычки. Это может быть как текст запроса, написанный в конфигураторе, так и просто переменная. Для решения данной задачи вам достаточно установить два символа кавычек.
Заголовок = Строка(«ООО «»Рога и копыта»» — это мы!») // вернет «ООО «Рога и копыта» — это мы!»
Многострочность, перенос строки
Для того, чтобы создать многострочный текст достаточно добавить в него символы переноса строки (Символы.ПС).
МногострочныйТекст = «Первая строка» + Символы.ПС + «Вторая строка»
Как убрать пробелы
Для того, чтобы убрать пробелы справа или слева можно воспользоваться функцией «СокрЛП()» (а так же «СокрЛ()» и «СокрП()»):
СтрокаБезПробелов = СокрЛП(» Много букв «) // функция вернет значение «Много букв»
Если после преобразования числа в строку вам потребовалось убрать неразрывные пробелы, воспользуйтесь следующей конструкцией:
СтрокаБезПробелов = СтрЗаменить(Строка(99999),Символы.НПП,»») // вернет «99999»
Так же программисты часто пользуются ниже приведенной конструкцией, которая позволяет удалить, либо заменить на другой символ все пробелы текстовой переменной:
СтрокаБезПробелов = СтрЗаменить(« п р и в е т», » » ,»») // вернет «привет»
Сравнение строк между собой
Сравнить сроки можно обычным знаком равенства. При сравнении учитывается регистр.
«Здраствуйте» = «здравствуйте» // вернет Ложь
«Здраствуйте» = «Здравствуйте» // вернет Истина
«Здраствуйте» = «До свидания» // вернет Ложь
Строковые функции в 1с позволяют работать с примитивным типом данных строка. Полный набор этих функций доступен в самых новых версиях платформы. В старых платформах некоторые функции могут отсутствовать.
Строка-примитивный тип данных в языке программирования 1с.
Значения типа “Строка” в тексте программного модуля заключаются в кавычки.
Пример значения строкового типа: “это — строка”.
Рассмотрим функции работы со строками.
Строка()
Функция Строка() позволяет получить текстовое представление переменной другого типа.
Строка(ТекущаяДата());//"09.12.2020 01.01.01"
Строка(Истина);//Да
Строка(1010);//"1 010"
СтрДлина()
Длина строки СтрДлина(Строка)-определяет количество символов в строке.
СокрЛ(), СокрП(), СокрЛП()
Функции удаление пробелов и незначащих символов.
Эта функция удаляет следующе незначащие символы:
- “Пробел”;
- “Неразрывный пробел (НПП)”;
- “Горизонтальная табулция (Таб)”;
- “Вертикальная табуляция (ВТаб)”;
- “Возврат коретки (ВК)”;
- “Перевод строки (ПС)”.
Удаление пробелов слева. СокрЛ(Строка).
Удаление пробелов справа. СокрП(Строка).
Удаление пробелов слева и справа. СокрЛП(Строка).
Лев(), Прав(), Сред()
Функции выделения или выбора символов из строки.
Лев(Строка,3)-выделить 3 символа слева. Функция имеет два аргумента Строка откуда выбираются символы и 3-количество выбираемых символов.
Прав(Строка,3)- выделить 3 символа слева. Функция имеет два аргумента Строка откуда выбираются символы и 3-количество выбираемых символов.
Сред(Строка,2,3)-Выделить начиная со второго три символа. Функция имеет три аргумента: Строка откуда выбираются символы, номер позиции с которой начинается выбор символов и количество выбираемых символов.
ВРег(), НРег(), ТРег()
Строковые функции управляющие регистром букв.
- ВРег()-верхний регистр
- НРег()-нижний регистр
- ТРег()-у каждого слова первая буква большая
ПустаяСтрока()
Функция, осуществляющая сравнение исходной строки с пустой строкой. Результатом функции будет логическое значение истина или ложь.
ПустаяСтрока("Приветсвие");//Ложь
ПустаяСтрока(" ");//Истина
//Аналог
СокрЛП(" ");//Истина
СтрНайти()
Функция Найти() возвращает положение первого символа заданной подстроки. Если такая подстрока не найдена, система возвращает ноль.
ИмяКонфигурации = «1С Управление торговлей»;
Позиция = Найти(ИмяКонфигурации, «торг»);
Сообщить(Позиция);
СтрЗаменить()
Эта функция позволяет массово заменить искомое значение на заданное
СтрЗаменить("Максимальное значение", "Максимальное", "Минимальное");//Минимальное значение
СтрЧислоСтрок()
Позволяет получить количество строк в многострочном тексте. Функция считает количество переносов строк (Символ.ПС)
КоличествоСтрок = СтрЧислоСтрок("Привет" + Символы.СП + "Мир"+ Символы.ПС+ "Добрый день!");
//КоличествоСтрок = 3;
СтрПолучитьСтроку()
Данная функция предназначена для получения строки из многострочного текста.
СтрокаНомер3=СтрПолучитьСтроку(Текст,3);
СтрЧислоВхождений()
Функция для подсчета числа вхождений произвольного фрагмента в строку.
СтрЧислоВхождений("тестирование программы","т");//2
Символ() и КодСимвола()
Две обратные функции. С помощью функции КодСимвола() можно получить код символа в кодировке Unicode.
Номер=КодСимвола("Т")// 1058
Функция Символ() позволяет получить символ зная его Unicode кодификатор.
Символ("1058");//"Т"
СтрРазделить()
Функция СтрРазделить() позволяет разделить Строку в массив подстрок. Пример использования функции рассмотрен в статье: Преобразовать массив 1с в строку.
МассивПодстрок = СтрРазделить("Привет Мир", " ");
//МассивПодстрок[0] = "Привет";
//МассивПодстрок[1] = "Мир";
СтрСоединить
Функция СтрСоединить() обратная функции СтрРазделить(). СтрСоединить объединяет массив подстрок в одну строку. Пример использования функции рассмотрен в статье: Преобразовать масссив 1с в строку.
МассивПодстрок = Новый Массив;
МассивПодстрок[0] = "Привет";
МассивПодстрок[1] = "Мир";
Строка = СтрСоединить(МассивПодстрок, " ");
//Строка = "Привет Мир";
ВвестиСтроку()
Введение строкового значения возможно с помощью функции ВвестиСтроку(). Пример:
Перем Имя;
Имя="";
ВвестиСтроку(Имя,"Введите Имя");
СтрШаблон()
Функция СтрШаблон()
формирует конечную строку, путем подстановки строковых представлений фактических параметров в указанные места шаблона. Шаблон может состоять из текста и параметров. Каждый параметр начинается с подстановочного знака %(процент), за которым следует порядковый номер параметра. Нумерация параметров начинается с 1. Если количество параметров в шаблоне не совпадает с количеством фактически переданных параметров, будет сгенерировано исключение: «Недостаточно фактических параметров» или «Очень много параметров».
Номенклатура = "Стол деревянный";
Артикул = "02515";
Стр = СтрШаблон("Товар: %1, Артикул: %2 не найден!", Номенклатура, Артикул);
Сообщить(Стр);
//Результат:
// Товар: Стол деревянный, Артикул: 02515 не найден!
Строковые функции 1с. Примеры использования.
Конкатенация строк в 1с
Конкатенация или объединение строк в 1с производиться оператором “+”.
"Первая строка"+"Вторая";//Первая строкаВторая
Кавычки в строке 1с
Для заключения названия в кавычки, необходимо внутри строки отобразить кавычку как символ. Для этого, в строке необходимо написать две кавычки подряд. Например
НазваниеОрганизации=" Общество с ограниченной ответственность ""Новая Организация"";
Нами рассмотрены строковые функции.
функция Строка пробелов
Получает строку пробелов заданной длины.
&НаСервере
функция ПолучитьСтрокуПробелов(Длина)
Строка="11111 11111 11111 11111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 ";
пустаяСтрока=Лев(СтрЗаменить(Строка,"1"," "),Длина+Окр(Длина/2));
возврат ПустаяСтрока;
конецфункции