1с строка как найти последний пробел

 

Партнёрская программа 1С и Бланка

 

Как найти последний пробел в строке?

Я
   alexandr_s

22.05.07 – 14:37

Уважаемые, подскажите наразумному… Как найти последний пробел в строке для отсечения последних знаков. Конкретно нужно название объектов из КЛАДР предстваить без знаков “г”, “ул” и т.д.

   AeDen

1 – 22.05.07 – 14:39

СтрЗаменить(Текст, ” “, РазделительСтрок);

   AeDen

2 – 22.05.07 – 14:39

И бери последнюю строчку.

   Salvador Limones

3 – 22.05.07 – 14:40

(2) Что делать, например, с адресом: “26 бакинских коммисаров ул.”?

   AeDen

4 – 22.05.07 – 14:41

(3) “для отсечения последних знаков”

Читать разучился, тока писать?

   AeDen

5 – 22.05.07 – 14:42

+4*Тока писать можешь?

   Salvador Limones

6 – 22.05.07 – 14:43

Болеешь?

   AeDen

7 – 22.05.07 – 14:44

(6) Нет. А что не так?

   Дмитрий Степанов

8 – 22.05.07 – 14:45

(0)

Функция УбратьПоследСимвол(Вх_Строка)

       
   СокрЛП(Вх_Строка);

   
   Если СтрДлина(Вх_Строка)=0 Тогда

       
       Возврат Вх_Строка

       
   Иначе

       
       Кол = СтрЧислоВхождений(Вх_Строка,” “);

           
       Для ИИ = 1  по Кол Цикл

       
           Позиция = Найти(Вх_Строка, ” “);

               
           Ис_Строка = Ис_Строка + Лев(Вх_Строка, Позиция);

           
           Вх_Строка = СокрЛП(Прав(Вх_Строка, СтрДлина(Вх_Строка) – Позиция));

                       
       КонецЦикла;

       
       Возврат Ис_Строка  

   
   КонецЕсли;

       
КонецФункции

   Salvador Limones

9 – 22.05.07 – 14:46

(7) Головой думай.

   Asmody

10 – 22.05.07 – 14:48

а как красиво задача решается на python:

>>> a=”26 бакинских коммисаров ул.”
>>> b=’ ‘.join(a.split(‘ ‘)[:-1])
>>> print b
26 бакинских коммисаров

🙂

   AeDen

11 – 22.05.07 – 14:50

(10) ул. 26 бакинских коммисаров

(9) Моя твоя непонимай. Ты пальцем покажи, что имеешь ввиду:)

   Asmody

12 – 22.05.07 – 14:52

(11.1) в смысле?

   AeDen

13 – 22.05.07 – 14:54

(12) Это разбери:) Хочу посмотреть пример более универсальной реализации на питоне:)

   Asmody

14 – 22.05.07 – 14:59

(13) полностью и толком задачу поставь

  

alexandr_s

15 – 22.05.07 – 15:29

(8)

Что то ругается:

Преобразование значения к типу Число не может быть выполнено

        Ис_Строка = Ис_Строка + Лев(Вх_Строка, Позиция);

TurboConf — расширение возможностей Конфигуратора 1С

Тип «Строка» встречается во всех языках программирования. Он является примитивным, и в 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. Функции для работы со строками в 1С 8.2 и 8.3
  2. Строка
  3. СтрДлина
  4. СокрЛП, СокрЛ, СокрП
  5. Лев, Прав, Сред
  6. ВРег, НРег, ТРег
  7. Найти
  8. СтрЧислоВхождений
  9. СтрЗаменить
  10. ПустаяСтрока
  11. СтрЧислоСтрок
  12. СтрПолучитьСтроку
  13. Символ, КодСимвола
  14. Символы
  15. ЗначениеВСтрокуВнутр, ЗначениеИзСтрокиВнутр
  16. ВвестиСтроку
  17. Функции для работы со строками начиная с версии 8.3.6.1977
  18. СтрШаблон
  19. СтрСравнить
  20. СтрНайти
  21. СтрНачинаетсяС, СтрЗаканчиваетсяНа
  22. СтрРазделить, СтрСоединить
  23. Типовые задачи при работе со строками в 1С 8.2 и 8.3
  24. Сложение строк
  25. Преобразования строка-число, число-строка
  26. Кавычки в строке
  27. Символ переноса строки
  28. Сравнение строк
  29. Разделение строки по разделителю

Функции для работы со строками в 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.

Загрузка…

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

СтрЗаменить(Номер,
Лев (Номер,
3
),
“”
);

Когда заглянул в синтакс-помощник так мне это понравилось, что захотелось написать о работе с строками в «1С:Предприятие»
.

Строка в 1С относится к примитивному типу данных.

Если посмотреть в справку 1С увидим следующее описание типа Строка (String)
Значения данного типа содержат строку в формате Unicode произвольной длины.
Если своими словами о строках то получится. Строка — константа, состоящая из различных символов, обрамляется всегда кавычками.

Задание строки
Обращение = «Привет пассажир»;

Многострочные строки в типовых конфигурациях чаще всего создаются с помощью вертикального разделителя «|»:
Строка = «Многострочная
|строка
|пиши
|текст»;

Кавычка внутри строки задаются двойными кавычками.
Строка = «»Текст в кавычках»»;

Над строками существует множество операций (поиск в нутрии строки, определение первых и т.д.), лучше посмотреть Синтакс-помощник.
Синтакс-помощник — Общее описание встроенного языка-> встроенные функции-> функции по работе со строками.

Функций по работе со строками

Здесь в краткой форме приведу функций по работе со строками:

ВРег(<Строка>)
— Все символы строки функция преобразует в верхний регистр.

КодСимвола(<Строка>, <НомерСимвола>)
– Функция получает код символа, расположенного в переданной строке в позиции с указанным номером.

Лев(<Строка>, <ЧислоСимволов>)
– Функция выбирает первые слева символы строки.

Найти(<Строка>, <ПодстрокаПоиска>)
— Функция находит вхождение искомой строки как подстроки в исходной строке.

НРег(<Строка>)
— Функция преобразует все символы строки в нижний регистр.

Прав(<Строка>, <ЧислоСимволов>)
– Данная функция отличается от функций Лев (Left) тем что выбирает последние справа символы строки.

ПустаяСтрока(<Строка>)
— Функция проверяет строку на наличие значащих символов.

Символ(<КодСимвола>)
— Функция преобразует код символа в строку, содержащую символ.

СокрЛ(<Строка>)
— Функция отсекает незначащие символы, стоящие слева от первого значащего символа в строке.

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

СокрП(<Строка>)
— Функция отсекает незначащие символы, стоящие справа от последнего значащего символа в строке.

Сред(<Строка>, <НачальныйНомер>, <ЧислоСимволов>)
— Функция выбирает строку символов, начиная с символа <НачальныйНомер>, общим количеством <ЧислоСимволов>.

СтрДлина(<Строка>)
— Функция получает количество символов в строке.

СтрЗаменить(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>)
— Функция находит в исходной строке все вхождения подстроки поиска и заменяет ее на подстроку замены.

СтрПолучитьСтроку(<Строка>, <НомерСтроки>)
— Функция получает строку многострочной строки по номеру.

СтрЧислоВхождений(<Строка>, <ПодстрокаПоиска>)
— Функция вычисляет число вхождений подстроки поиска в исходной строке.

СтрЧислоСтрок(<Строка>)
— Функция считает число строк в многострочной строке. В многострочной строке, строки разделены символами перевода строк.

ТРег(<Строка>)
— Функция преобразует строку к титульному регистру. Это означает, что у каждого слова первый символ преобразуется к титульному регистру или к верхнему регистру, если титульный регистр для символа не определен. Остальные символы преобразуются к нижнему регистру.

Преобразования типов

Для явного преобразования типов данных существуют функции одноименные с типом данных, к которому происходит преобразование: Строка(<Значение>)

СтрокаИзЧисел=
Строка(Число);

Все данные функции подробно описаны в Синтакс-помощник, как начинающему программисту может помочь Синтакс-помощник, я описал в статье .

Примеры по работе с строками

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

Для получения строкового представления года следует использовать функцию Формат.

Год =
Формат(ТекущаяДата(),
“ДФ=yyyy”
)

// Год = “2012”

Чтобы преобразовать число к строке без вставки символа-разделителя групп (неразрывного пробела), необходимо применить функцию Формат с параметром ЧГ=0:

Число =
2012
Строка =
Формат(Число,
“ЧГ=0”
);

//Строка = “2012”

Строка Без пробелов.

Строки в 1С 8.3 во встроенном языке 1с представляют собой значения примитивного типа Строка
. Значения данного типа содержат строку в формате Unicode произвольной длины. Переменные строкового типа являются набором символов заключенных в кавычки.

Пример 1. Создадим строковую переменную с текстом.

СтроковаяПеременная = “Привет мир!”;

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

В данном разделе будут приведены основные функции, позволяющие изменять строки в 1с, либо анализировать информацию содержащуюся в них.

СтрДлина

СтрДлина(<Строка>)
. Возвращает количество символов содержащихся в строке, переданной в параметре.

Пример 2. Посчитаем количество символов в строке «Привет мир!».

Строка = “Привет мир!”;
КоличествоСимволов = СтрДлина(Строка);
Сообщить(КоличествоСимволов);

Итогом выполнения данного кода будет вывод на экран количества символов строки: 11.

СокрЛ

СокрЛ(<Строка>)
. Отсекает незначащие символы, стоящие слева от первого значащего символа в строке.
Незначащие символы:

  • пробел;
  • неразрывный пробел;
  • табуляция;
  • возврат каретки;
  • перевод строки;
  • перевод формы (страницы).

Пример 3. Убрать все пробелы с левой стороны строки » мир!» и присоединить к ней строку «Привет «.

Строка = СокрЛ(” мир!”);
Строка = “Привет “+Строка;
Сообщить(Строка);

Итогом выполнения данного кода будет вывод на экран строки «Привет мир!».

СокрП

СокрП(<Строка>)
. Отсекает незначащие символы, стоящие справа от первого значащего символа в строке.

Пример 4. Сформировать из строк «Привет » и » мир!» фразу «Привет мир!»

Строка = СокрП(“Привет “)+” “+СокрЛ(” мир!”);
Сообщить(Строка);

СокрЛП

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

Пример 5. Убрать незначащие символы стоящие слева и справа в наименовании контрагента.

Контрагент = Справочники.Контрагенты.НайтиПоРеквизиту(“ИНН”, “0777121211”);
КонтрагентОбъект = Контрагент.ПолучитьОбъект();
КонтрагентОбъект.Наименование = СокрЛП(КонтрагентОбъект.Наименование);
КонтрагентОбъект.Записать();

Лев

Лев(<Строка>, <ЧислоСимволов>)
. Получает первые символы строки, число символов указывается в параметре ЧислоСимволов.

Пример 6. Пусть в структуре Сотрудник
содержаться имя, фамилия и отчество сотрудника. Получить строку с фамилией и инициалами.

