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

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

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

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

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

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


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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

 

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

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

 

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

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

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

11 ответы
  1. Анатолий
    Анатолий says:

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

  2. admin
    admin says:

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

  3. Alter
    Alter says:

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

  4. admin
    admin says:

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

  5. Александр
    Александр says:

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

  6. admin
    admin says:

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

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

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

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

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

  8. зарема
    зарема says:

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

  9. Владимир
    Владимир says:

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

  10. admin
    admin says:

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

Ответить

Want to join the discussion?
Feel free to contribute!

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *