Чаще других такая потребность возникает при обмене данными с системами учета, отличными от 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 и ниже, предлагаю самостоятельно реализовать алгоритм разбора промежуточного массива, используя функцию Найти(), как это сделано в примере выше.