ИнициалИмени = Лев(Сотрудник.Имя, 1);
ИнициалОтчества = Лев(Сотрудник.Отчество, 1);
ПолноеИмя = Сотрудник.Фамилия + ” ”
+ ИнициалИмени + “.”
+ ИнициалОтчества + “.”;

Прав

Прав(<Строка>, <ЧислоСимволов>)
. Получает последние символы строки, число символов указывается в параметре ЧислоСимволов.
Если указанное количество символов превышает длину строки, то возвращается вся строка.

Пример 7. Пусть в конце строковой переменной записана дата в формате «ггггммдд», получить строку с датой и преобразовать ее к типу Дата
.

Строка = “Текущая дата: 20170910”;
СтрокаДата = Прав(Строка, 8);
Дата = Дата(СтрокаДата);

Сред

Сред(<Строка>, <НачальныйНомер>, <ЧислоСимволов>)
. Получает подстроку из строки переданной в параметре Строка
, начиная с символа номер которого указан в параметре НачальныйНомер
и длиной переданной в параметр ЧислоСимволов.
Нумерация символов в строке начинается с 1. Если в параметре НачальныйНомер
указано значение, меньшее или равное нулю, то параметр принимает значение 1. Если параметр ЧислоСимволов
не указан, то выбираются символы до конца строки.

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

Строка = “Регион: 99 г. Москва”;
Регион = Сред(Строка, 9, 2);

СтрНайти

СтрНайти(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>)
. Осуществляет поиск указанной подстроки в строке, возвращает номер позиции первого символа найденной подстроки. Рассмотрим параметры данной функции:

  • Строка
    . Исходная строка;
  • ПодстрокаПоиска
    . Искомая подстрока;
  • НаправлениеПоиска
    . Указывает направление поиска подстроки в строке. Может принимать значения:

    • НаправлениеПоиска.СНачала
      ;
    • НаправлениеПоиска.СКонца
      ;
  • НачальнаяПозиция
    . Указывает позицию в строке, с которой начинается поиск;
  • НомерВхождения
    . Указывает номер вхождения искомой подстроки в исходной строке.

Пример 9. В строке «Привет мир!» определить позицию последнего вхождения символа «и».

НомерПозиции = СтрНайти(“Привет мир!”, “и”, НаправлениеПоиска.СКонца);
Сообщить(НомерПозиции);

Итогом выполнения данного кода будет вывод на экран номера последнего вхождения символа «и»: 9.

ВРег

ВРег(<Строка>)
. Преобразует все символы указанной строки в 1с 8 к верхнему регистру.

Пример 10. Преобразовать строку «привет мир!» к верхнему регистру.

СтрокаВрег = ВРег(“привет мир!”);
Сообщить(СтрокаВрег);

Итогом выполнения данного кода будет вывод на экран строки «ПРИВЕТ МИР!»

НРег

НРег(<Строка>)
. Преобразует все символы указанной строки в 1с 8 к нижнему регистру.

Пример 11. Преобразовать строку «ПРИВЕТ МИР!» к нижнему регистру.

СтрокаНрег = НРег(“ПРИВЕТ МИР!”);
Сообщить(СтрокаВрег);

Итогом выполнения данного кода будет вывод на экран строки «привет мир!»

ТРег

ТРег(<Строка>)
. Преобразует строку следующим образом: первый символ каждого слова переводится в верхний регистр, остальные символы слова переводятся в нижний регистр.

Пример 12. Сделать заглавными первые буквы слов в строке «привет мир!».

СтрокаТрег = ТРег(“привет мир!”);
Сообщить(СтрокаТрег);

Итогом выполнения данного кода будет вывод на экран строки «Привет Мир!»

Символ

Символ(<КодСимвола>)
. Получает символ по его коду в кодировке Unicod.

Пример 13. Добавим слева и справа в строку «Привет Мир!» символ ★

СтрокаСоЗвездами = Символ(“9733”)+”Привет Мир!”+Символ(“9733”);
Сообщить(СтрокаСоЗвездами);

Итогом выполнения данного кода будет вывод на экран строки «★Привет Мир!★»

КодСимвола

КодСимвола(<Строка>, <НомерСимвола>)
. Получает код символа в кодировке Unicode из строки указанной в первом параметре, расположенного в позиции указанной во втором параметре.

Пример 14. Узнать код последнего символа в строке «Привет Мир!».

Строка = “Привет Мир!”;
КодСимвола = КодСимвола(Строка, СтрДлина(Строка));
Сообщить(КодСимвола);

Итогом выполнения данного кода будет вывод на экран кода символа «!» — 33.

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

ПустаяСтрока(<Строка>)
. Проверяет состоит ли строка только из незначащих символов, то есть является ли она пустой.

Пример 15. Проверить является ли пустой строка состоящая из трех пробелов.

Пустая = ПустаяСтрока(” “);
Сообщить(Пустая);

Итогом выполнения данного кода будет вывод на экран слова «Да» (строковое выражение логического значения Истина
).

СтрЗаменить

СтрЗаменить(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>)
. Находит в исходной строке все вхождения подстроки поиска и заменяет ее на подстроку замены.

Пример 16. В строке «Привет Мир!» заменить слово «Мир» на слово «Друзья».

Строка = СтрЗаменить(“Привет Мир!”, “Мир”, “Друзья”);
Сообщить(Строка);

Итогом выполнения данного кода будет вывод на экран строки «Привет Друзья!»

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

СтрЧислоСтрок(<Строка>)
. Позволяет посчитать количество строк в многострочной строке. Для перехода на новую строку в 1с 8 используется символ ПС
(символ перевода строки).

Пример 17. Определить число строк в тексте:
«Первая строка
Вторая строка
Третья строка»

