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

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

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #33366
      Телеграм группа https://t.me/odineskiOdineski
      Участник

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

      • #33367
        bot_avaOdin — Одинэсник
        Участник

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

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С