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

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

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


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

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



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

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

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

    // Создаем ХранилищеЗначения из списка
    Хранилище = Новый ХранилищеЗначения(СписокЗначений);

    // Записываем в константу
    Константа = Константы.Список;
    Константа.Установить(Хранилище);
    Константа.Записать();
КонецПроцедуры

// Процедура получения списка ссылок из константы "Список"
Функция ПолучитьСписокИзКонстанты() Экспорт
    Константа = Константы.Список;
    Хранилище = Константа.Получить();

    Если Хранилище = Неопределено Тогда
        Возврат Новый СписокЗначений; // Пустой список
    КонецЕсли;

    // Получаем список из хранилища
    СписокЗначений = Хранилище.Получить();

    // Проверим тип, если вдруг не список - создадим пустой
    Если ТипЗнч(СписокЗначений)  Тип("СписокЗначений") Тогда
        Возврат Новый СписокЗначений;
    КонецЕсли;

    Возврат СписокЗначений;
КонецФункции

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

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

// Сохраняем
СохранитьСписокВДанныеКонстанты(СписокДокументов);

// Получаем
ПолученныйСписок = ПолучитьСписокИзКонстанты();

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

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



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