Всем привет
Сегодня попросили меня при печати документа реализации не выводить префикс документа, задачу решил следующим образом.
СтрЗаменить(Номер, Лев (Номер,3), "" );
Когда заглянул в синтакс-помощник так мне это понравилось, что захотелось написать о работе с строками в «1С:Предприятие».
Строка в 1С относится к примитивному типу данных.
Примитивные типы данных в «1С:Предприятия»: Строка, Число, Булево, Дата, Неопределенно, Null и Тип.
Если посмотреть в справку 1С увидим следующее описание типа Строка (String)
Значения данного типа содержат строку в формате Unicode произвольной длины.
Если своими словами о строках то получится. Строка – константа, состоящая из различных символов, обрамляется всегда кавычками.
Задание строки
Обращение = “Привет пассажир”;
Многострочные строки в типовых конфигурациях чаще всего создаются с помощью вертикального разделителя “|”:
Строка = “Многострочная
|строка
|пиши
|текст”;
Кавычка внутри строки задаются двойными кавычками.
Строка = “”Текст в кавычках””;
Над строками существует множество операций (поиск в нутрии строки, определение первых и т.д.), лучше посмотреть Синтакс-помощник.
Синтакс-помощник – Общее описание встроенного языка-> встроенные функции-> функции по работе со строками.
Функций по работе со строками
Здесь в краткой форме приведу функций по работе со строками:
ВРег(<Строка>) – Все символы строки функция преобразует в верхний регистр.
КодСимвола(<Строка>, <НомерСимвола>) – Функция получает код символа, расположенного в переданной строке в позиции с указанным номером.
Лев(<Строка>, <ЧислоСимволов>) – Функция выбирает первые слева символы строки.
Найти(<Строка>, <ПодстрокаПоиска>) – Функция находит вхождение искомой строки как подстроки в исходной строке.
НРег(<Строка>) – Функция преобразует все символы строки в нижний регистр.
Прав(<Строка>, <ЧислоСимволов>) – Данная функция отличается от функций Лев (Left) тем что выбирает последние справа символы строки.
ПустаяСтрока(<Строка>) – Функция проверяет строку на наличие значащих символов.
Символ(<КодСимвола>) – Функция преобразует код символа в строку, содержащую символ.
СокрЛ(<Строка>) – Функция отсекает незначащие символы, стоящие слева от первого значащего символа в строке.
СокрЛП(<Строка>) – Функция отсекает незначащие символы, стоящие слева от первого значащего символа в строке, и пробелы, стоящие справа от последнего значащего символа в строке.
СокрП(<Строка>) – Функция отсекает незначащие символы, стоящие справа от последнего значащего символа в строке.
Сред(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) – Функция выбирает строку символов, начиная с символа <НачальныйНомер>, общим количеством <ЧислоСимволов>.
СтрДлина(<Строка>) – Функция получает количество символов в строке.
СтрЗаменить(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) – Функция находит в исходной строке все вхождения подстроки поиска и заменяет ее на подстроку замены.
СтрПолучитьСтроку(<Строка>, <НомерСтроки>) – Функция получает строку многострочной строки по номеру.
СтрЧислоВхождений(<Строка>, <ПодстрокаПоиска>) – Функция вычисляет число вхождений подстроки поиска в исходной строке.
СтрЧислоСтрок(<Строка>) – Функция считает число строк в многострочной строке. В многострочной строке, строки разделены символами перевода строк.
ТРег(<Строка>) – Функция преобразует строку к титульному регистру. Это означает, что у каждого слова первый символ преобразуется к титульному регистру или к верхнему регистру, если титульный регистр для символа не определен. Остальные символы преобразуются к нижнему регистру.
Преобразования типов
Для явного преобразования типов данных существуют функции одноименные с типом данных, к которому происходит преобразование: Строка(<Значение>)
СтрокаИзЧисел=Строка(Число);
Все данные функции подробно описаны в Синтакс-помощник, как начинающему программисту может помочь Синтакс-помощник, я описал в статье СИНТАКС-ПОМОЩНИК, КОНТЕКСТНАЯ ПОДСКАЗКА И ОТЛАДЧИК.
Примеры по работе с строками
Преобразование числа в строку и обратно.
Для получения строкового представления года следует использовать функцию Формат.
Год = Формат(ТекущаяДата(), "ДФ=yyyy") // Год = "2012"
Чтобы преобразовать число к строке без вставки символа-разделителя групп (неразрывного пробела), необходимо применить функцию Формат с параметром ЧГ=0:
Число = 2012 Строка = Формат(Число,"ЧГ=0"); //Строка = "2012"
Строка Без пробелов.
Строка = СтрЗаменить(" Строка без пробелов "," ",""); //Строка = "Строкабезпробелов"
Проверка строки на пустоту.
// Условие выполнится если строка пустая или содержит только пробелы Если НЕ ЗначениеЗаполнено(Строка) тогда Сообщить("Пустая строка"); КонецЕсли;
Пожалуйста, оставляйте сове мнение, а также вопросы по теме в комментариях.
P.P.S. Улыбайтесь, господа. Улыбайтесь.
У Вас сайт, хороший очень! Шаблон красивый, содержание интересное! Учусь в Старт Ап проекте. Нравится. А Вы!? Как долго, вернее, сколько времени, ушло у Вас на обустройство сайта? Сколько уделяете ему сейчас? Заходите в гости! Вам, буду рад! Дружим сайтами?! Успехов Вам творческих, благополучия достойного. Так держать!
Спасибо Анатолий. Я писал об этом в поста Я СОЗДАЛ БЛОГ ! Более подробно опишу в статье, которую опубликую в ближайшее время.
код отрезания префикса не верный!
косяк в том что может вырезать символы префикса и из середины номера (мало ли какие номера встретятся, может и буквы будут).
Да и медленно это так как будет произведен поиск вхождений префикса в любой позиции строки (а не только в начале)
Правильно так:
Сред(Номер, 3+1);
Критику принимаю 🙂
Но код работает верно и задача стояла удалить префикс, где бы он не находился в начале или в середине, а может и в конце номера.
Подскажите, а как из строки “Сегодня Первый День Весны” выдернуть буквы верхнего регистра? Т.е. д.б. так “СПДВ”
Готовый код я вам конечно не напишу 🙂 т.к. строчкой когда здесь не отделаться и надо потратить время. Задача решается довольно легко.
СтрЗаменить(Номер, Лев (Номер,3), “” ); – так себе решеньице)
Уж оптимальнее было НовыйНомер = Сред(Номер, 4);
Но и это плохо годится, рекомендуется найти функции в общих модулях, возвращающие префиксы организации и информационной базы,А потом уже их и заменять, такое решение будет более универсальным в рамках конфигурации. Потому что, если, например, есть префикс организации и инф. базы, то это уже 4 символа.
За рекомендации спасибо;)
Задача:Используя встроенные функции 1С выбрать минимальное из значений -2.9;-5;-12.выбрать максимальное из значений -5;-4;-3,8.Получить длину строки Движение.
Мне надо удалить 3 последних элемента в строке, как это можно сделать??? Заранее благодарю
Владимир это должно помочь Лев(Строка, СтрДлина(Строка)-3)