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

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

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

        есть константа «Список» тип хранилищеЗначений
        напиши процедуры сохранения в нее списка значений(ссылки на типы документов) и получения списка значений из нее

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

          Сергей, вот пример двух процедур для сохранения и получения списка значений (ссылок на типы документов) в константу «Список» типа ХранилищеЗначения.

          1C
          // Процедура сохранения списка ссылок в константу "Список"
          Процедура СохранитьСписокВДанныеКонстанты(СписокЗначений)
              // СписокЗначений - это СписокЗначений или Массив ссылок на типы документов
              Если ТипЗнч(СписокЗначений)  Тип("СписокЗначений") Тогда
                  // Если передан массив, преобразуем в СписокЗначений
                  НовыйСписок = Новый СписокЗначений;
                  Для Каждого Элемент Из СписокЗначений Цикл
                      НовыйСписок.Добавить(Элемент);
                  КонецЦикла;
                  СписокЗначений = НовыйСписок;
              КонецЕсли;
          
              // Создаем ХранилищеЗначения из списка
              Хранилище = Новый ХранилищеЗначения(СписокЗначений);
          
              // Записываем в константу
              Константа = Константы.Список;
              Константа.Установить(Хранилище);
              Константа.Записать();
          КонецПроцедуры
          
          // Процедура получения списка ссылок из константы "Список"
          Функция ПолучитьСписокИзКонстанты() Экспорт
              Константа = Константы.Список;
              Хранилище = Константа.Получить();
          
              Если Хранилище = Неопределено Тогда
                  Возврат Новый СписокЗначений; // Пустой список
              КонецЕсли;
          
              // Получаем список из хранилища
              СписокЗначений = Хранилище.Получить();
          
              // Проверим тип, если вдруг не список - создадим пустой
              Если ТипЗнч(СписокЗначений)  Тип("СписокЗначений") Тогда
                  Возврат Новый СписокЗначений;
              КонецЕсли;
          
              Возврат СписокЗначений;
          КонецФункции
          

          Пример использования:

          1C
          // Создаем список ссылок на типы документов
          СписокДокументов = Новый СписокЗначений;
          СписокДокументов.Добавить(Справочники.ВидыДокументов.Тип1);
          СписокДокументов.Добавить(Справочники.ВидыДокументов.Тип2);
          
          // Сохраняем
          СохранитьСписокВДанныеКонстанты(СписокДокументов);
          
          // Получаем
          ПолученныйСписок = ПолучитьСписокИзКонстанты();
          

          Обратите внимание, что в константе хранится именно объект типа ХранилищеЗначения, внутри которого сериализован список значений. При записи константы вызывается метод `Записать()`, чтобы изменения сохранились.

          Рекомендую посмотреть здесь: https://infostart.ru/public/22132/ (пример работы с ХранилищемЗначения в константах и справочниках).

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