1с проверить строку на латиницу
Строка — это один из примитивных типов данных существующих 1С и работать с ним приходится практически постоянно. Следовательно необходимо иметь представление о том, какие функции для работы со строками существуют, как и когда они используются, а также, что получается в результате. Этим и займемся.
Функции для работы со строками в 1С 8.2 и 8.3
Строка
Функция Строка(x) возвращает текстовое представление переданного ей значения “x”.
СтрДлина
Функция СтрДлина(x) вычисляет количество символов в строке “x”, учитывая пробелы и ничего не значащие символы.
СокрЛП, СокрЛ, СокрП
Функции СокрЛП(x), СокрЛ(x) и СокрП(x) убирают пробелы и ничего не значащие символы у переданной строки “x” с обеих сторон, слева и справа соответственно.
Лев, Прав, Сред
Функции Лев(x, y) и Прав(x, y) возвращают количество символов “y” с левого или правого края переданной им строки “x”. А функция Сред(x, y, z) возвращает количество символов “z” из указанного места “y” переданной строки “x”.
ВРег, НРег, ТРег
Функция ВРег(x) преобразует все символы переданной строки “x” в верхний регистр, НРег(x) — в нижний регистр, ТРег(x) — первую букву каждого слова преобразует в верхний регистр, а все остальные нижний.
Найти
Функция Найти(x, y) возвращает номер первого символа первого вхождения подстроки “y” в строку “x”, если, конечно, такое вхождение найдено (при этом нумерация начинается с 1). Если же вхождений не найдено, то функция возвращает 0.
СтрЧислоВхождений
Функция СтрЧислоВхождений(x, y) возвращает количество вхождений подстроки “y” в строку “x”.
СтрЗаменить
Функция СтрЗаменить(x, y, z) позволяет в указанной строке “x” заменить все вхождения одной подстроки “y” на другую “z”, результатом выполнения функции будет строка с проведенными заменами.
ПустаяСтрока
Функция ПустаяСтрока(x) сравнивает переданную ей строку “x” с пустой и возвращает результат этого сравнения — Истина или Ложь, при этом строка состоящая из пробелов и/или ничего не значащих символов приравнивается к пустой.
СтрЧислоСтрок
Функция СтрЧислоСтрок(x) возвращает количество строк в многострочном тексте “x”.
МногострочныйТекст = СтрЗаменить("тест1,тест2,тест3,тест4", ",", Символы.ПС); //тест1 тест2 тест3 тест4
СтрПолучитьСтроку
Функция СтрПолучитьСтроку(x, y) возвращает строку с номером “y” из многострочного текста “x”.
МногострочныйТекст = СтрЗаменить("тест1,тест2,тест3,тест4", ",", Символы.ПС); //тест1 тест2 тест3 тест4
Символ, КодСимвола
Функция Символ(x) получает код символа “x” и возвращает строку содержащую соответствующий символ (в кодировке Unicode). Функция КодСимвола(x) делает обратное действие — получает символ “x” и возвращает его код в кодировке Unicode. Таблицу символов Unicode можно найти, например, тут.
Символы
Это не функция, а набор наиболее часто используемых специальных символов, состоит из:
- ВК (CR) — возврат каретки;
- ВТаб (VTab) — вертикальная табуляция;
- НПП (NBSp) — неразрывный пробел;
- ПС (LF) — перевод строки;
- ПФ (FF) — перевод формы;
- Таб (Tab) — символ горизонтальной табуляции.
ЗначениеВСтрокуВнутр, ЗначениеИзСтрокиВнутр
Функция ЗначениеВСтрокуВнутр(x) возвращает системное строковое представление значения “x”. Функция ЗначениеИзСтрокиВнутр(x) проделывает обратную операцию и возвращает значение, полученное из строкового системного представления “x”. Обе эти функции используются для сохранения функциональной совместимости с версией 7.7. Использование для каких-либо других целей не рекомендуется. В новых версиях платформы данные функции не работают (хотя их описание присутствует в справке).
ВвестиСтроку
Функция ВвестиСтроку(x, y, z, w) вызывает диалог для ввода строки, введенная строка записывается в переменную “x”, кроме этого можно указать подсказку “y”, длину вводимой строки “z”, отметку многострочности вводимого текста “w”. Функция возвращает Истина — если ввод был произведен, Ложь — если пользователь отказался от ввода. Выглядит это окно примерно так:
Инструкция по установке MS SQL Server 2014 Expres на Windows Server 2008 x64 и 1C 8.3 9
Microsoft® SQL Server® 2014 Express mdash бесплатная система управления данными, используется для обеспечения хранения данных и организации сетевой работы некоторых программ. Данный продукт устанавливается на сервере либо на компьютере, выполняюще Полнотекстовый поиск в 1С (что это и пример использования) 23
Полнотекстовый поиск - позволит найти текстовую информацию, размещенную практически в любом месте используемой конфигурации. При этом искать нужные данные можно либо по всей конфигурации в целом, либо сузив область поиска до нескольких объектов Посмотреть все результаты поиска похожих
Еще в этой же категории
Функция разбора (разложения) строки в массив, аналог СтрРазделить 4
Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",", Знач ПропускатьПустыеСтроки = Неопределено) Результат = Новый Массив; // для обеспечения обратной совместимости Если ПропускатьПустыеСтроки = Неопределено Тогда П Как убрать лидирующие нули в номере Документа 1
Часто при разработке печатных форм или отчетов, нужно номера документов вида 000001 преобразовать в 1 - убрав лидирующие нули. в этой статье я приведу несколько способов, а какой выбрать - решайте сами: Функция УбратьЛидирующиеНули(НомерДокумента) Функция очищает текст в формате HTML от тегов и возвращает неформатированный текст - вариант 2 1
Другой вариант получения текста файла ( Функция очищает текст в формате HTML от тегов и возвращает неформатированный текст ) - это использовать ФорматированныйДокумент: ФормДок = Новый ФорматированныйДокумент; Вложения = Новый Структура; ФормДок Проверка наличия в строке только цифр. Регулярные выражения 1
Есть много примеров кода 1с для определения строки состоящей только из цифр. Как правило, это цикл с перебором значений строки. Предлагаю еще один без циклов, с использованием регулярных выражений RegExp = Новый COMОбъект("VBScript.RegExp"); Reg Заполнить строку символами или текстом указанное количество раз 1
Данная конструкция формирует строку с нужным фрагментом, повторенным N раз. КоличествоПовторов = 10; ПовторяемыйФрагмент = "*"; СтрокаРезультат = СтрСоединить(новый массив(КоличествоПовторов + 1), ПовторяемыйФрагмент); Посмотреть все в категории Работа с Текстом (Строкой)
Строка в 1С 8.3 - это значение примитивного типа в виде набора символов (в формате Unicode) произвольной длины. Н умерация символов в строках начинается с единицы. Для строки не доступен обход её символов оператором Для. Каждого . Из . Цикл. Строковые переменные являются набором символов которые заключаются в одинарные кавычки "".
✔ Получение длины строки
&НаКлиенте
Процедура ПолучениеДлиныСтроки ( Команда )
Длина_Строки_Число = СтрДлина ( "АБВГД" ); // 5 (символов)
&НаКлиенте
Процедура ПолучениеЧастиСтроки ( Команда )
ВычисляемаяСтрока = "1С Предприятие 8.3" ;
// N символов слева
Первые_два_символа = Лев ( ВычисляемаяСтрока , 2 ); // 1С
// N символов справа
Последние_три_символа = Прав ( ВычисляемаяСтрока , 3 ); // 8.3
// N символов из середины (с 4-го символа получим 11 символов)
Средние_символы = Сред ( ВычисляемаяСтрока , 4 , 11 ); // Предприятие
&НаКлиенте
Процедура ПолучениеЧислаВхожденийТекстаВСтроку ( Команда )
ВычисляемаяСтрока = "Между нами провода да да да да да. И ты сказала да да да." ;
Количество_вхождений = СтрЧислоВхождений ( ВычисляемаяСтрока , "да" ); // 8
&НаКлиенте
Процедура ПолучениеКодаСимвола ( Команда )
Код_из_символа = КодСимвола ( "C" ); // 67 (Латиница)
Код_первого_символа_в_строке = КодСимвола ( "Артур" ); // 1040 (Кирилица)
Код_пятого_символа_в_строке = КодСимвола ( "ABCDEFG" , 5 ); //69 (Латиница)
Символ_из_кода = Символ ( 67 ); // "A" (Латиница)
&НаКлиенте
Процедура ПреобразованиеВРегистр ( Команда )
//Регистры (верхний, нижний, титульный)
ВычисляемаяСтрока = "У лукоморья Дуб зелёный" ;
Преобразование_в_Верх_регистр = ВРег ( ВычисляемаяСтрока ); // У ЛУКОМОРЬЯ ДУБ ЗЕЛЁНЫЙ
Преобразование_в_Нижн_регистр = НРег ( ВычисляемаяСтрока ); // у лукоморья дуб зелёный
Преобразование_в_Титл_регистр = ТРег ( ВычисляемаяСтрока ); // У Лукоморья Дуб Зелёный
&НаКлиенте
Процедура ПреобразованиеСтрокиВЧисло ( Команда )
фЧисло = Число ( "987.65" ); // 987,65
фЧисло = Число ( "987,65" ); // 987,65
фЧисло = 100 + "24" ; // 124
//Для сложения числа и строки для получения строки:
фСтрока = Строка ( 100 ) + "24" ; // "10024"
&НаКлиенте
Процедура ПоискТекстаВСтроке ( Команда )
ВычисляемаяСтрока = "1С Предприятие 8.3" ;
ТекущийИндекс = Найти ( ВычисляемаяСтрока , "1С" ); // 1
&НаКлиенте
Процедура ПроверкаНаПустуюСтроку ( Команда )
ВычисляемаяСтрока = " " ;
Если ПустаяСтрока ( ВычисляемаяСтрока ) Тогда
// Т.е. может содержать только незначащие символы (например: Пробелы или Переносы)
Сообщить ( "Эта строка пустая!" );
КонецЕсли;
Проверка начала и конца строки: СтрНачинаетсяС, СтрЗаканчиваетсяНа (доступно с платформы 8.3.6.1977) в 1С 8.3:
&НаКлиенте
Процедура ПроверкаНачалаИКонцаСтроки ( Команда )
// СтрНачинаетсяС - это проверка начала строки - со слова "Как"
РезультатПроверки = СтрНачинаетсяС ( "Как хорошо жить" , "Как" ); // Истина
// СтрЗаканчиваетсяНа - это проверка конца строки: на слово "хорошо"
РезультатПроверки = СтрЗаканчиваетсяНа ( "Как хорошо жить" , "хорошо" ); // Ложь
&НаКлиенте
Процедура ПереводСтрокиНаРазныеЯзыки ( Команда )
РезультатПеревода = НСтр ( "ru = 'Как дела?'; en = 'How are you?'" ); // зависит от установленного языка
&НаКлиенте
Процедура МногострочнаяСтрока ( Команда )
//Вставка переноса в строку
ВычисляемаяСтрока =
"Оплата по договору №1" + Символы . ПС + //1-я строка
"Контрагент ""Новая жизнь""" + Символы . ПС + //2-я строка (если нужно использовать " в строке то, используются двойные кавычки "")
"Сумма 1000 руб. с НДС 20%" ; //3-я строка
Результат_число_строк = СтрЧислоСтрок ( ВычисляемаяСтрока ); // 3(строки)
Результат_2_строка = СтрПолучитьСтроку ( ВычисляемаяСтрока , 2 )); // "Контрагент ""Новая жизнь"""
&НаКлиенте
Процедура РазбиениеСтрокиСРазделителями1 ( Команда ) //Пример №1
Разделитель = ";" ;
СтрокиСРазделителем = СтрЗаменить ( "2020; 2021; 2022" , Разделитель , Символы . ПС );
Для А = 1 По СтрЧислоСтрок ( СтрокиСРазделителем ) Цикл
Сообщить ( СтрПолучитьСтроку ( СтрокиСРазделителем , А ));
КонецЦикла;
&НаКлиенте
Процедура РазбиениеСтрокиСРазделителями2 ( Команда ) //Пример №2 (доступно с платформы 8.3.6.1977)
// Параметры СтрРазделить: Строка, Разделитель(символы), Булево (по умолчанию - Истина - включать в результат пустые строки)
РезультатМассив = СтрРазделить ( "2020; 2021; 2022" , ";" ); // Массив с элементами [0] = "2020", [1] = "2021 ", [2] = "2022"
// Существует обратная функция СтрСоединить, которая наоборот преобразует массив к строке.
РезультатСтрока = СтрСоединить ( РезультатМассив , ";" ); // Строка "2020; 2021; 2022"
Войдите как ученик, чтобы получить доступ к материалам школы
Внутренний язык программирования 1С 8.3 для начинающих программистов: работа со строками в 1С
Автор уроков и преподаватель школы: Владимир Милькин
Друзья, сегодня будет интереснейший урок. Мы научимся выполнять операции со строками (мы проходили их здесь).
Наверное, не найдётся ни одного языка программирования, который не давал бы возможностей для обработки строк. Настолько это фундаментальный и необходимый тип данных.
И 1с в этом смысле не исключение. Я, как обычно, прошу вас повторять и проверять у себя весь код, который мы будем писать в этом уроке.
Откуда в программе появляются строки
Сам программист может закодировать определенное значение строки прямо в коде, используя двойные кавычки .
. и далее использовать его по своему усмотрению:
Бывает и так, что значение строки должен ввести сам пользователь. Это делается при помощи команды ВвестиСтроку:
Из чего состоит строка
Любая строка состоит из символов.
К примеру, строка "привет" состоит из символов 'п', 'р', 'и', 'в', 'е', 'т'.
К этим символам можно обращаться по их порядковому номеру. При этом нумерация символов в строке (в отличие от коллекций) начинается не с 0, а с 1.
Узнать общее количество символов в строке можно при помощи функции СтрДлина. Она принимает на вход строку и возвращает нам число символов в этой строке.
Таким образом, цикл обхода строки будет таким:
Если мы запустим эту программу на компьютере, то увидим такой результат:
Мы научились получать номера символов в строке, но как получать сами символы?
За получение нужного символа (или даже группы символов) из строки отвечает функция Сред (сокращение от слов "средина", "средний").
Она принимает три параметра:
- Саму строку.
- Номер символа в строке, который нужно получить.
- Количество символов, которое нужно получить.
В нашем случае мы будем получать по одному символу, поэтому третий параметр у нас всегда будет равен 1.
Итак, перепишем наш код вот так:
Теперь вывод будет совсем другим:
Что представляет из себя символ
Мне иногда кажется, что всё в этом мире есть числа . И символы строки, кстати, не исключение.
И это на самом деле так, ведь каждому значению символа соответствует определенное число, его код.
Зачем вообще может понадобиться переводить символ в числовой код и обратно? Например, если мы захотим написать программу для шифрования и дешифрования текстов. А мы захотим и сделаем это в следующем модуле школы.
За перевод символа в числовой код отвечает функция КодСимвола. Она принимает строку и порядковый номер символа в ней, а возвращает числовой код этого символа.
Давайте выведем числовой код каждого символа нашей строки:
Запустим эту программу, вывод будет таким:
Получается, что, к примеру, символу 'п' соответствует числовой код 1087? Да, это действительно так. Проверим это.
Для этого я сообщу вам способ для обратного перевода: из числового кода в символ. За такой перевод отвечает функция Символ. Она принимает на вход числовой код, а возвращает символ.
Объединение строк
Давайте представим, что у нас есть две вот такие строки .
. и мы хотим сложить (ещё говорят "склеить", "объединить") эти строки вместе, чтобы за значением первой строки сразу следовало значение второй.
Это делается при помощи оператора плюс (+), вот так:
Выведем эту строку пользователю:
Выглядит не очень, правда?
Давайте усложним задачу - требуется объединить эти строки, но между ними вставить пробел, а в конце добавить восклицательный знак.
Вот так гораздо лучше!
Поиск в строке
Давайте рассмотрим такую интересную задачу. Попросим пользователя ввести любой текст, но чтобы в нём встречалось (или нет) слово "счастье".
А в ответ мы будем говорить пользователю в какой позиции в строке находится это слово.
К примеру, если пользователь введёт строку "высыпаться по утрам - счастье", то программа должна ему сказать, что слово "счастье" есть в строке и оно находится в позиции 23.
Будем писать программу по частям.
Сначала напишем ввод строки от пользователя:
За поиск в строке отвечает функция СтрНайти.
На вход она принимает 2 параметра (на самом деле параметров больше, но мы рассмотрим только первые два):
- Строку, в которой надо искать.
- Часть строки (её ещё называют "подстрока"), которую надо найти.
Функция возвращает 0, если вхождение не найдено и позицию в строке, если вхождение найдено. Функция ищет только первое вхождение подстроки в строку.
С учётом этого продолжим написание программы вот так:
Замена в строке
А давайте подшутим над пользователем?
Пусть он введёт строку со словом "счастье", а мы выведем его же строку, в которой заменим слово "счастье", например, на "удовольствие".
За замену одной части строки на другую отвечает функция СтрЗаменить.
На вход она принимает 3 параметра:
- Строку, в которой нужно сделать замену.
- Подстроку, которую надо найти и заменить.
- Подстроку, на которую нужно заменить.
Функция возвращает строку, полученную в результате замены. При этом функция заменяет все вхождения.
Верхний и нижний регистры
А вы заметили, что один и тот же символ может иметь два варианта, например: 'п' и 'П'. Первый вариант называется "нижний регистр", а второй - "верхний регистр".
И для компьютера это разные буквы. Мы можем легко в этом убедиться, если выведем числовые коды этих букв:
Именно поэтому для компьютера, к примеру, строка "привет" будет не равна строке "Привет":
Компьютер при сравнении строк сравнивает числовой код каждого символа одной строки с соответствующим ему (по порядку) числовым кодом символа другой строки. И если есть хотя бы одно неравенство - строки считаются различными.
Но у нас есть замечательная возможность менять регистр строк: из верхнего в нижний и наоборот. За это отвечают функции НРег (сокращение от "нижний регистр") и ВРег (сокращение от "верхний регистр").
Когда это может быть полезно? Вспомните задачу, когда мы заменяли слово "счастье" на "удовольствие".
Функция СтрЗаменить (как и Найти) ищет подстроку с учётом регистра. То есть если пользователь введет вместо "счастье", например, "Счастье", то программа не найдёт этого вхождения.
И чтобы поиск и замена не зависели от того в каком регистре ввёл строку пользователь, мы напишем вот так:
Теперь, даже если пользователь введёт "Любимая работа - это СЧАСТЬЕ!" программа сможет найти слово "счастье" и вывести пользователю "любимая работа - это удовольствие!".
Подведём итоги
Мы рассмотрели основные операции над строками, но на самом деле их больше.
Некоторые из них вы можете изучить вместе с примерами в справочнике по языку 1с.
Строка — примитивный тип данных в языке программирования 1С. Помимо 1С, этот тип данных используется во всех известных языках программирования, обычно он называется «string».
Функции работы со строками в 1С
Рассмотрим основные функции встроенного языка программирования 1С.
Строка
Функция Строка() позволяет получить текстовое представление переменных других типов.
СтрДлина
Функция позволяет получить количество символов в строке 1C, включая пробелы и незначащие символы.
СокрЛП, СокрЛ, СокрП
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Полезная функция для удаления незначащих символов в строковом значении. СокрЛ обрабатывает символы, стоящие слева от последнего значащего символа, СокрП — справа. А СокрЛП — справа и слева.
Помимо пробелов, функция 1C удаляет такие символы, как перенос строки, неразрывный пробел и т.д.
Лев, Прав, Сред
С помощью данных функций очень просто получить первые (Лев) или последние (Прав) символы в строке, а также произвольное количество символов (Сред).
Найти
Функция для поиска подстроки внутри другой подстроки. Синтаксис Найти(, ). Функция возвращает число — номер позиции символа (или символов) в исходной подстроке. Если подстроки не найдено, вернётся число 0. Если в искомой подстроке есть несколько вхождений, вернется номер позиции первого совпадения.
ВРег, НРег, ТРег
Функции для управления регистром строки. ВРег — преобразует строку в верхний регистр. НРег — в нижний. ТРег — у каждого нового слова первая буква преобразуется в верхний регистр, остальные в нижний.
ПустаяСтрока
Функция, позволяющая сравнить исходную строку с пустой строкой. Проверяется наличие незначащих символов.
Аналогично можно проверить строку на пустое значение следующим образом:
СтрЗаменить
Функция СтрЗаменить позволяет массово заменить искомое значение на нужное нам. Синтаксис:
СтрЧислоСтрок
Позволяет получить количество строк в многострочном тексте. Функция считает количество переносов строк (Символы.ПС).
Например, построчная обработка текстового фрагмента:
СтрПолучитьСтроку
С помощью данной функции можно получить произвольную строку из многострочного текста. Синтаксис — СтрПолучитьСтроку(, ).
СтрЧислоВхождений
Функция для подсчета числа вхождений произвольного фрагмента в строку. Например, подсчитать количество вхождений определенных символов или слов в текст.
Символ и КодСимвола
Две обратные функции. С помощью КодСимвола можно получить код символа в кодировке Unicode. Функцией Символ можно получить символ, зная Unicode кодификатор.
Часто встречающиеся задачи по работе со строками в 1С
Рассмотрим классические примеры решения задач в работе с текстовыми переменными.
Конкатенация строк в 1С
Конкатенация, или объединение строк в 1С делается оператором «+».
Преобразовать число в строку
Тут всё просто. Достаточно использовать метод «Строка()»:
Однако может смущать наличие неразрывного пробела.
Его можно убрать с помощью замены неразрывного пробела на пустую строку:
или с помощью метода Формат:
Кавычки в строке 1С
Для новичков достаточно трудно установить кавычки внутри строки, хотя в этом нет ничего сложного. Достаточно внутри строки поставить вместо одних кавычек двое.
Символ переноса строки
Символ переноса строки необходим для переноса строки на следующую строку. В 1С это можно сделать с помощью специальной конструкции «Символы.ПС».
Сравнение строк в 1С
Сравнить строки достаточно просто с помощью оператора сравнения — «=».
Однако для получения корректного сравнения часто требуется возвести строки в один регистр и убрать незначащие символы:
Таким образом, мы получим более точное сравнение двух строк.
Убрать пробелы в строке 1С
Достаточно часто нужно убрать пробелы в строке 1С.
Если требуется убрать пробелы справа и слева:
Если требуется убрать абсолютно все пробелы, можно заменить их на пустую строку:
Если требуется убрать неразрывные пробелы из строки, которая получена из числового типа, сделать это можно так:
Другие статьи по 1С:
Если Вы начинаете изучать 1С программирование, рекомендуем наш курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
Читайте также: