2

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

Преобразование структуры в строку оправдано в двух случаях:

  • для отображения пользователю содержимого структуры в читаемом виде;
  • для обмена данными с другими системами (не на платформе 1С:Предприятие);

Во всех остальных случаях лучше воспользоваться другими механизмами платформы и средствами встроенного языка.

Структура = Новый Структура;
Структура.Вставить("Код", 100);
Структура.Вставить("Наименование", "Стул деревянный");

//для отображения пользователю, нам понадобится переменная
Сообщение = Новый СообщениеПользователю;

//далее, простым перебором мы будем заполнять наше сообщение
Для каждого Элемент Из Структура Цикл
	//добавим разделитель после предыдущего значения
	Сообщение.Текст = Сообщение.Текст + ?(НЕ ПустаяСтрока(Сообщение.Текст), Символы.ПС, "");
	//добавим представление ключа и значения:
	Сообщение.Текст = Сообщение.Текст + Элемент.Ключ + " = " + Элемент.Значение;
КонецЦикла; 

//выведем наше сообщение пользователю
Сообщение.Сообщить();
//Результат:
//Код = 100
//Наименование = Стул деревянный

Как видите, довольно объемная задача. А если учесть, что в структуре могут содержаться вложенные структуры и коллекции, могут понадобиться дополнительные функции и рекурсивные вызовы.

А для чего Вы преобразуете структуру в строку? Поделитесь своим опытом в комментариях

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

  1. Как эффективно скопировать структуру?
  2. Как преобразовать строку в структуру?

Комментарии

  1. Вот в виде функции:
    Функция СтруктураВСтроку(Структура) Экспорт
    С = «»;

    //далее, простым перебором мы будем заполнять наше сообщение
    Для каждого Элемент Из Структура Цикл
    //добавим разделитель после предыдущего значения
    С = С + ?(НЕ ПустаяСтрока(С), Символы.ПС, «»);
    //добавим представление ключа и значения:
    С = С + Строка(Элемент.Ключ) + » = » + Строка(Элемент.Значение);
    КонецЦикла;

    Возврат С;
    КонецФункции

    • Можно и так. Но есть пара моментов:
      Явное преобразование к строке Строка(Элемент.Ключ) излишне, т.к. ключ структуры всегда строковый.
      Явное преобразование к строке Строка(Элемент.Значение) тоже излишне, т.к. слева идет строка и происходит неявное преобразование в любом случае.
      Еще немного доработать функцию и можно использовать для рекурсии))

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

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