Рядок - один з примітивних типів даних в системах 1С: Підприємство 8. Змінні з типом рядок містять текст.

Значення змінних типу рядокполягають в подвійні лапки. Кілька змінних даного типу можна складати.

Пер1 \u003d "Слово 1";
Пер2 \u003d "Слово 2";
Пер3 \u003d Пер1 + "" + Пер2;

В підсумку Пер3 матиме значення « Слово 1 Слово 2 ".

Крім того, в системах 1С: Підприємство 8 передбачені функції для роботи з рядками. Розглянемо основні:

ВвестіСтроку (<Строка>, <Подсказка>, <Длина>, <Многострочность>) — функція призначена для виведення діалогового вікна, в якому користувач може вказати значення змінної типу рядок. параметр <Строка> є обов'язковим і містить ім'я змінної, в яку буде записана введений рядок. параметр <Подсказка> необов'язковий - це заголовок діалогового вікна. параметр <Длина> необов'язковий, показує максимальну довжину введеної рядки. За замовчуванням дорівнює нулю, що означає необмежену довжину. параметр <Многострочность> необов'язковий. Визначає режим введення багаторядкового тексту: Істина - введення багаторядкового тексту з роздільниками рядків; Брехня - введення простий рядки.

Рядок можна ввести і, знаючи код символу в кодуванні Unicode:

символ (<КодСимвола>) — код вводиться у вигляді числа.

Буква \u003d Символ (1103); // Я

Існує і зворотна функція, що дозволяє дізнатися код будь-якого символу.

КодСімвола (<Строка>, <НомерСимвола>) — повертає номер зазначеного символу в кодуванні Unicode у вигляді числа.

Функції перетворення регістру тексту:

ВРег (<Строка>) - перетворює всі символи рядка в верхній регістр.

НРег (<Строка>) - перетворює всі символи рядка в нижній регістр.

Трег (<Строка>) - перетворює всі символи рядка в титульний регістр. Тобто перші літери у всіх словах перетворюється в верхній регістр, а інші літери - в нижній.

Функції пошуку і заміни символів в рядку:

знайти (<Строка>, <ПодстрокаПоиска>) - знаходить номер символу входження підрядка пошуку. наприклад:

Знайти ( "Рядок", "ока"); // 4

СтрНайті (<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) - знаходить номер символу входження підрядка пошуку, номер входження вказується у відповідному параметрі. При цьому пошук починається з символу, номер якого вказаний у параметрі НачальнаяПозіція.Пошук можливий з початку або з кінця рядка. наприклад:

Номер4 Входження \u003d СтрНайті ( "Обороноздатність", "О", НаправленіеПоіска. Спочатку, 1, 4); // 7

СтрЗаменіть (<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) - знаходить в заданій стрічці все входження підрядка пошуку і замінює її на подстроку заміни.

СтрЗаменіть ( "Рядок", "ока", ""); // Стор

Порожня стрічка(<Строка>) - перевіряє рядок на наявність значущих символів. Якщо значущих символів немає, або взагалі ніяких символів немає, то повертається значення істина. В іншому випадку - брехня.

СтрЧіслоВхожденій (<Строка>, <ПодстрокаПоиска>) - обчислює число входжень підрядка пошуку в заданій стрічці.

СтрЧіслоВхожденій ( "Вчитися, вчитися і ще раз вчитися", "Вчитися", ""); // 3

СтрШаблон (<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — підставляє параметри в рядок за номером. Рядок повинен містити маркери підстановки виду: «% 1 ..% N». Нумерація маркерів починається з 1. Якщо значення параметра Не визначене, Підставляється порожній рядок.

СтрШаблон ( "Параметр 1 \u003d% 1, Параметр 2 \u003d% 2", "1" , "2" ) ; // Параметр 1 \u003d 1, Параметр 2 \u003d 2

Функції перетворення рядків:

Лев (<Строка>, <ЧислоСимволов>) - повертає перші спочатку символи рядка.

прав (<Строка>, <ЧислоСимволов>) - повертає останні символи рядка.

середовищ (<Строка>, <НачальныйНомер>, <ЧислоСимволов>) - повертає рядок довжиною в<ЧислоСимволов>, Починаючи з символу<НачальныйНомер>.

СокрЛ (<Строка>) відсікає незначні символи, які стоять зліва від першого значущого символу в рядку.

СокрП (<Строка>) - відсікає незначні символи, які стоять праворуч від останнього значущого символу в рядку.

СокрЛП (<Строка>) - відсікає незначні символи, які стоять зліва від першого значущого символу в рядку і праворуч від останнього значущого символу в рядку.

СтрПолучітьСтроку (<Строка>, <НомерСтроки>) - отримує рядок многострочной рядки по номеру.

Інші функції:

СтрДліна (<Строка>) - повертає кількість символів в рядку.

СтрЧіслоСтрок (<Строка>) - повертає число рядків в многострочной рядку. Рядок вважається новою, якщо вона відокремлена від попередньої символом переведення рядка.

СтрСравніть (<Строка1>, <Строка2> ) - порівнює два рядки без урахування регістру. Функція працює аналогічно об'єкту СравненіеЗначеній. повертає:

  • 1 - якщо перший рядок більше другий
  • -1 - якщо другий рядок більше першої
  • 0 - якщо рядки рівні

СтрСравніть ( "Перший рядок", "Другий рядок"); // 1

Механізмів для роботи з рядками в запитах 1С мало. По-перше, рядки можна складати. По-друге, від рядка можна взяти подстроку. По-третє, рядки можна порівнювати, в тому числі за шаблоном. Ось мабуть і все, що можна робити з рядками.

додавання рядків

Для складання рядків в запиті використовується операція «+». Складати можна тільки рядки обмеженої довжини.

ВИБРАТИ "Найменування:" + Контрагенти.Наіменованіе ЯК Колонка1 З Справочнік.Контрагенти ЯК Контрагенти ДЕ Контрагенти.Ссилка \u003d & Посилання

функція Підрядок

підрядки (<Строка>, <НачальнаяПозиция>, <Длина>)

Аналог функції Серед () з об'єктної моделі. Функція Підрядок () може застосовуватися до даних строкового типу і дозволяє виділити фрагмент <Строки> , Що починається з символу номер <НачальнаяПозиция> (Символи в рядку нумеруються з 1) і довжиною <Длина> символів. Результат обчислення функції має строковий тип змінної довжини, причому довжина буде вважатися необмеженої, якщо <Строка> має необмежену довжину і параметр <Длина> не є константою або перевищує 1024.

Якщо довжина рядка менше, ніж вказана в другому параметрі, то функція поверне порожній рядок.

Увага! Використання функції Підрядки () з метою приведення рядків необмеженої довжини до рядків обмеженої довжини не рекомендується. Замість неї краще використовувати операцію приведення типу ВИРАЗИТИ ().

функція Подібно

Якщо потрібно переконатися, що строковий реквізит відповідає певним критеріям ми його порівнюємо:

ВИБРАТИ Контрагенти.Наіменованіе ЯК Колонка1 З Справочнік.Контрагенти ЯК Контрагенти ДЕ Контрагенти.Наіменованіе \u003d "Газпром"

А що, якщо потрібно більш хитре порівняння? Не просто на рівність чи нерівність, а на подобу певним шаблоном? От саме для цього і створена функція ПОДІБНО.

ПОДІБНО - Оператор перевірки рядка на подобу шаблоном. Аналог LIKE в SQL.

Оператор ПОДІБНО дозволяє порівняти значення виразу, вказаного ліворуч від нього, з рядком шаблону, зазначеної справа. Значення виразу повинне мати тип рядок. Якщо значення виразу задовольняє шаблоном - результатом оператора буде ІСТИНА, інакше - БРЕХНЯ.

Наступні символи в рядку шаблону є службовими і мають сенс, відмінний від символу рядка:

  • % (Відсоток): послідовність, що містить будь-яку кількість довільних символів;
  • _ (Підкреслення): один довільний символ;
  • [...] (в квадратних дужках один або кілька символів): будь-який одиночний символ з перерахованих всередині квадратних дужок. У перерахуванні можуть зустрічатися діапазони, наприклад a-z, які означають довільний символ, що входить в діапазон, включаючи кінці діапазону;
  • [^ ...] (в квадратних дужках значок заперечення, за яким слід один або кілька символів): будь-який одиночний символ, крім тих, які перераховані слідом за значком заперечення.

Будь-який інший символ означає сам себе і не несе ніякого додаткового навантаження. Якщо в якості самого себе необхідно записати один з перерахованих символів, то йому повинен передувати<Спецсимвол>. сам<Спецсимвол> (Будь-який відповідний символ) визначається в цьому ж операторі після ключового слова спецсимволи.

Нотатки із Задзеркалля

18.08.2014 Нові функції роботи з рядками

Реалізовано в версії 8.3.6.1977.

Ми розширили набір функцій, призначених для роботи з рядками. Ми це зробили для того, щоб дати вам більш розвинені інструменти для розбору строкових даних. Нові функції будуть зручні і корисні в технологічних завданнях аналізу тексту. У завданнях, пов'язаних з розбором тексту, який містить дані в форматованому вигляді. Це може бути аналіз якихось файлів, отриманих від обладнання, або, наприклад, аналіз технологічного журналу.

Всі дії, які виконують нові функції, ви могли виконувати і раніше. За допомогою більш-менш складних алгоритмів, написаних на вбудованій мові. Тому нові функції не дають вам якихось принципово нових можливостей. Однак вони дозволяють скоротити кількість коду, зробити код більш простим і зрозумілим. А крім цього вони дозволяють прискорити виконання дій. Тому що функції, реалізовані в платформі, працюють, звичайно ж, швидше, ніж аналогічний алгоритм, написаний на вбудованій мові.

Функція форматування СтрШаблон ()

Ця функція підставляє параметри в рядок. Потреба в такому перетворенні часто виникає, наприклад, при виведенні попереджувальних повідомлень. Синтаксис цієї функції виглядає наступним чином:

СтрШаблон (<Шаблон>, <Значение1-Значение10>)

<Шаблон> - це рядок, в яку потрібно підставити представлення параметрів.

<Значение1> , ... <Значение10> - це параметри (максимально - десять), уявлення яких потрібно підставити в рядок.

Щоб вказати конкретне місце в шаблоні, в яке потрібно виконати підстановку, потрібно використовувати маркери виду% 1, ...% 10. Кількість маркерів, задіяних в шаблоні, і кількість параметрів, що містять значення, повинні збігатися.

Наприклад, результатом виконання такого оператора:

буде рядок:

Помилка в даних в рядку 2 (потрібно тип Дата)

Функція роботи з рядками СтрСравніть ()

Ця функція порівнює два рядки без урахування регістру. Наприклад, так:

Це ж дію ви могли виконати і раніше за допомогою об'єкта СравненіеЗначеній:

Однак використання нової функції виглядає більш простим. А крім цього функція, на відміну від об'єкта СравненіеЗначеній, Працює і в тонкому клієнті, і в веб-клієнті.

Функції роботи з рядками СтрНачінаетсяС (), СтрЗаканчіваетсяНа ()

Ці функції визначають, чи починається рядок з вказаною підрядка, закінчується рядок зазначеної підрядком. Алгоритм цих функцій нескладно реалізувати на вбудованій мові, але їх наявність дозволяє писати більш чистий і зрозумілий код. І працюють вони швидше.

Наприклад, їх зручно використовувати в операторі якщо:

Функції роботи з рядками СтрРазделіть (), СтрСоедініть ()

Ці функції поділяють рядок на частини за вказаною разделителю. Або навпаки, з'єднують кілька рядків в одну, вставляючи між ними обраний роздільник. Вони зручні для створення або аналізу логів, технологічного журналу. Наприклад, запис технологічного журналу ви можете легко розібрати на частини, придатні для подальшого аналізу:

Функція роботи з рядками СтрНайті ()

Замість старої функції Знайти () ми реалізували нову функцію, яка має додаткові можливості:

  • Пошук в різних напрямках (з початку, з кінця);
  • Пошук з вказаної позиції;
  • Пошук входження з вказаним номером (друге, третє і т.д.).

Фактично вона дублює можливості старої функції. Так зроблено для того, щоб зберегти сумісність з модулями, скомпільованими в старих версіях. стару функцію Знайти () рекомендується більше не використовувати.

Нижче наведено приклад, який використовує нові можливості пошуку. Пошук в зворотному напрямку зручний тоді, коли вам потрібен останній фрагмент формалізованої рядки, наприклад, повне ім'я файлу в URL. А пошук з вказаної позиції допомагає в тих випадках, коли потрібно шукати в відомому фрагменті, а не у всьому рядку.

Рядки в 1С 8.3 у вбудованому мовою 1с представляють собою значення примітивного типу рядок. Значення даного типу містять рядок у форматі Unicode довільної довжини. Змінні строкового типу є набором символів укладених в лапки.

Приклад 1. Створимо строкову змінну з текстом.

СтроковаяПеременная \u003d "Привіт світ!";

Функції роботи з рядками в 1с 8.3

В даному розділі будуть наведені основні функції, що дозволяють змінювати рядки в 1с, або аналізувати інформацію що міститься в них.

СтрДліна

СтрДліна (<Строка>) . Повертає кількість символів містяться в рядку, переданої в параметрі.

Приклад 2. Порахуємо кількість символів в рядку «Привіт світ!».

Рядок \u003d "Привіт світ!"; КолічествоСімволов \u003d СтрДліна (Рядок); Повідомити (КолічествоСімволов);

Підсумком виконання даного коду буде висновок на екран кількості символів рядка: 11.

СокрЛ

СокрЛ (<Строка>) . Відсікає незначні символи, які стоять зліва від першого значущого символу в рядку.
Незначущі символи:

  • пробіл;
  • нерозривний пробіл;
  • табуляція;
  • повернення каретки;
  • переклад рядка;
  • переклад форми (сторінки).

Приклад 3. Прибрати все прогалини з лівого боку рядка »світ!» і приєднати до неї рядок «Привіт«.

Рядок \u003d СокрЛ ( "світ!"); Рядок \u003d "Привіт" + рядок; Повідомити (Рядок);

Підсумком виконання даного коду буде висновок на екран рядки «Привіт світ!».

СокрП

СокрП (<Строка>) . Відсікає незначні символи, які стоять праворуч від першого значущого символу в рядку.

Приклад 4. Сформувати з рядків «Привіт» і »світ!» фразу «Привіт світ!»

Рядок \u003d СокрП ( "Привіт") + "" + СокрЛ ( "світ!"); Повідомити (Рядок);

СокрЛП

СокрЛП (<Строка>) . Відсікає незначні символи, які стоять праворуч від першого значущого символу в рядку, також відсікає незначні символи, які стоять зліва від першого значущого символу в рядку. Призначений частіше попередніх двох, так як вона більш універсальна.

Приклад 5. Прибрати незначні символи стоять зліва і справа в найменуванні контрагента.

Контрагент \u003d Справочнікі.Контрагенти.НайтіПоРеквізіту ( "ІПН", "0777121211"); КонтрагентОб'ект \u003d Контрагент.ПолучітьОб'ект (); КонтрагентОб'ект.Наіменованіе \u003d СокрЛП (КонтрагентОб'ект.Наіменованіе); КонтрагентОб'ект.Запісать ();

Лев

Лев (<Строка>, <ЧислоСимволов>) . Отримує перші символи рядка, число символів вказується в параметрі ЧіслоСімволов.

Приклад 6. Нехай в структурі співробітник міститися ім'я, прізвище та по батькові співробітника. Отримати рядок з прізвищем та ініціалами.

ІніціалІмені \u003d Лев (Сотруднік.Імя, 1); ІніціалОтчества \u003d Лев (Сотруднік.Отчество, 1); ПолноеІмя \u003d Сотруднік.Фамілія + "" + ІніціалІмені + "." + ІніціалОтчества + ".";

прав

прав (<Строка>, <ЧислоСимволов>) . Отримує останні символи рядка, число символів вказується в параметрі ЧіслоСімволов. Якщо вказану кількість символів перевищує довжину рядка, то повертається вся рядок.

Приклад 7. Нехай в кінці строкової змінної записана дата в форматі «РРРРММДД», отримати рядок з датою і перетворити її до типу Дата.

Рядок \u003d "Поточна дата: 20170910"; СтрокаДата \u003d Прав (Рядок, 8); Дата \u003d Дата (СтрокаДата);

середовищ

середовищ (<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . Отримує подстроку з рядка переданої в параметрі рядок, Починаючи з символу номер якого вказаний у параметрі НачальнийНомер і довжиною переданої в параметр ЧіслоСімволов.Нумерація символів в рядку починається з 1. Якщо в параметрі НачальнийНомер вказано значення, менше або рівне нулю, то параметр приймає значення 1. Якщо параметр ЧіслоСімволов не вказано, то вибираються символи до кінця рядка.

Приклад 8. Нехай в строкової змінної починаючи з дев'ятої позиції міститься код регіону, слід отримати його і записати в окремий рядок.

Рядок \u003d "Регіон: 99 м Москва"; Регіон \u003d Серед (Рядок, 9, 2);

СтрНайті

СтрНайті (<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . Здійснює пошук зазначеної підрядка в рядку, повертає номер позиції першого символу знайденого підрядка. Розглянемо параметри даної функції:

  • рядок. Вихідна рядок;
  • ПодстрокаПоіска. Шукана підрядок;
  • НаправленіеПоіска. Вказує напрямок пошуку підрядка в рядку. Може приймати значення:
    • НаправленіеПоіска.СНачала;
    • НаправленіеПоіска.СКонца;
  • НачальнаяПозіція. Вказує позицію в рядку, з якої починається пошук;
  • НомерВхожденія. Вказує номер входження шуканої підрядка в заданій стрічці.

Приклад 9. У рядку «Привіт світ!» визначити позицію останнього входження символу «і».

НомерПозіціі \u003d СтрНайті ( "Привіт світ!", "І", НаправленіеПоіска.СКонца); Повідомити (НомерПозіціі);

Підсумком виконання даного коду буде висновок на екран номера останнього входження символу «і»: 9.

ВРег

ВРег (<Строка>) . Перетворює всі символи зазначеного рядка в 1с 8 до верхнього регістру.

Приклад 10. Перетворити рядок «привіт світ!» до верхнього регістру.

СтрокаВрег \u003d ВРег ( "привіт світ!"); Повідомити (СтрокаВрег);

Підсумком виконання даного коду буде висновок на екран рядки «ПРИВІТ СВІТ!»

НРег

НРег (<Строка>) . Перетворює всі символи зазначеного рядка в 1с 8 до нижнього регістру.

Приклад 11. Перетворити рядок «ПРИВІТ СВІТ!» до нижнього регістру.

СтрокаНрег \u003d НРег ( "ПРИВІТ СВІТ!"); Повідомити (СтрокаВрег);

Підсумком виконання даного коду буде висновок на екран рядки «привіт світ!»

Трег

Трег (<Строка>) . Перетворює рядок в такий спосіб: перший символ кожного слова перекладається в верхній регістр, інші символи слова переводяться в нижній регістр.

Приклад 12. Зробити великими перші літери слів в рядку «привіт світ!».

СтрокаТрег \u003d Трег ( "привіт світ!"); Повідомити (СтрокаТрег);

Підсумком виконання даного коду буде висновок на екран рядки «Привіт Мир!»

символ

символ (<КодСимвола>) . Отримує символ по його коду в кодуванні Unicod.

Приклад 13. Додамо зліва і справа в рядок «Привіт Мир!» символ ★

СтрокаСоЗвездамі \u003d Символ ( "9733") + "Привіт Мир!" + Символ ( "9733"); Повідомити (СтрокаСоЗвездамі);

Підсумком виконання даного коду буде висновок на екран рядки «★ Привіт Мир! ★»

КодСімвола

КодСімвола (<Строка>, <НомерСимвола>) . Отримує код символу в кодуванні Unicode з рядка зазначеної в першому параметрі, розташованого в позиції зазначеної у другому параметрі.

Приклад 14. Дізнатися код останнього символу в рядку «Привіт Мир!».

Рядок \u003d "Привіт Мир!"; КодСімвола \u003d КодСімвола (Рядок, СтрДліна (Рядок)); Повідомити (КодСімвола);

Підсумком виконання даного коду буде висновок на екран коду символу «!» - 33.

Порожня стрічка

Порожня стрічка(<Строка>) . Перевіряє чи перебуває рядок тільки з незначущих символів, тобто чи є вона порожній.

Приклад 15. Перевірити чи є порожній рядок складається з трьох прогалин.

Порожня \u003d ПустаяСтрока ( ""); Повідомити (Порожня);

Підсумком виконання даного коду буде висновок на екран слова «Так» (строкове вираження логічного значення істина).

СтрЗаменіть

СтрЗаменіть (<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) . Знаходить в заданій стрічці все входження підрядка пошуку і замінює її на подстроку заміни.

Приклад 16. У рядку «Привіт Мир!» замінити слово «Мир» на слово «Друзі».

Рядок \u003d СтрЗаменіть ( "Привіт Мир!", "Мир", "Друзі"); Повідомити (Рядок);

Підсумком виконання даного коду буде висновок на екран рядки «Привіт Друзі!»

СтрЧіслоСтрок

СтрЧіслоСтрок (<Строка>) . Дозволяє порахувати кількість рядків в многострочной рядку. Для переходу на новий рядок в 1с 8 використовується символ ПС (Символ перекладу рядка).

Приклад 17. Визначити число рядків в тексті:
«Перший рядок
Другий рядок
Третій рядок »

Число \u003d СтрЧіслоСтрок ( "Перший рядок" + Сімволи.ПС + "Другий рядок" + Сімволи.ПС + "Третій рядок"); Повідомити (Число);

Підсумком виконання даного коду буде висновок на екран кількості рядків в тексті: 3

СтрПолучітьСтроку

СтрПолучітьСтроку (<Строка>, <НомерСтроки>) . Отримує рядок в многострочной рядку по її номеру. Нумерація рядків починається з 1.

Приклад 18. Отримати останній рядок в тексті:
«Перший рядок
Другий рядок
Третій рядок »

Текст \u003d "Перший рядок" + Сімволи.ПС + "Другий рядок" + Сімволи.ПС + "Третій рядок"; ПоследняяСтрока \u003d СтрПолучітьСтроку (Текст, СтрЧіслоСтрок (Текст)); Повідомити (ПоследняяСтрока);

Підсумком виконання даного коду буде висновок на екран рядки «Третій рядок».

СтрЧіслоВхожденій

СтрЧіслоВхожденій (<Строка>, <ПодстрокаПоиска>) . Повертає число входжень зазначеної підрядка в рядок. Функція чутлива до регістру.

Приклад 19. Визначити скільки разів входить в рядок «Рядки в 1с 8.3 і 8.2» буква «с», незалежно від її регістру.

Рядок \u003d "Рядки в 1с 8.3 і 8.2"; ЧіслоВхожденій \u003d СтрЧіслоВхожденій (Врег (Рядок), "С"); Повідомити (ЧіслоВхожденій);

Підсумком виконання даного коду буде висновок на екран числа входжень: 2.

СтрНачінаетсяС

СтрНачінаетсяС (<Строка>, <СтрокаПоиска>) . Перевіряє чи починається рядок передана в першому параметрі, з рядка в другому параметрі.

Приклад 20. Визначити починається чи ІПН обраного контрагента з цифри 1. Нехай в змінної контрагент контрагенти.

ІПН \u003d Контрагент.ІНН; НачінаетсяСЕдініци \u003d СтрНачінаетсяС (ІПН, "1"); Якщо НачінаетсяСЕдініци Тоді // Ваш код КонецЕсли;

СтрЗаканчіваетсяНа

СтрЗаканчіваетсяНа (<Строка>, <СтрокаПоиска>) . Перевіряє закінчується рядок передана в першому параметрі, на рядок у другому параметрі.

Приклад 21. Визначити закінчується чи ІПН обраного контрагента на цифру 2. Нехай у змінній контрагентзберігається посилання на елемент довідника контрагенти.

ІПН \u003d Контрагент.ІНН; ЗаканчіваетсяНаДвойку \u003d СтрЗаканчіваетсяНа (ІПН, "2"); Якщо ЗаканчіваетсяНаДвойку Тоді // Ваш код КонецЕсли;

СтрРазделіть

СтрРазделіть (<Строка>, <Разделитель>, <ВключатьПустые>) . Розділяє рядок на частини за зазначеними символів-роздільників і записує отримані рядки в масив. У першому параметрі зберігається вихідна рядок, у другому рядок містить розділовий знак, який в третьому вказується, чи потрібно записувати в масив порожні рядки (за замовчуванням істина).

Приклад 22. Нехай у нас є рядок містить числа розділені символом «;», отримати з рядка масив чисел.

Рядок \u003d "1; 2; 3"; Масив \u003d СтрРазделіть (Рядок, ";"); Для Сч \u003d 0 За Массів.Колічество () - 1 Цикл Спроба Масив [Сч] \u003d Число (СокрЛП (Масив [Сч])); Виняток Масив [Сч] \u003d 0; КонецПопиткі КонецЦікла;

В результаті виконання буде отримано масив з числами від 1 до 3-х.

СтрСоедініть

СтрСоедініть (<Строки>, <Разделитель>) . Перетворює масив рядків з першого параметра в рядок, що містить всі елементи масиву через розділовий знак, який вказаний в другому параметрі.

Приклад 23. Використовуючи масив чисел з попереднього прикладу, отримати вихідну рядок.

Для Сч \u003d 0 За Массів.Колічество () - 1 Цикл Масив [Сч] \u003d Рядок (Масив [Сч]); КонецЦікла; Рядок \u003d СтрСоедініть (Масив, ";");

Тип «Рядок» зустрічається у всіх мовах програмування. Він є примітивним, і в 1С існує багато функцій для роботи з ним. У даній статті ми докладно розглянемо різні способи роботи із строковими типами в 1С 8.3 та 8.2 на прикладах.

рядок

Для того щоб перетворити змінну будь-якого типу в рядок, існує однойменна функція «Рядок ()». Вхідним параметром буде сама змінна, строкове представлення якої необхідно отримати.

Рядок (Брехня) // повертає «Ні»
Рядок (12345) // повертає «12 345»
Рядок (ТекущаяДата ()) //»21.07.2017 11:55:36 "

Перетворювати до рядка можливо не тільки примітивні типи, а й інші, наприклад елементи довідників, документів.

СокрЛП, СокрЛ, СокрП

В якості вхідних параметрів даних функцій виступає змінна строкового типу. Функції видаляють незначні символи (пробіли, переноси каретки та інші): з лівого і правого боку, тільки з лівого боку, і тільки з правого відповідно.

СокрЛП ( "Будуть видалені прогалини по обидва боки«) // «Будуть видалені прогалини з обох сторін»
СокрЛ ( "Будуть видалені прогалини по обидва боки«) // «Будуть видалені прогалини зліва»
СокрП ( "Будуть видалені прогалини по обидва боки«) // «Будуть видалені прогалини справа»

Лев, Прав, Серед

Дані функції дозволяють обрізати частину рядка. Функція «Лев ()» поверне частину рядка з її лівого боку зазначеної довжини. Функція «Прав ()» аналогічно, але обрізка проводиться справа. Функція «Серед ()» дозволяє вказати номер символу, з якого буде виділена рядок і її довжину.

Лев ( «Строкова змінна», 4) // повертає «Стро»
Прав ( «Строкова змінна», 7) // повертає «еременная»
Середовищ ( «Строкова змінна», 2, 5) // повертає «Троки»

СтрДліна

Функція визначає кількість символів, які містяться в строкової змінної.

СтрДліна ( «Слово«) // результатом виконання буде число 5

знайти

Функція дає можливість шукати в будь-якої строкової змінної частина рядка. Як повертається виступатиме число, яке показує позицію початку знайденої рядки. Якщо збігів не виявлено, повертається нуль.

Зверніть увагу, що пошук проводиться з урахуванням регістру. Якщо в початковій рядку буде більше одного входження підрядка пошуку, функція поверне початок першого входження.

Знайти ( «раз, два, раз, два, три», «два») // функція поверне число 6

Порожня стрічка

Цю функцію не дозволяє визначити, чи є рядок порожній. Незначні символи, наприклад, пробіл, перенесення каретки і інші не враховуються.

ПустаяСтрока ( «Пупкін Василь Іванович») // функція поверне значення Брехня
ПустаяСтрока ( »«) // функція поверне значення Істина

ВРег, НРег, Трег

Дані функції дуже корисні при порівнянні і перетворенні строкових змінних. «Врег ()» поверне вихідну рядок у верхньому регістрі, «НРег ()» в нижньому, а «Трег ()» отформатирует її так, що перший символ кожного окремого слова буде з великої літери, а всі наступні з маленькою.

ВРег ( «Генеральний директор») // повертає значення - «ГЕНЕРАЛЬНИЙ ДИРЕКТОР»
НРег ( «Генеральний директор») // повертає значення - «генеральний директор»
Трег ( «Генеральний директор») // повертає значення - «Генеральний Директор»

СтрЗаменіть

Ця функція є аналогом заміни в текстових редакторах. Вона дозволяє підміняти один символ або набір символів іншим в строкових змінних.

СтрЗаменіть ( «червоний, білий, жовтий», «,», «;») // поверне «червоний; білий; жовтий »

СтрЧіслоСтрок

Функція дозволяє визначити кількість рядків, розділених перенесенням каретці в текстовій змінної.

Цикл, в наведеному нижче прикладі, пройде три кола, так як функція СтрЧіслоСтрок поверне значення 3:

Для інд \u003d 1 по СтрЧіслоСтрок ( «рядок1» + Сімволи.ПС + «рядок2» + Сімволи.ПС + «Строка3») Цикл
<тело цикла>
КонецЦікла;

СтрПолучітьСтроку

Ця функція працює з багаторядковим текстом так само, як і попередня. Вона дозволяє отримати певну рядок з текстової змінної.

СтрПолучітьСтроку ( «рядок1» + Сімволи.ПС + «рядок2» + Сімволи.ПС + «Строка3», 2) // поверне «рядок2»

СтрЧіслоВхожденій

Функція підраховує кількість входжень символу або підрядка в шуканої рядку.

СтрЧіслоВложеній ( «а, б; в; г;«, «;») // функція поверне число 4

Символ і КодСімвола

Ці функції дозволяють отримувати символ по його коду в кодуванні Unicode, а так само визначати цей код по самому символу.

КодСімвола ( «А») // функція поверне число 1 040
КодСімвола (1040) // функція поверне «А»

Часті завдання при роботі з рядками

об'єднання рядків

Щоб об'єднати кілька рядків (зробити конкатенацію) досить використовувати оператор додавання.

«Рядок 1" + "Рядок 2" // результатом складання двох рядків буде «Рядок 1 Рядок 2»

перетворення типів

Для того, щоб перетворити тип в рядок, наприклад, посилання на елемент довідника, число та інше, досить використовувати функцію «Рядок ()». Функції, подібні «СокрЛП ()» так само будуть перетворювати змінні в рядок, але вже відразу з відсіканням незначущих символів.

Рядок (1000) // поверне «1 000»

Зверніть увагу, що при перетворенні числа в рядок, програма автоматично додала пробіл, що відокремлює тисячу. Для того щоб цього уникнути можна скористатися наступними конструкціями:

СтрЗаменіть (Рядок (1000), Сімволи.НПП, »») // поверне «1000»

Рядок (Формат (1000, "ЧГ \u003d»)) // поверне «1000»

Лапки в рядку

Досить часто вам доведеться стикатися з необхідністю вказати в строкової змінної лапки. Це може бути як текст запиту, написаний в конфігураторі, так і просто змінна. Для вирішення даного завдання вам досить встановити два символу лапок.

Тема \u003d Рядок ( «ТОВ« »Роги і копита» »- це ми!») // поверне «ТОВ« Роги і копита »- це ми!»

Багаторядкова, перенесення рядка

Для того, щоб створити багатостроковий текст досить додати в нього символи розриву рядків (Сімволи.ПС).

МногострочнийТекст \u003d «Перший рядок» + Сімволи.ПС + «Другий рядок»

Як прибрати пропуски

Для того, щоб прибрати пробіли справа або зліва можна скористатися функцією «СокрЛП ()» (а так само «СокрЛ ()» і «СокрП ()»):

СтрокаБезПробелов \u003d СокрЛП ( "Багато букв«) // функція поверне значення «Багато букв»

Якщо після перетворення числа в рядок вам потрібно прибрати нерозривні прогалини, скористайтеся наступною конструкцією:

СтрокаБезПробелов \u003d СтрЗаменіть (Рядок (99999), Сімволи.НПП, »») // поверне «99999»

Так само програмісти часто користуються нижче наведеної конструкцією, яка дозволяє видалити, або замінити на інший символ все прогалини текстової змінної:

СтрокаБезПробелов \u003d СтрЗаменіть ( «п р и в е т», »», »») // поверне «привіт»

Порівняння рядків між собою

Порівняти терміни можна звичайним знаком рівності. При порівнянні враховується регістр.

«Здраствуйте» \u003d «здрастуйте» // поверне Брехня
«Здраствуйте» \u003d «Здрастуйте» // поверне Істина
«Здраствуйте» \u003d «До побачення» // поверне Брехня