Число = СтрЧислоСтрок(“Первая строка”+Символы.ПС
+”Вторая строка”+Символы.ПС
+”Третья строка”);
Сообщить(Число);

Итогом выполнения данного кода будет вывод на экран количества строк в тексте: 3

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

СтрПолучитьСтроку(<Строка>, <НомерСтроки>)
. Получает строку в многострочной строке по ее номеру. Нумерация строк начинается с 1.

Пример 18. Получить последнюю строку в тексте:
«Первая строка
Вторая строка
Третья строка»

Текст = “Первая строка”+Символы.ПС
+”Вторая строка”+Символы.ПС
+”Третья строка”;
ПоследняяСтрока = СтрПолучитьСтроку(Текст, СтрЧислоСтрок(Текст));
Сообщить(ПоследняяСтрока);

Итогом выполнения данного кода будет вывод на экран строки «Третья строка».

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

СтрЧислоВхождений(<Строка>, <ПодстрокаПоиска>)
. Возвращает число вхождений указанной подстроки в строку. Функция чувствительна к регистру.

Пример 19. Определить сколько раз входит в строку «Строки в 1с 8.3 и 8.2» буква «с», вне зависимости от ее регистра.

Строка = “Строки в 1с 8.3 и 8.2”;
ЧислоВхождений = СтрЧислоВхождений(Врег(Строка), “С”);
Сообщить(ЧислоВхождений);

Итогом выполнения данного кода будет вывод на экран числа вхождений: 2.

СтрНачинаетсяС

СтрНачинаетсяС(<Строка>, <СтрокаПоиска>)
. Проверяет начинается ли строка переданная в первом параметре, со строки во втором параметре.

Пример 20. Определить начинается ли ИНН выбранного контрагента с цифры 1. Пусть в переменной Контрагент
Контрагенты
.

ИНН = Контрагент.ИНН;
НачинаетсяСЕдиницы = СтрНачинаетсяС(ИНН, “1”);
Если НачинаетсяСЕдиницы Тогда
//Ваш код
КонецЕсли;

СтрЗаканчиваетсяНа

СтрЗаканчиваетсяНа(<Строка>, <СтрокаПоиска>)
. Проверяет заканчивается ли строка переданная в первом параметре, на строку во втором параметре.

Пример 21. Определить заканчивается ли ИНН выбранного контрагента на цифру 2. Пусть в переменной Контрагент
хранится ссылка на элемент справочника Контрагенты
.

ИНН = Контрагент.ИНН;
ЗаканчиваетсяНаДвойку = СтрЗаканчиваетсяНа(ИНН, “2”);
Если ЗаканчиваетсяНаДвойку Тогда
//Ваш код
КонецЕсли;

СтрРазделить

СтрРазделить(<Строка>, <Разделитель>, <ВключатьПустые>)
. Разделяет строку на части по указанным символам-разделителям и записывает полученные строки в массив. В первом параметре хранится исходная строка, во втором строка содержащая разделитель, в третьем указывается, нужно ли записывать в массив пустые строки (по умолчанию Истина
).

Пример 22. Пусть у нас есть строка содержащая числа разделенные символом «;», получить из строки массив чисел.

Строка = “1; 2; 3”;
Массив = СтрРазделить(Строка, “;”);
Для Сч = 0 По Массив.Количество() – 1 Цикл
Попытка
Массив[Сч] = Число(СокрЛП(Массив[Сч]));
Исключение
Массив[Сч] = 0;
КонецПопытки
КонецЦикла;

В результате выполнения будет получен массив с числами от 1 до 3-х.

СтрСоединить

СтрСоединить(<Строки>, <Разделитель>)
. Преобразует массив строк из первого параметра в строку, содержащую все элементы массива через разделитель, указанный во втором параметре.

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

Для Сч = 0 По Массив.Количество() – 1 Цикл
Массив[Сч] = Строка(Массив[Сч]);
КонецЦикла;
Строка = СтрСоединить(Массив, “; “);

К базовым возможностям языка программирования обычно относят работу с числами и строками. Обычно эти возможности зашиты в код компилятора (или реализованы «базовые» классы языка программирования).

В 1С возможности работы со строками запрограммированы в самой платформе. Сегодня мы рассмотрим особенности работы со строками 1С в программах на встроенном языке 1С.

Значение строки 1С

1. Начнем с самого простого. Создание переменной и присваивание ей строкового константного значения выглядит в 1С так:

Переменная = “Привет, мир! “;

Если требуется в константном строковом значении 1С указать символ кавычки, то его нужно задвоить «»

Переменная = “Привет, “”мир””!”;

2. Перенос строки 1С можно указать сразу двумя способами. Первый – с использованием символа |

Переменная = “Привет,
| мир! “;

Второй – с использованием системного перечисления Символы. Оно позволяет добавить как перенос строки 1С, так и другие непечатные символы, например TAB.

Переменная = “Привет” + Символы.ПС + “мир! “;

3. Конфигурации в 1С могут быть разработаны не только для одного языка (русского, английского или другого) – но одновременно для нескольких языков. В этом случае используемый в настоящее время язык выбирается в нижней части окна 1С.

Список языков находится в окне конфигурации в ветке Общие/Языки. Каждый язык имеет короткий идентификатор, такой как ru
или eng
.

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

Переменная = “ru=””Привет, мир! “”; en=””Hello, world! “””;

Если Вы будете использовать сформированную так строку 1С как обычно – то она и будет тем, что в ней написано. Для того, чтобы система разбивала ее на два варианта и использовала нужный – необходимо использовать функцию НСтр():

//правильно для двуязычных конфигураций
Сообщить(НСтр(Переменная));

Реквизит с типом строки 1С

