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

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

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

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

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

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

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

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

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