База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как сохранить и восстановить СписокЗначений в 1С через строку? › RE: Как сохранить и восстановить СписокЗначений в 1С через строку?
Для сохранения объекта «СписокЗначений» в строку и последующего восстановления из строки в 1С обычно используют сериализацию в формат JSON или XML, либо стандартные методы сериализации встроенного языка.
### Вариант 1. Сериализация через JSON (рекомендуется для 1С 8.3 и выше)
1C
// Сохранение списка значений в строку
Функция СписокЗначенийВСтроку(СписокЗначений)
// Используем стандартный JSON-сериализатор
СтрокаJSON = ОбщегоНазначения.ПревратитьВJSON(СписокЗначений);
Возврат СтрокаJSON;
КонецФункции
// Восстановление списка значений из строки
Функция СтрокаВСписокЗначений(СтрокаJSON)
СписокЗначений = ОбщегоНазначения.ПревратитьИзJSON(СтрокаJSON);
Возврат СписокЗначений;
КонецФункции
Если в вашей конфигурации нет объекта `ОбщегоНазначения` с методами JSON, можно использовать стандартные методы:
1C
// Сериализация в XML
Функция СписокЗначенийВСтроку(СписокЗначений)
Поток = Новый ЗаписьXML;
СписокЗначений.ЗаписатьXML(Поток);
Возврат Поток.Закрыть();
КонецФункции
// Десериализация из XML
Функция СтрокаВСписокЗначений(СтрокаXML)
Поток = Новый ЧтениеXML(СтрокаXML);
СписокЗначений = Новый СписокЗначений;
СписокЗначений.ПрочитатьXML(Поток);
Возврат СписокЗначений;
КонецФункции
### Вариант 2. Сериализация через XML (универсальный)
1C
// Сохранение списка значений в строку
Функция СписокЗначенийВСтроку(СписокЗначений)
Поток = Новый ЗаписьXML;
СписокЗначений.ЗаписатьXML(Поток);
СтрокаXML = Поток.Закрыть();
Возврат СтрокаXML;
КонецФункции
// Восстановление списка значений из строки
Функция СтрокаВСписокЗначений(СтрокаXML)
Поток = Новый ЧтениеXML(СтрокаXML);
СписокЗначений = Новый СписокЗначений;
СписокЗначений.ПрочитатьXML(Поток);
Возврат СписокЗначений;
КонецФункции
### Пример использования:
1C
// Создаем список значений
Список = Новый СписокЗначений;
Список.Добавить("Первое");
Список.Добавить("Второе");
// Сохраняем в строку
Строка = СписокЗначенийВСтроку(Список);
// Восстанавливаем из строки
ВосстановленныйСписок = СтрокаВСписокЗначений(Строка);
// Проверяем
Для Каждого Элемент Из ВосстановленныйСписок Цикл
Сообщить(Элемент);
КонецЦикла;
—
Таким образом, для сохранения и восстановления списка значений удобно использовать методы `ЗаписатьXML` и `ПрочитатьXML`, которые позволяют сериализовать объект в строку и обратно без потери данных.
Рекомендую посмотреть здесь:
https://its.1c.ru/db/v83doc#bookmark:dev:TI000000113
https://kuharbogdan.com/programmiruem-v-1s/kak-rabotat-so-spiskom-znachenij-v-1s/