0

Как преобразовать строку в структуру?

Чаще других такая потребность возникает при обмене данными с системами учета, отличными от 1С:Предприятие, либо с устаревшей версией 1С:Предприятие 7.7

У нас есть текст вида:

Код = 100, Наименование = Стул деревянный, Цена = 1100.50, Количество = 1

Необходимо сформировать из него структуру. Наличие разделителя в строке (в нашем случае запятая) облегчает задачу: мы можем разделить строку на подстроки. Если Вы работаете на платформе 1С:Предприятие 8.3.6 и выше, можно воспользоваться функцией СтрРазделить(), которая вернет готовый массив, содержащий подстроки:

мПодстроки = СтрРазделить(ИсходнаяСтрока, ", ");

В остальных случаях придется раздельно получать строку за строкой, определяя положение символа разделителя функцией Найти():

мПодстроки = Новый Массив;
//определяем позицию первого разделителя
позРазделителя = Найти(ИсходнаяСтрока, ", ");
Пока позРазделителя > 0 Цикл
	//добавляем первую подстроку
	мПодстроки.Добавить(Лев(ИсходнаяСтрока, позРазделителя - 1));
	//обрезаем исходную строку до места окончания разделителя
	ИсходнаяСтрока = Сред(ИсходнаяСтрока, позРазделителя + 2);
	//обновляем позицию разделителя
	позРазделителя = Найти(ИсходнаяСтрока, ",");
КонецЦикла;
//оставшуюся строку тоже добавляем в массив
мПодстроки.Добавить(ИсходнаяСтрока);

В обоих случаях на выходе получается массив, содержащий наши подстроки:

Код = 100
Наименование = Стул деревянный
Цена = 1100.50
Количество = 1

Теперь остается разобрать каждый элемент массива на пары Ключ и Значение и добавить в структуру. Снова воспользуемся методом СтрРазделить():

ВыходнаяСтруктура = Новый Структура;
Для каждого Подстрока Из мПодстроки Цикл
	мКлючИЗначение = СтрРазделить(Подстрока, " = ");
	ВыходнаяСтруктура.Вставить(мКлючИЗначение[0], мКлючИЗначение[1]);
КонецЦикла;

Для тех, кто работает на платформе 1С:Предприятие 8.3.5 и ниже, предлагаю самостоятельно реализовать алгоритм разбора промежуточного массива, используя функцию Найти(), как это сделано в примере выше.

Читайте также:

  1. Как преобразовать строку в структуру?
  2. Ошибка «Задано неправильное имя атрибута структуры»

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *