Що означає у рядку 1с. Нові функції роботи з рядками. Функція форматування СтрШаблон()

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

Складання рядків

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

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

Функція Підстроювання

ПІДСТРОКУ(<Строка>, <НачальнаяПозиция>, <Длина>)

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

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

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

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

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

ВИБРАТИ Контрагенти.Найменування ЯК Колонка1 З Довідник.Контрагенти ЯК Контрагенти ДЕ Контрагенти.Найменування = "Газпром"

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

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

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

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

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

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

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

Рядок

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

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

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

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

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

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

Лев, Правий, Середовище

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

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

СтрДліна

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

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

Знайти

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

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

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

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

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

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

ВРег, НРег, трег

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

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

СтрЗамінити

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

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

СтрЧислоРядок

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

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

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

СтрОтриматиРядок

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

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

СтрЧислоВходжень

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

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

Символ та КодСимволу

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

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

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

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

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

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

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

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

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

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

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

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

Лапки в рядку

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

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

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

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

Багаторядковий Текст = «Перший рядок» + Символи.ПС + «Другий рядок»

Як прибрати прогалини

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

РядокБезпробілів = СокрЛП("Багато букв") // функція поверне значення "Багато букв"

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

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

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

РядокБезпробілів = Стр Замінити («прийом», », »») // поверне «привіт»

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

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

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

До базових можливостей мови програмування зазвичай відносять роботу з числами та рядками. Зазвичай, ці можливості зашиті в код компілятора (або реалізовані «базові» класи мови програмування).

У 1С можливості роботи з рядками запрограмовані у самій платформі. Сьогодні ми розглянемо особливості роботи з рядками 1С у програмах вбудованою мовою 1С.

Значення рядка 1С

1. Почнемо з найпростішого. Створення змінної та надання їй рядкового константного значення виглядає в 1С так:

Змінна = "Привіт, мир!";

Якщо потрібно в константному рядковому значенні 1С вказати символ лапки, його потрібно завдоїти «»

Змінна = "Привіт, "світ"!";

2. Перенесення рядка 1С можна вказати одразу двома способами. Перший – із використанням символу |

Змінна = "Привіт,
| мир! ";

Другий – із використанням системного перерахування Символи. Воно дозволяє додати перенесення рядка 1С, так і інші недруковані символи, наприклад TAB.

Змінна = "Привіт" + Символи. ПС + "світ!";

3. Конфігурації в 1С можуть бути розроблені не тільки для однієї мови (російської, англійської чи іншої) - але одночасно для кількох мов. У цьому випадку мова, що використовується в даний час, вибирається в нижній частині вікна 1С.

Список мов знаходиться у вікні конфігурації у гілці Загальні/Мови. Кожна мова має короткий ідентифікатор, такий як ruабо eng.

Зрозуміло, що при програмуванні такої конфігурації рядка 1С теж можуть бути багатомовними. Для цього є можливість створити такий рядок 1С, вказавши через; варіанти щодо ідентифікатора мови:

Змінна = "ru=""Привіт, мир!"; en=""Hello, world! """;

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

// Правильно для двомовних конфігурацій
Повідомити(НСтр(Змінна));

Реквізит із типом рядка 1С

Реквізит – це поле довідника/документу 1С. Відрізняється від змінної у програмі мовою 1С тим, що з реквізиту точно вказується його тип (число, рядок 1С тощо.). Якщо Вам потрібно освіжити в пам'яті, що таке реквізит – подивіться урок, присвячений .

Якщо Ви вкажете тип реквізиту – рядок 1С, додатково необхідно вказати параметри.

Рядки 1С бувають необмеженої довжини (вказується як довжина = 0) та обмеженої довжини, із зазначенням точної кількості символів. Рядки 1С необмеженої довжини зберігаються в окремій таблиці SQL, тому їх використання є менш продуктивним, ніж обмеженою.

Саме тому використання рядків 1С необмеженої довжини має свої обмеження – не скрізь їх можна використовувати. Наприклад, не можна як номер документа, код довідника, вимірювання.

Робота з рядками 1С

Для роботи з рядками є кілька вбудованих функцій платформи 1С.

  • СокрЛП("Неймовірно, але факт!")
    Забирає з рядка 1С зайві прогалини. Також можна використовувати перетворення будь-яких типів до рядку 1С (наприклад, числа).
  • Змінна = "Вася" + СокрЛП ("плюс") + "Оля"; //буде "Вася плюс Оля"
    Приклад підсумовування кількох рядкових значень 1С. В результаті вийде один рядок 1С.
  • Змінна = Лев ( "Музика", 2); //буде "Му"
    Змінна = Середовище ( "Музика", 2, 2); //буде "зи"
    Змінна = Прав("Музика", 2); //буде "ка"
    Різні варіанти отримання підрядка з рядка 1С.
  • Змінна = Знайти ( "Музика", "Зи"); //буде 3
    Пошук підрядки у рядку 1С, починаючи із символу 1.
  • Змінна = СтрДліна ("Музика"); //буде 6
    Повертає кількість символів у рядку 1С.
  • Повідомити("Привіт") //у вікні повідомлень внизу вікна 1С
    Попередження ("Привіт") // діалогове вікно, що спливає.
    Стан("Привіт") //У рядку відображення стану внизу зліва
    .

Приведення об'єктів до рядка 1С

Як відомо, найпопулярніший формат для обміну структурованою інформацією в даний час – це XML. Навіть остання версія MS Office Word та Excel зберігають файли в цьому форматі (docx та xlsx відповідно, поміняйте розширення на zip, відкрийте в архіваторі).

Платформа 1С обмінюватись даними надає кілька варіантів, основний у тому числі – також XML.

1. Найпростіший метод - використання функції СокрЛП() або Рядок(). У тексті запиту можна використовувати функцію ПРЕДСТАВЛЕННЯ(). Результат їхньої дії той самий – вони генерують рядкове представлення будь-якого об'єкта 1С для користувача.

Для довідника за умовчанням це буде його найменування. Для документа – ім'я документа, номер та дата.

2. Будь-який об'єкт 1С (з обмеженнями) може бути перетворений на XML і назад. Процес перетворення називається серіалізація.

РядокВиглядXml = XMLРядок(Значення); //отримуємо XML зі значення 1С
Значення1С = XMLЗначення(Тип("ДовідникПосилання.Номенклатура"),РядокВидаXml); //отримуємо значення 1С з рядка XML, необхідно вказати тип 1С, який має бути отриманий

3. Існує власний спосіб платформи 1С перетворити на рядок будь-який об'єкт 1С. Він мігрував із версії 1С 7.7. Цей формат не розуміють інші програми, але розуміє інший 1С, що дозволяє легко використовувати його для обміну між базами 1С.

Рядок = Значення ВСрядку Внутр(Значення1С); //отримуємо рядок 1С значення 1С
ЗначенняФайл("C:\MyFile.txt", Значення1С); //інший варіант, отримуємо файл із збереженим рядком із значення 1С
Значення1С = ЗначенняІзрядуВнутрішньо(Рядок); //назад з рядка 1С
Значення1С = ЗначенняІзФайлу("C:\MyFile.txt"); //назад з файлу

Редагування рядків 1С на формі

Крім роботи з рядками 1С у програмі мовою 1С звичайно хотілося б, щоб користувач міг їх редагувати. Для цього є кілька можливостей:

1. Найпростіший спосіб – запросити введення рядка 1С на вимогу. Цей спосіб використовують при навчанні програмування 1С, у житті він застосовується набагато рідше (але застосовується!).

Змінна = "";
Рядок = ВвестиЗначення(Змінна, "Введіть ПІБ");

2. Для виведення реквізиту об'єкта 1С (довідника/документа) або реквізиту форми (див.) найчастіше використовують поле введення. Це найпоширеніший у 1С інструмент для роботи користувача з редагуванням полів.

3. Можливості поля введення можна розширити (див. властивості поля введення, правою кнопкою на ньому, докладніше):

  • Галочка Багаторядковий режим редагування
  • Галочка Розширене редагування (доступна, якщо встановлена ​​попередня галочка)
  • Галочка Режим пароля (див. ).

4. Якщо всіх можливостей поля введення Вам не вистачає, є вбудований редактор. Для додавання на форму потрібно в меню Форма/Вставити елемент керування додати Поле текстового документа. У його властивостях можна вказати режим роботи – властивість Розширення.

Поле текстового документа не можна безпосередньо зв'язати з даними. Необхідно в обробнику події Привідкритті() форми (див. ) прописати функцію:

ЕлементиФорми.ІмяЕлементуПолеТекстовогоДокумента.УстановитиТекст(ЗначенняРядок); //тут ЗначенняРядок - це текст отриманий, наприклад з реквізиту

А в обробника збереження – наприклад, у кнопці Зберегти – додати збереження:

ЗначенняРядок = ЕлементиФорми.ІмяЕлементуПолеТекстовогоДокумента.ОтриматиТекст(); //ЗначенняРядок тут - це реквізит, куди ми зберігаємо значення

5. У 1С версії 8.2.11 у керованих формах з'явилася нова можливість подання рядка 1С – поле Форматований документ.


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

  • До об'єкта 1С, форму якого ми робимо (довідник, документ, обробка тощо) – додайте реквізит із типом СховищеЗначення
  • У функції Причитанні на сервері () встановимо текст з реквізиту

    //Тут Реквізит - це доданий реквізит об'єкта 1С
    //тут ФорматованийДокумент – це ім'я поля на формі для редагування
    &На сервері

    ФорматованийДокумент = ПоточнийОб'єкт.Реквізит.Отримати();
    КінецьПроцедури

  • У функції ПередЗаписомНа Сервері() або по кнопці запишемо текст з поля

    &На сервері
    Процедура При читанні на сервері (Поточний об'єкт)
    ПоточнийОб'єкт.Реквізит = Новий СховищеЗначення(ФорматованийДокумент);
    КінецьПроцедури

ЧАСТИНА 1. МЕТОДИ (26).

1.1. Базові методи (10). Незалежні, збудовані на своїх простих алгоритмах.

Стр_Дополнить() (доповнення праворуч-ліворуч зазначеними символами).

Стр_Інверс () (інверсія - символи праворуч наліво).

Стр_Коди() (коди символів через ”,” та масив із кодами)

Стр_Символи() (рядок з кодів через ”,” або з масиву з кодами)

Стор. ЗамінитиСимволи() (заміна символів на інші).

Стр_ИзМассива() (рядок з масиву фрагментів через роздільник)

Стр_НайтиВх() (пошук підрядка (в т.ч праворуч) з указ. номером входження).

Стр_НайтиГр() (Пошук групи символів, що входять у вказаний набір символів)

Стр_НайтиЧисл() (Пошук числа, в т. ч. справа з вказаним номером входження)

Стр_Інтерпретувати() (в масив, згідно з встановленим синтаксисом)

1.2. Похідні методи (12). Власне, це застосування чотирьох узагальнених методів-алгоритмів (див. Частину 2)

Стр_Число() (з початку та з кінця рядка, не ”бояться” нецифрових символів.

Стр_Найти() (пошук підрядка (в т.ч без урахування регістру та праворуч) з указ. номером входження).

Стр_Заменить() (шукати (зокрема без урахування регістру і праворуч), і замінювати подстроки-разделители).

Стр_Кусок() (шматок рядка між зазначеними входженнями роздільника (ліворуч або праворуч)).

Стр_ЗаменитьКусок() (заміна у вихідному рядку ”шматка ” на вказаний рядок).

Стр_ВМассив() (між зазначеними входженнями роздільника (зокрема праворуч і регістру).

Стр_ПеренестиПоСлогам() (розбити на підрядки ”Жорстко”, з дефісом).

Стр_ПеренестиПоСловам() (розбити на підрядки "М'яко")

Стр_Розрізати() (“Розрізати” на підрядки вказаних довжин)

Стр_СокрЛ() (замінити лев. групу "скорочуваних" символів на "рядок заміни")

Стр_СокрП() (замінити прав. групу "скорочуваних" символів на "рядок заміни")

Стр_СокрС() (замінити посередині групи "скорочуваних" символів на "рядок заміни")

стр_Розширити (розширення до указ. Довжини за рахунок збільшення кільк. вказаних символів)

1.3. Деталізовані методи (3). "Препарування" рядка з перенесенням до таблиці з детальною інформацією.

Стр_вТаблВх() (у таблицю згідно з системою вкладених роздільників).

Стр_вТаблГр (у таблицю згідно з багаторівневим фільтром).

Стр_вТаблЧисел (у таблицю з числами та фрагментами між ними).

ЧАСТИНА 2. УЗАГАЛЬНІ МЕТОДИ-АЛГОРИМИ (3).

Стр_Входження() (методи ”Знайти” та ”Замінити”).

Стр_Фрагменты() (методи ”Кусок”,”ЗамінитиКусок,”ВМассив”,”в ТаблВх”).

Стр_Сокр () (методи "СокрЛ", "СокрП", "СокрС", "Розширити".

Стр_Розбити() (методи "ПеренестиПоСлогам","ПеренестиПоСловам","Розрізати").

ЧАСТИНА 3. УНІВЕРСАЛЬНА ФУНКЦІЯ.

Це свого роду умовний програмний інтерфейс, що дозволяє

застосовувати до рядка відразу кілька методів. Реалізований у вигляді

функції з сімома параметрами ("Демо" побудовано на цій функції):

Стр_(Методи, Підметоди, Вхід, Парам1, Парам2, Довжини_Номера_Позиції, ДопВихід)

Параметри:

- ”Методи” - кілька ”сумісних” та (або) один “монопольний” метод

(відносимові коди або назви, можна через ",")

- ”Підметоди” - кілька ”сумісних” та(або) “монопольний ” варіанти

"монопольного" методу (односимвольні коди чи назви);

- "Вхід" - Рядок, або Масив або Таблиця значень;

- "Парам1" - рядок пошуку, заміщення, роздільники, фільтри;

- "Парам2" - заміщаючий рядок або символи;

- "Довжини_Номери_Позиції" -Число, Числа через роздільник або масив з Числами;

- "ДопВихід" - Число або Рядок або Масив або Таблиця значень;

Імена та (або) односимвольні Коди методів-підметодів, а також числа в

(Довжини_Номери_Позиції) можуть бути в будь-якому регістрі та відокремлені

будь-яким із наступних роздільників: ”, :;”.

ЧАСТИНА 4. ДЕЯКІ ПРИКЛАДИ.

ЄЧислаВСрядку=(Стр_ЗнайтиЧисл(ВхРядок)<>НЕ визначено);

ЄЦифриВСрядку=(Стр_НайтиГр(ВхРядок,"+0123456789")>0);

ЄЛатиниця=(Стр_НайтиГр(ВхСтр, Стр_Інтерпретувати("lL"))>0);

ЄВказаніЗнаки=(Стр_НнайтіГр(ВхСтр, "+до рогЮ.0р9")>0);

ЄНеДрукарні = (Стр_НайтиГр(ВхСтр, Стр_Інтерпретувати("-l-L-р-Р-П-З-Ц"))>0);

ЧАСТИНА 5. ВИСНОВОК.

Де можливо, обходився одним проходом рядком. Другий прохід – зазвичай уже за фрагментами. Не користувався вбудованою функцією СтрЧіслоВходжень().

Використані вбудовані функції: Лев(),Прав()Серед(),СтрДліна()

- (позиціонування та отримання частини рядка -мають бути "швидкими").

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

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

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

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

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

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

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

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

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

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

буде рядок:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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