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

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

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

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

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

Примитивные типы данных в «1С:Предприятия»: Строка, Число, Булево, Дата, Неопределенно, Null и Тип.


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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Все данные функции подробно описаны в Синтакс-помощник, как начинающему программисту может помочь Синтакс-помощник, я описал в статье СИНТАКС-ПОМОЩНИК, КОНТЕКСТНАЯ ПОДСКАЗКА И ОТЛАДЧИК.

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

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

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

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

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

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

 

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

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

 

Проверка строки на пустоту.

// Условие выполнится если строка пустая или содержит только пробелы
Если НЕ ЗначениеЗаполнено(Строка) тогда
     Сообщить("Пустая строка");
КонецЕсли;

 

Пожалуйста, оставляйте сове мнение, а также вопросы по теме в комментариях.

P.S. Услуги 1С Программиста

P.P.S. Улыбайтесь, господа. Улыбайтесь.

Поделиться с друзьями
Добавить комментарий

  1. Анатолий

    У Вас сайт, хороший очень! Шаблон красивый, содержание интересное! Учусь в Старт Ап проекте. Нравится. А Вы!? Как долго, вернее, сколько времени, ушло у Вас на обустройство сайта? Сколько уделяете ему сейчас? Заходите в гости! Вам, буду рад! Дружим сайтами?! Успехов Вам творческих, благополучия достойного. Так держать!

  2. Иван Сорокин автор

    Спасибо Анатолий. Я писал об этом в поста Я СОЗДАЛ БЛОГ ! Более подробно опишу в статье, которую опубликую в ближайшее время.

  3. Alter

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

  4. Иван Сорокин автор

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

  5. Александр

    Подскажите, а как из строки “Сегодня Первый День Весны” выдернуть буквы верхнего регистра? Т.е. д.б. так “СПДВ”

  6. Иван Сорокин автор

    Готовый код я вам конечно не напишу 🙂 т.к. строчкой когда здесь не отделаться и надо потратить время. Задача решается довольно легко.

  7. Зиг Хайл Мазафакерс

    СтрЗаменить(Номер, Лев (Номер,3), “” ); — так себе решеньице)

    Уж оптимальнее было НовыйНомер = Сред(Номер, 4);

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

  8. Иван Сорокин автор

    За рекомендации спасибо;)

  9. зарема

    Задача:Используя встроенные функции 1С выбрать минимальное из значений ‑2.9;-5;-12.выбрать максимальное из значений ‑5;-4;-3,8.Получить длину строки Движение.

  10. Владимир

    Мне надо удалить 3 последних элемента в строке, как это можно сделать??? Заранее благодарю

  11. Иван Сорокин автор

    Владимир это должно помочь Лев(Строка, СтрДлина(Строка)-3)