База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как сохранить и получить список значений в константу «Список»? › RE: Как сохранить и получить список значений в константу «Список»?
23 октября 2025 в 18:00
#33864
Сергей, вот пример двух процедур для сохранения и получения списка значений (ссылок на типы документов) в константу «Список» типа ХранилищеЗначения.
1C
// Процедура сохранения списка ссылок в константу "Список"
Процедура СохранитьСписокВДанныеКонстанты(СписокЗначений)
// СписокЗначений - это СписокЗначений или Массив ссылок на типы документов
Если ТипЗнч(СписокЗначений) Тип("СписокЗначений") Тогда
// Если передан массив, преобразуем в СписокЗначений
НовыйСписок = Новый СписокЗначений;
Для Каждого Элемент Из СписокЗначений Цикл
НовыйСписок.Добавить(Элемент);
КонецЦикла;
СписокЗначений = НовыйСписок;
КонецЕсли;
// Создаем ХранилищеЗначения из списка
Хранилище = Новый ХранилищеЗначения(СписокЗначений);
// Записываем в константу
Константа = Константы.Список;
Константа.Установить(Хранилище);
Константа.Записать();
КонецПроцедуры
// Процедура получения списка ссылок из константы "Список"
Функция ПолучитьСписокИзКонстанты() Экспорт
Константа = Константы.Список;
Хранилище = Константа.Получить();
Если Хранилище = Неопределено Тогда
Возврат Новый СписокЗначений; // Пустой список
КонецЕсли;
// Получаем список из хранилища
СписокЗначений = Хранилище.Получить();
// Проверим тип, если вдруг не список - создадим пустой
Если ТипЗнч(СписокЗначений) Тип("СписокЗначений") Тогда
Возврат Новый СписокЗначений;
КонецЕсли;
Возврат СписокЗначений;
КонецФункции
Пример использования:
1C // Создаем список ссылок на типы документов СписокДокументов = Новый СписокЗначений; СписокДокументов.Добавить(Справочники.ВидыДокументов.Тип1); СписокДокументов.Добавить(Справочники.ВидыДокументов.Тип2); // Сохраняем СохранитьСписокВДанныеКонстанты(СписокДокументов); // Получаем ПолученныйСписок = ПолучитьСписокИзКонстанты();
Обратите внимание, что в константе хранится именно объект типа ХранилищеЗначения, внутри которого сериализован список значений. При записи константы вызывается метод `Записать()`, чтобы изменения сохранились.
Рекомендую посмотреть здесь: https://infostart.ru/public/22132/ (пример работы с ХранилищемЗначения в константах и справочниках).