Реквизит – это поле справочника/документа 1С. Отличается от переменной в программе на языке 1С тем, что для реквизита точно указывается его тип (число, строка 1С и т.п.). Если Вам нужно освежить в памяти что такое реквизит – посмотрите урок, посвященный .

Если Вы укажите тип реквизита – строка 1С, то дополнительно необходимо указать параметры.

Строки 1С бывают неограниченной длины (указывается как длина = 0) и ограниченной длины, с указанием точного количества символов. Строки 1С неограниченной длины хранятся в отдельной таблице SQL, поэтому их использование менее производительно, чем ограниченной.

Именно поэтому использование строк 1С неограниченной длины имеет свои ограничения – не везде возможно их использовать. Например, нельзя в качестве номера документа, кода справочника, измерения.

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

Для работы со строками есть несколько встроенных функций платформы 1С.

  • СокрЛП(“Невероятно, но факт!”)
    Убирает из строки 1С лишние пробелы. Также можно использовать для преобразования любых типов к строке 1С (например, числа).
  • Переменная = “Вася ” + СокрЛП(” плюс”) + ” Оля”; //будет “Вася плюс Оля”
    Пример суммирования нескольких строковых значений 1С. В результате получится одна строка 1С.
  • Переменная = Лев(“Музыка”, 2); //будет “Му”
    Переменная = Сред(“Музыка”, 2, 2); //будет “зы”
    Переменная = Прав(“Музыка”, 2); //будет “ка”
    Различные варианты получения подстроки из строки 1С.
  • Переменная = Найти(“Музыка”, “зы”); //будет 3
    Поиск подстроки в строке 1С, начиная с символа 1.
  • Переменная = СтрДлина(“Музыка”); //будет 6
    Возвращает количество символов в строке 1С.
  • Сообщить(“Привет”) //в окне сообщений внизу окна 1С
    Предупреждение(“Привет”) //всплывающее диалоговое окно
    Состояние(“Привет”) //в строчке отображения состояния внизу слева
    .

Приведение объектов к строке 1С

Как известно самый популярный формат для обмена структурированной информацией в настоящее время – это XML . Даже последняя версия MS Office Word и Excel сохраняют файлы в этом формате (docx и xlsx соответственно, поменяйте расширение на zip, откройте в архиваторе).

Платформа 1С для обмена данными предоставляет несколько вариантов, основной из которых – также XML.

1. Самый простой метод – использование функции СокрЛП() или Строка(). В тексте запроса можно использовать функцию ПРЕДСТАВЛЕНИЕ(). Результат их действия один и тот же – они генерируют строковое представление любого объекта 1С для пользователя.

Для справочника по умолчанию это будет его наименование. Для документа – имя документа, номер и дата.

2. Любой объект 1С (с ограничениями) может быть преобразован в XML и обратно. Процесс преобразования называется сериализация.

СтрокаВидаXml = XMLСтрока(Значение); //получаем XML из значения 1С
Значение1С = XMLЗначение(Тип(“СправочникСсылка.Номенклатура”),СтрокаВидаXml); //получаем значение 1С из строки XML, необходимо указать тип 1С, который должен быть получен

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

Строка = ЗначениеВСтрокуВнутр(Значение1С); //получаем строку 1С из значения 1С
ЗначениеВФайл(“C:MyFile.txt”, Значение1С); //другой вариант, получаем файл с сохраненной строкой из значения 1С
Значение1С = ЗначениеИзСтрокиВнутр(Строка); //обратно из строки 1С
Значение1С = ЗначениеИзФайла(“C:MyFile.txt”); //обратно из файла

Редактирование строк 1С на форме

Кроме работы со строками 1С в программе на языке 1С конечно хотелось бы, чтобы пользователь мог их редактировать. Для этого есть несколько возможностей:

1. Самый простой способ – запросить ввод строки 1С по требованию. Этот способ используют при обучении программированию 1С, в жизни он применяется гораздо реже (но применяеся!).

Переменная = “”;
Строка = ВвестиЗначение(Переменная, “Введите ФИО”);

2. Для вывода реквизита объекта 1С (справочника/документа) или реквизита формы (см. ) чаще всего используют поле ввода. Это самый распространенный в 1С инструмент для работы пользователя с редактированием полей.

3. Возможности поля ввода можно расширить (см. свойства поля ввода, правой кнопкой на нем, подробнее ):

  • Галочка Многострочный режим редактирования
  • Галочка Расширенное редактирование (доступна если установлена предыдущая галочка)
  • Галочка Режим пароля (см. ).

4. Если всех возможностей поля ввода Вам не хватает – есть встроенный редактор. Для его добавлению на форму нужно в меню Форма/Вставить элемент управления добавить Поле текстового документа. В его свойствах можно указать режим его работы – свойство Расширение.

Поле текстового документа нельзя связать напрямую с данными. Необходимо в обработчике события ПриОткрытии() формы (см. ) прописать функцию:

ЭлементыФормы.ИмяЭлементаПолеТекстовогоДокумента.УстановитьТекст(ЗначениеСтрока); //здесь ЗначениеСтрока – это текст полученный, например из реквизита

А в обработчика сохранения – например, в кнопке Сохранить – добавить сохранение:

ЗначениеСтрока = ЭлементыФормы.ИмяЭлементаПолеТекстовогоДокумента.ПолучитьТекст(); //ЗначениеСтрока здесь – это реквизит, куда мы сохраняем значение

5. В 1С версии 8.2.11, в управляемых формах, появилась новая возможность представления строки 1С – поле Форматированный документ.

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

  • В объект 1С, форму которого мы делаем (справочник, документ, обработка и т.п.) – добавьте реквизит с типом ХранилищеЗначения
  • В функции ПриЧтенииНаСервере() установим текст из реквизита

    //здесь Реквизит – это добавленный реквизит объекта 1С
    //здесь ФорматированныйДокумент – это имя поля на форме для редактирования
    &НаСервере

    ФорматированныйДокумент = ТекущийОбъект.Реквизит.Получить();
    КонецПроцедуры

  • В функции ПередЗаписьюНаСервере() или по кнопке запишем текст из поля

    &НаСервере
    Процедура ПриЧтенииНаСервере(ТекущийОбъект)
    ТекущийОбъект.Реквизит = Новый ХранилищеЗначения(ФорматированныйДокумент);
    КонецПроцедуры

Заметки из Зазеркалья

18.08.2014
Новые функции работы со строками

Реализовано в версии 8.3.6.1977.

Мы расширили набор функций, предназначенных для работы со строками. Мы это сделали для того, чтобы дать вам более развитые инструменты для разбора строковых данных. Новые функции будут удобны и полезны в технологических задачах анализа текста. В задачах, связанных с разбором текста, который содержит данные в форматированном виде. Это может быть анализ каких-то файлов, полученных от оборудования, или, например, анализ технологического журнала.

Все действия, которые выполняют новые функции, вы могли выполнять и раньше. С помощью более или менее сложных алгоритмов, написанных на встроенном языке. Поэтому новые функции не дают вам каких-то принципиально новых возможностей. Однако они позволяют сократить количество кода, сделать код более простым и понятным. А кроме этого они позволяют ускорить выполнение действий. Потому что функции, реализованные в платформе, работают, конечно же, быстрее, чем аналогичный алгоритм, написанный на встроенном языке.

Функция форматирования СтрШаблон()

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

СтрШаблон(<Шаблон>, <Значение1-Значение10>)

<Шаблон> – это строка, в которую нужно подставить представления параметров.

<Значение1> , … <Значение10> – это параметры (максимально – десять), представления которых нужно подставить в строку.

Чтобы указать конкретное место в шаблоне, в которое нужно выполнить подстановку, нужно использовать маркеры вида %1, … %10. Количество маркеров, задействованных в шаблоне, и количество параметров, содержащих значения, должны совпадать.

Например, результатом выполнения такого оператора:

будет строка:

Ошибка в данных в строке 2 (требуется тип Дата)

Функция работы со строками СтрСравнить()

Эта функция сравнивает две строки без учёта регистра. Например, так:

Это же действие вы могли выполнить и раньше с помощью объекта СравнениеЗначений
:

Однако использование новой функции выглядит более простым. А кроме этого функция, в отличие от объекта СравнениеЗначений
, работает и в тонком клиенте, и в веб-клиенте.

Функции работы со строками СтрНачинаетсяС(), СтрЗаканчиваетсяНа()

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

Например, их удобно использовать в операторе Если
:

Функции работы со строками СтрРазделить(), СтрСоединить()

Эти функции разделяют строку на части по указанному разделителю. Или наоборот, соединяют несколько строк в одну, вставляя между ними выбранный разделитель. Они удобны для создания или анализа логов, технологического журнала. Например, запись технологического журнала вы можете легко разобрать на части, пригодные для дальнейшего анализа:

Функция работы со строками СтрНайти()

Вместо старой функции Найти()
мы реализовали новую функцию, которая имеет дополнительные возможности:

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

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

Ниже приведён пример, использующий новые возможности поиска. Поиск в обратном направлении удобен тогда, когда вам нужен последний фрагмент формализованной строки, например, полное имя файла в URL. А поиск с указанной позиции помогает в тех случаях, когда нужно искать в известном фрагменте, а не во всей строке.

Тип «Строка» встречается во всех языках программирования. Он является примитивным, и в 1С существует много функций для работы с ним. В данной статье мы подробно рассмотрим различные способы работы со строковыми типами в 1С 8.3 и 8.2 на примерах.

Строка

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

Строка(Ложь) // возвращает «Нет»
Строка(12345) // возвращает «12 345»
Строка(ТекущаяДата()) //»21.07.2017 11:55:36″

Преобразовывать к строке возможно не только примитивные типы, но и остальные, например элементы справочников, документов.

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

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

СокрЛП(» Будут удалены пробелы с обеих сторон «) // «Будут удалены пробелы с обеих сторон»
СокрЛ(» Будут удалены пробелы с обеих сторон «) // «Будут удалены пробелы слева »
СокрП(» Будут удалены пробелы с обеих сторон «) // « Будут удалены пробелы справа»

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

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

Лев(«Строковая переменная», 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С 8.3 во встроенном языке 1с представляют собой значения примитивного типа Строка. Значения данного типа содержат строку в формате Unicode произвольной длины. Переменные строкового типа являются набором символов заключенных в кавычки.

Пример 1. Создадим строковую переменную с текстом.

СтроковаяПеременная = "Привет мир!";

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

В данном разделе будут приведены основные функции, позволяющие изменять строки в 1с, либо анализировать информацию содержащуюся в них.

СтрДлина

СтрДлина(<Строка>). Возвращает количество символов содержащихся в строке, переданной в параметре.

Пример 2. Посчитаем количество символов в строке «Привет мир!».

Строка = "Привет мир!";	
КоличествоСимволов = СтрДлина(Строка);
	
Сообщить(КоличествоСимволов);

Итогом выполнения данного кода будет вывод на экран количества символов строки: 11.

СокрЛ

СокрЛ(<Строка>). Отсекает незначащие символы, стоящие слева от первого значащего символа в строке.
Незначащие символы:

  • пробел;
  • неразрывный пробел;
  • табуляция;
  • возврат каретки;
  • перевод строки;
  • перевод формы (страницы).

Пример 3. Убрать все пробелы с левой стороны строки »      мир!» и присоединить к ней строку «Привет «.

Строка = СокрЛ("      мир!");	
Строка = "Привет "+Строка;
Сообщить(Строка);

Итогом выполнения данного кода будет вывод на экран строки «Привет мир!».

СокрП

СокрП(<Строка>). Отсекает незначащие символы, стоящие справа от первого значащего символа в строке.

Пример 4. Сформировать из строк «Привет            » и »             мир!» фразу «Привет мир!»

Строка = СокрП("Привет          ") + " " + СокрЛ("      мир!");
Сообщить(Строка);

СокрЛП

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

Пример 5. Убрать незначащие символы стоящие слева и справа в наименовании контрагента.

Строки в 1С. До использования функции СокрЛП

Контрагент = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", "0777121211");
КонтрагентОбъект = Контрагент.ПолучитьОбъект();
	
КонтрагентОбъект.Наименование = СокрЛП(КонтрагентОбъект.Наименование);
	
КонтрагентОбъект.Записать();

Строки в 1С. После использования функции СокрЛП

Лев

Лев(<Строка>, <ЧислоСимволов>). Получает первые символы строки, число символов указывается в параметре ЧислоСимволов. Если указанное количество символов превышает длину строки, то возвращается вся строка.

Пример 6. Пусть в структуре Сотрудник содержаться имя, фамилия и отчество сотрудника. Получить строку с фамилией и инициалами.

ИнициалИмени = Лев(Сотрудник.Имя, 1);
ИнициалОтчества = Лев(Сотрудник.Отчество, 1);
ПолноеИмя = Сотрудник.Фамилия + " " 
    + ИнициалИмени + "." 
    + ИнициалОтчества + ".";

Прав

Прав(<Строка>, <ЧислоСимволов>). Получает последние символы строки, число символов указывается в параметре ЧислоСимволов. Если указанное количество символов превышает длину строки, то возвращается вся строка.

Пример 7. Пусть в конце строковой переменной записана дата в формате «ггггммдд», получить строку с датой и преобразовать ее к типу Дата.

Строка = "Текущая дата: 20170910";
СтрокаДата = Прав(Строка, 8);
	
Дата = Дата(СтрокаДата);

Сред

Сред(<Строка>, <НачальныйНомер>, <ЧислоСимволов>). Получает подстроку из строки переданной в параметре Строка, начиная с символа номер которого указан в параметре НачальныйНомер и длиной переданной в параметр ЧислоСимволов. Нумерация символов в строке начинается с 1. Если в параметре НачальныйНомер указано значение, меньшее или равное нулю, то параметр принимает значение 1. Если параметр ЧислоСимволов не указан, то выбираются символы до конца строки.

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

Строка = "Регион: 99 г. Москва";
Регион = Сред(Строка, 9, 2);

СтрНайти

СтрНайти(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>). Осуществляет поиск указанной подстроки в строке, возвращает номер позиции первого символа найденной подстроки. Рассмотрим параметры данной функции:

  • Строка. Исходная строка;
  • ПодстрокаПоиска. Искомая подстрока;
  • НаправлениеПоиска. Указывает направление поиска подстроки в строке. Может принимать значения:
    • НаправлениеПоиска.СНачала;
    • НаправлениеПоиска.СКонца;
  • НачальнаяПозиция. Указывает позицию в строке, с которой начинается поиск;
  • НомерВхождения. Указывает номер вхождения искомой подстроки в исходной строке.

Пример 9. В строке «Привет мир!» определить позицию последнего вхождения символа «и».

НомерПозиции = СтрНайти("Привет мир!", "и", НаправлениеПоиска.СКонца);
Сообщить(НомерПозиции);

Итогом выполнения данного кода будет вывод на экран номера последнего вхождения символа «и»: 9.

ВРег

ВРег(<Строка>). Преобразует все символы указанной строки в 1с 8 к верхнему регистру.

Пример 10. Преобразовать строку «привет мир!» к верхнему регистру.

СтрокаВрег = ВРег("привет мир!");
Сообщить(СтрокаВрег);

Итогом выполнения данного кода будет вывод на экран строки «ПРИВЕТ МИР!»

НРег

НРег(<Строка>). Преобразует все символы указанной строки в 1с 8 к нижнему регистру.

Пример 11. Преобразовать строку «ПРИВЕТ МИР!» к нижнему регистру.

СтрокаНрег = НРег("ПРИВЕТ МИР!");
Сообщить(СтрокаВрег);

Итогом выполнения данного кода будет вывод на экран строки «привет мир!»

ТРег

ТРег(<Строка>). Преобразует строку следующим образом: первый символ каждого слова переводится в верхний регистр, остальные символы слова переводятся в нижний регистр.

Пример 12. Сделать заглавными первые буквы слов в строке «привет мир!».

СтрокаТрег = ТРег("привет мир!");
Сообщить(СтрокаТрег);

Итогом выполнения данного кода будет вывод на экран строки «Привет Мир!»

Символ

Символ(<КодСимвола>). Получает символ по его коду в кодировке Unicod.

Пример 13. Добавим слева и справа в строку «Привет Мир!» символ ★

СимволЗвезда = Символ("9733");

СтрокаСоЗвездами = СимволЗвезда + "Привет Мир!" + СимволЗвезда;
Сообщить(СтрокаСоЗвездами);

Итогом выполнения данного кода будет вывод на экран строки «★Привет Мир!★»

КодСимвола

КодСимвола(<Строка>, <НомерСимвола>). Получает код символа в кодировке Unicode из строки указанной в первом параметре, расположенного в позиции указанной во втором параметре.

Пример 14. Узнать код последнего символа в строке «Привет Мир!».

Строка = "Привет Мир!";
КодСимвола = КодСимвола(Строка, СтрДлина(Строка));

Сообщить(КодСимвола);

Итогом выполнения данного кода будет вывод на экран кода символа «!» — 33.

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

ПустаяСтрока(<Строка>). Проверяет состоит ли строка только из незначащих символов, то есть является ли она пустой.

Пример 15. Проверить является ли пустой строка состоящая из трех пробелов.

Пустая = ПустаяСтрока("   ");
Сообщить(Пустая);

Итогом выполнения данного кода будет вывод на экран слова «Да» (строковое выражение логического значения Истина).

СтрЗаменить

СтрЗаменить(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>). Находит в исходной строке все вхождения подстроки поиска и заменяет ее на подстроку замены.

Пример 16. В строке «Привет Мир!» заменить слово «Мир» на слово «Друзья».

Строка = СтрЗаменить("Привет Мир!", "Мир", "Друзья");
Сообщить(Строка);

Итогом выполнения данного кода будет вывод на экран строки «Привет Друзья!»

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

СтрЧислоСтрок(<Строка>). Позволяет посчитать количество строк в многострочной строке. Для перехода на новую строку в 1с 8 используется символ ПС (символ перевода строки).

Пример 17. Определить число строк в тексте:
«Первая строка
Вторая строка
Третья строка»

Число = СтрЧислоСтрок("Первая строка
		      |Вторая строка
		      |Третья строка");

Сообщить(Число);

Итогом выполнения данного кода будет вывод на экран количества строк в тексте: 3

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

СтрПолучитьСтроку(<Строка>, <НомерСтроки>). Получает строку в многострочной строке по ее номеру. Нумерация строк начинается с 1.

Пример 18. Получить последнюю строку в тексте:
«Первая строка
Вторая строка
Третья строка»

Текст = "Первая строка 
        |Вторая строка 
        |Третья строка"; 
		  
ПоследняяСтрока = СтрПолучитьСтроку(Текст, СтрЧислоСтрок(Текст)); 

Сообщить(ПоследняяСтрока);

Итогом выполнения данного кода будет вывод на экран строки «Третья строка».

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

СтрЧислоВхождений(<Строка>, <ПодстрокаПоиска>). Возвращает число вхождений указанной подстроки в строку. Функция чувствительна к регистру.

Пример 19. Определить сколько раз входит в строку «Строки в 1с 8.3 и 8.2» буква «с», вне зависимости от ее регистра.

Строка = "Строки в 1с 8.3 и 8.2";		  
ЧислоВхождений = СтрЧислоВхождений(Врег(Строка), "С");

Сообщить(ЧислоВхождений);

Итогом выполнения данного кода будет вывод на экран числа вхождений: 2.

СтрНачинаетсяС

СтрНачинаетсяС(<Строка>, <СтрокаПоиска>). Проверяет начинается ли строка переданная в первом параметре, со строки во втором параметре.

Пример 20. Определить начинается ли ИНН выбранного контрагента с цифры 1. Пусть в переменной Контрагент хранится ссылка на элемент справочника Контрагенты.

ИНН = Контрагент.ИНН;

НачинаетсяСЕдиницы = СтрНачинаетсяС(ИНН, "1");

Если НачинаетсяСЕдиницы Тогда
    //Ваш код
КонецЕсли;

СтрЗаканчиваетсяНа

СтрЗаканчиваетсяНа(<Строка>, <СтрокаПоиска>). Проверяет заканчивается ли строка переданная в первом параметре, на строку во втором параметре.

Пример 21. Определить заканчивается ли ИНН выбранного контрагента на цифру 2. Пусть в переменной Контрагент хранится ссылка на элемент справочника Контрагенты.

ИНН = Контрагент.ИНН;

ЗаканчиваетсяНаДвойку = СтрЗаканчиваетсяНа(ИНН, "2");

Если ЗаканчиваетсяНаДвойку Тогда
    //Ваш код
КонецЕсли;

СтрРазделить

СтрРазделить(<Строка>, <Разделитель>, <ВключатьПустые>). Разделяет строку на части по указанным символам-разделителям и записывает полученные строки в массив. В первом параметре хранится исходная строка, во втором строка содержащая разделитель, в третьем указывается, нужно ли записывать в массив пустые строки (по умолчанию Истина).

Пример 22. Пусть у нас есть строка содержащая числа разделенные символом «;», получить из строки массив чисел.

Строка = "1; 2; 3";	
	
Массив = СтрРазделить(Строка, ";");
	
Для Сч = 0 По Массив.Количество() - 1 Цикл
    Попытка
	Массив[Сч] = Число(СокрЛП(Массив[Сч]));
    Исключение
	Массив[Сч] = 0;
    КонецПопытки;
КонецЦикла;

В результате выполнения будет получен массив с числами от 1 до 3-х.

СтрСоединить

СтрСоединить(<Строки>, <Разделитель>). Преобразует массив строк из первого параметра в строку, содержащую все элементы массива через разделитель, указанный во втором параметре.

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

Для Сч = 0 По Массив.Количество() - 1 Цикл
    Массив[Сч] = Строка(Массив[Сч]);
КонецЦикла;
	
Строка = СтрСоединить(Массив, "; ");

Также прочитать про строковые функции появившиеся в 8.3 можно на официальном сайте 1С: v8.1c.ru

Прочитайте статью про работу с числами: Число в 1С 8.3 — функции работы с числами


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