Odin | База знаний 1С

Как сохранить и вос...
 

Как сохранить и восстановить СписокЗначений в 1С через строку?


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

как сохранить списокзначений 1с в строку и восстановить потом из строки



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

Для сохранения объекта "СписокЗначений" в строку и последующего восстановления из строки в 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/



   
ОтветитьЦитата