Для работы со строками в 1С есть большое количество процедур и функций. Разберем некоторые из них на примерах.
Конкатенация
Для конкатенации (объединения) строк используется операция сложения «+»:
СтрокаОдин = "СтрокаОдин";
СтрокаДва = " и СтрокаДва";
ИтоговаяСтрока = СтрокаОдин + СтрокаДва; //СтрокаОдин и СтрокаДва
Обрезка строки
Для удаления незначащих символов используются функции СокрЛ, СокрП, СокрЛП.
К незначащим символам относятся:
- пробел
- неразрывный пробел
- табуляция
- возврат каретки
- перевод строки
- перевод страницы
Длина строки
Чтобы получить длину строки можно воспользоваться методом СтрДлина. Данный метод вернет количество всех символов в строке, включая незначащие символы:
СтрокаОдин = "Сохранить ";
ДлинаСтроки = СтрДлина(СтрокаОдин); //ДлинаСтроки = 10
Проверка на пустую строку
Для проверки, что строка пустая можно использовать сравнение со значением по умолчанию для строки «» или использовать функцию ПустаяСтрока. Данная функция вернет Истина если в строке только незначащие символы:
СтрокаОдин = "";
ЭтоПустаяСтрока = СтрокаОдин = ""; //Истина
СтрокаСПробелом = " ";
ЭтоПустаяСтрока = СтрокаСПробелом = ""; //Ложь
ЭтоПустаяСтрока = ПустаяСтрока(СтрокаСПробелом); //Истина
Доступ к символам строки
Для получения определенного символа строки можно использовать функцию Сред. Для получения самого левого или самого правого символа можно использовать функции Лев и Прав:
СтрокаОдин = "Просто строка";
ЛевыйСимвол = Лев(СтрокаОдин); //П
ПравыйСимвол = Прав(СтрокаОдин); //а
ВторойСимвол = Сред(СтрокаОдин, 2, 1); //р
ТретийСимвол = Сред(СтрокаОдин, 3, 1); //о
//можно по несколько символов
ДваЛевыхСимвола = Лев(СтрокаОдин, 2); //Пр
ДваПравыхСимвола = Прав(СтрокаОдин, 2); //ка
ВторойИТретийСимволы = Сред(СтрокаОдин, 2, 2); //ро
ВсеСимволыСоВторого = Сред(СтрокаОдин, 2); //росто строка
Поиск в строке
Для поиска нужного символа или последовательности символов используется функция СтрНайти. Данная функция вернет номер символа в строке, если символ найден или 0, если не найден:
Стр = "Команда";
Позиция = СтрНайти(Стр, "о"); //Позиция = 2
Позиция = СтрНайти(Стр, "н"); //Позиция = 5
Позиция = СтрНайти(Стр, "у"); //Позиция = 0
Позиция = СтрНайти(Стр, "ман"); //Позиция = 3, номер первого символа
//можно искать с конца
Позиция = СтрНайти(Стр, "а"); //Позиция = 4
Позиция = СтрНайти(Стр, "а", НаправлениеПоиска.СКонца); //Позиция = 7
//регистр учитывается
Позиция = СтрНайти(Стр, "к"); //Позиция = 0
Позиция = СтрНайти(Стр, "К"); //Позиция = 1
//можно искать с середины строки
Позиция = СтрНайти(Стр, "н",, 4);
//Позиция = 5, но поиск выполнялся в строке "анда"
Позиция = СтрНайти(Стр, "о",, 4);
//Позиция = 0, так как поиск выполнялся в строке "анда"
//можно пропустить первый найденный символ
Позиция = СтрНайти(Стр, "а",,, 2);
//Позиция = 7, так как учитываем только второе вхождение
Также в 1С есть функция СтрЧислоВхождений, которая подсчитывает сколько раз одна строка входит в другую строку:
СтрокаОдин = "Строка с буквами к";
Количество = СтрЧислоВхождений(СтрокаОдин, "к"); //Количество = 3
Сообщить("Буква ""к"" встречается в строке """ + СтрокаОдин + """ "
+ Количество + " раза");
Группа методов СтрНачинаетсяС и СтрЗаканчиваетсяНа позволяют определить начинается или заканчивается строка на определенную подстроку. Удобно использовать для анализа расширений имен файлов:
ИмяФайла = "Файл.exe";
ЭтоИсполняемыйФайл = СтрЗаканчиваетсяНа(ИмяФайла, ".exe"); //Истина
ФайлНаБуквуА = СтрНачинаетсяС(ИмяФайла, "А"); //Ложь
Смена регистра
Для изменения регистра используются функции ВРег, НРег, ТРег:
СтрокаОдин = "Оприходование товаров";
СтрокаДва = ВРег(СтрокаОдин); // "ОПРИХОДОВАНИЕ ТОВАРОВ"
СтрокаТри = НРег(СтрокаОдин); // "оприходование товаров"
СтрокаЧетыре = ТРег(СтрокаОдин); // "Оприходование Товаров", каждое слово
//с большой буквы
Код символа
Для получения кода символа используется функция КодСимвола, для получения символа по его коду - Символ:
Код = КодСимвола("а"); //1072
Символ = Символ(1072); //а
Замена
Чтобы заменить один символ или подстроку на другую, применяется функция СтрЗаменить:
СтрокаОдин = "Строка";
СтрокаОдин = СтрЗаменить(СтрокаОдин, "тро", "топ"); //Стопка
//можно удалять какие-то символы, заменяя на ""
СтрокаОдин = "Строка";
СтрокаОдин = СтрЗаменить(СтрокаОдин, "ока", ""); //Стр
Многострочная строка
Для получения строки из многострочной строки по ее номеру можно использовать метод СтрПолучитьСтроку. Для подсчета строк в многострочной строке - СтрЧислоСтрок:
СтрокаОдин = "Многострочкая строка 1" + Символы.ПС + "Многострочкая строка 2";
Колво = СтрЧислоСтрок(СтрокаОдин); //2
ПерваяСтрока = СтрПолучитьСтроку(СтрокаОдин, 1); //Многострочкая строка 1
ВтораяСтрока = СтрПолучитьСтроку(СтрокаОдин, 2); //Многострочкая строка 2
Сравнение строк
Для сравнения строк используется метод СтрСравнить. Если переданные параметрами строки равны, то метод вернет 0. Если первая больше, то 1. Если вторая больше, то -1. Строки сравниваются посимвольно, в порядке следования символов по алфавиту (Б > А):
СтрокаОдин = "СтрокаА";
СтрокаДва = "СтрокаБ";
СтрокаТри = "СтрокаА";
Результат = СтрСравнить(СтрокаОдин, СтрокаДва); // -1
Результат = СтрСравнить(СтрокаДва, СтрокаТри); // 1
Результат = СтрСравнить(СтрокаТри, СтрокаОдин); // 0
Разделение строк
С помощью функции СтрРазделить можно разделить строку на массив подстрок. Первым параметром передается строка, вторым разделитель, третьим признак добавления в массив пустых подстрок между разделителями:
СтрокаОдин = "СтрокаА_СтрокаБ__СтрокаВ";
Массив1 = СтрРазделить(СтрокаОдин, "_", Ложь);
//3 строки: "СтрокаА", "СтрокаБ", "СтрокаВ"
Массив1 = СтрРазделить(СтрокаОдин, "_", Истина);
//4 строки: "СтрокаА", "СтрокаБ", "", "СтрокаВ"
Чтобы соединить строки из массива в одну строку используется функция СтрСоединить. Первым параметром передается массив строк, вторым разделитель, который будет вставлен между ними:
МассивСтрок = Новый Массив;
МассивСтрок.Добавить("СтрокаА");
МассивСтрок.Добавить("СтрокаБ");
МассивСтрок.Добавить("СтрокаВ");
СтрокаОдин = СтрСоединить(МассивСтрок, "_");
//СтрокаОдин = "СтрокаА_СтрокаБ_СтрокаВ";
Склонение строки
Начиная с версии 8.3.13 1С позволяет склонять строки на уровне функций платформы. С помощью функции ПолучитьСклоненияСтроки можно получить массив возможных вариантов склонения строки. Первым параметром передается сама строка для склонения. Вторым параметром передается описание строки, которое включает в себя код локализации и пол. На данный момент поддерживается только русский язык, поэтому код локализации можно не указывать. Пол тоже можно не указывать, тогда платформа попытается определить пол по переданной строке. Третьим параметром нужно передать форматную строку, в которой указывает падеж.
//исходная строка с ФИО
ФИО = "Иванов Иван Иванович";
//параметры перечисляются через ;
//Л - локаль
//ПЛ - пол: Мужской или Женский
ОписаниеСтроки = "Л=ru_RU; ПЛ=Мужской";
//только один параметр ПД - падеж:
//Именительный
//Родительный
//Дательный
//Винительный
//Творительный
//Предложный
ФорматнаяСтрока = "ПД=Родительный";
Массив = ПолучитьСклоненияСтроки(ФИО, ОписаниеСтроки, ФорматнаяСтрока);
Для Каждого Результат Из Массив Цикл
Сообщить(Результат); //Иванова Ивана Ивановича
КонецЦикла;
ФорматнаяСтрока = "ПД=Творительный";
//можно передать только падеж
Массив = ПолучитьСклоненияСтроки(ФИО,, ФорматнаяСтрока);
Для Каждого Результат Из Массив Цикл
Сообщить(Результат); //Ивановым Иваном Ивановичем
КонецЦикла;
С версии 8.3.14 с помощью функции ПолучитьСклоненияСтрокиПоЧислу можно просклонять сложные словосочетания с числами. Рассмотрим данную функцию на примерах:
//вывод
числа цифрами
Результат = ПолучитьСклоненияСтрокиПоЧислу("Орех",
5,,,"ПД=Родительный");
Сообщить(Результат[0]); //5 Орехов
Результат = ПолучитьСклоненияСтрокиПоЧислу("Орех", 5,,,"ПД=Предложный");
Сообщить(Результат[0]); //5 Орехах
//порядковые числительные
Результат = ПолучитьСклоненияСтрокиПоЧислу("Орех", 5,,"ЧС=Порядковое",
"ПД=Родительный");
Сообщить(Результат[0]); // 5-го Ореха
//количественные числительные
Результат = ПолучитьСклоненияСтрокиПоЧислу("Орех",
5,,"ЧС=Количественное", "ПД=Родительный");
Сообщить(Результат[0]); // 5 Орехов
//число прописью
Результат = ПолучитьСклоненияСтрокиПоЧислу("Орех",
5,,"ЧС=Количественное", "ПД=Родительный; ПЧ=ЧислоПрописью");
Сообщить(Результат[0]); // Пяти Орехов
//число прописью с окончанием
Результат = ПолучитьСклоненияСтрокиПоЧислу("Орех",
5,,"ЧС=Количественное", "ПД=Родительный; ПЧ=ЧислоСОкончанием");
Сообщить(Результат[0]); // 5-ти Орехов
//склонение единиц измерения
Результат = ПолучитьСклоненияСтрокиПоЧислу("Орех", 5, "кг, грамм, 2",
"ЧС=Количественное", "ПД=Родительный; ПЧ=ЧислоПрописью");
Сообщить(Результат[0]); // Пяти кг Орехов
Результат = ПолучитьСклоненияСтрокиПоЧислу("Орех", 5.1, "кг, грамм, 2",
"ЧС=Количественное", "ПД=Родительный; ПЧ=ЧислоПрописью");
Сообщить(Результат[0]); // Пяти кг десяти граммов Орехов
Смотрите также:
Электронный учебник по по программированию в 1С Рекомендации по изучению программирования 1С с нуля Программное решение для сдачи и подготовки к экзаменам Программирование в 1С 8.3 с нуля - краткий самоучитель Комплексная подготовка программистов 1С:Предприятие 8.2 Сайты с уроками программирования и со справочниками Youtube-каналы с уроками программирования Сайты для обучения программированию Лекции и уроки