1С:Підприємство 8.x: Простий спосіб розпарсити стрічку виду "зміна=значення;зміна=значення;...зміна=значення;"

Стрічка виду зміна=значення;зміна=значення;...зміна=значення; в коді системи 1C:Підприємство 8.x найчастіше зустрічається у під'єднання до БД та інших зовнішніх з'єднаннях. Наприклад, системна функція СтрокаСоединенияИнформационнойБазы() повертає стрічку під'єднання до БД наступного виду: Srvr="192.168.0.1";Ref="test_dev";.

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

МногострочнаяСтрока = СтрЗаменить(СтрокаСРазделителями, ",",Символы.ПС);
Для кСчЦ = 1 по СтрЧислоСтрок(МногострочнаяСтрока) Цикл
...
КонецЦикла;

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

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

Srvr = "";
Ref = "";
Выполнить(СтрокаСоединенияИнформационнойБазы());
Сообщить("Srvr = "+ Srvr);
Сообщить("Ref = " + Ref);

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

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

Tags: 

Додати новий коментар

Фото Капча
Введіть символи з картинки.