База знаний Одина – Одинэсника › Форумы › ODIN – Форум по 1С Предприятию › Как сохранить и восстановить СписокЗначений в 1С через строку? › RE: Как сохранить и восстановить СписокЗначений в 1С через строку?

Для сохранения объекта “СписокЗначений” в строку и последующего восстановления из строки в 1С обычно используют сериализацию в формат JSON или XML, либо стандартные методы сериализации встроенного языка.
### Вариант 1. Сериализация через JSON (рекомендуется для 1С 8.3 и выше)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
1C // Сохранение списка значений в строку Функция СписокЗначенийВСтроку(СписокЗначений) // Используем стандартный JSON-сериализатор СтрокаJSON = ОбщегоНазначения.ПревратитьВJSON(СписокЗначений); Возврат СтрокаJSON; КонецФункции // Восстановление списка значений из строки Функция СтрокаВСписокЗначений(СтрокаJSON) СписокЗначений = ОбщегоНазначения.ПревратитьИзJSON(СтрокаJSON); Возврат СписокЗначений; КонецФункции |
Если в вашей конфигурации нет объекта ОбщегоНазначения
с методами JSON, можно использовать стандартные методы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
1C // Сериализация в XML Функция СписокЗначенийВСтроку(СписокЗначений) Поток = Новый ЗаписьXML; СписокЗначений.ЗаписатьXML(Поток); Возврат Поток.Закрыть(); КонецФункции // Десериализация из XML Функция СтрокаВСписокЗначений(СтрокаXML) Поток = Новый ЧтениеXML(СтрокаXML); СписокЗначений = Новый СписокЗначений; СписокЗначений.ПрочитатьXML(Поток); Возврат СписокЗначений; КонецФункции |
### Вариант 2. Сериализация через XML (универсальный)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
1C // Сохранение списка значений в строку Функция СписокЗначенийВСтроку(СписокЗначений) Поток = Новый ЗаписьXML; СписокЗначений.ЗаписатьXML(Поток); СтрокаXML = Поток.Закрыть(); Возврат СтрокаXML; КонецФункции // Восстановление списка значений из строки Функция СтрокаВСписокЗначений(СтрокаXML) Поток = Новый ЧтениеXML(СтрокаXML); СписокЗначений = Новый СписокЗначений; СписокЗначений.ПрочитатьXML(Поток); Возврат СписокЗначений; КонецФункции |
### Пример использования:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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/