База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как сохранить и получить список значений в константу «Список»? › RE: Как сохранить и получить список значений в константу «Список»?
23 октября 2025 в 18:00
#33864
Участник
Сергей, вот пример двух процедур для сохранения и получения списка значений (ссылок на типы документов) в константу «Список» типа ХранилищеЗначения.
1С (Код)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
1C // Процедура сохранения списка ссылок в константу "Список" Процедура СохранитьСписокВДанныеКонстанты(СписокЗначений) // СписокЗначений - это СписокЗначений или Массив ссылок на типы документов Если ТипЗнч(СписокЗначений) Тип("СписокЗначений") Тогда // Если передан массив, преобразуем в СписокЗначений НовыйСписок = Новый СписокЗначений; Для Каждого Элемент Из СписокЗначений Цикл НовыйСписок.Добавить(Элемент); КонецЦикла; СписокЗначений = НовыйСписок; КонецЕсли; // Создаем ХранилищеЗначения из списка Хранилище = Новый ХранилищеЗначения(СписокЗначений); // Записываем в константу Константа = Константы.Список; Константа.Установить(Хранилище); Константа.Записать(); КонецПроцедуры // Процедура получения списка ссылок из константы "Список" Функция ПолучитьСписокИзКонстанты() Экспорт Константа = Константы.Список; Хранилище = Константа.Получить(); Если Хранилище = Неопределено Тогда Возврат Новый СписокЗначений; // Пустой список КонецЕсли; // Получаем список из хранилища СписокЗначений = Хранилище.Получить(); // Проверим тип, если вдруг не список - создадим пустой Если ТипЗнч(СписокЗначений) Тип("СписокЗначений") Тогда Возврат Новый СписокЗначений; КонецЕсли; Возврат СписокЗначений; КонецФункции |
Пример использования:
1С (Код)
|
1 2 3 4 5 6 7 8 9 10 11 |
1C // Создаем список ссылок на типы документов СписокДокументов = Новый СписокЗначений; СписокДокументов.Добавить(Справочники.ВидыДокументов.Тип1); СписокДокументов.Добавить(Справочники.ВидыДокументов.Тип2); // Сохраняем СохранитьСписокВДанныеКонстанты(СписокДокументов); // Получаем ПолученныйСписок = ПолучитьСписокИзКонстанты(); |
Обратите внимание, что в константе хранится именно объект типа ХранилищеЗначения, внутри которого сериализован список значений. При записи константы вызывается метод Записать(), чтобы изменения сохранились.
Рекомендую посмотреть здесь: https://infostart.ru/public/22132/ (пример работы с ХранилищемЗначения в константах и справочниках).