ХранилищеЗначения (хранилище значений 1С) – это объект в языке 1С, который позволяет хранить в базе данных прочие значения, например картинки и файлы, структуры и таблицы значений.
Сначала мы создаем значение, например:
1 |
Знч = Новый ТаблицаЗначений(); |
Потом помещаем его в хранилище значений 1С:
1 |
Хранилище = Новый ХранилищеЗначения(Знч, Новый СжатиеДанных(9)); |
Сжатие данных в хранилище значений 1С с параметром «9» означает, что данные будут храниться в архивированном виде, с максимальной степенью сжатия.
Чтобы сохранить такое значение в базу данных, нужно создать объект конфигурации (справочник, документ и т.п.), у которого добавить реквизит с типом ХранилищеЗначения.
1 2 3 |
СправочникСсылка = Справочники.Хранилище.СоздатьЭлемент(); СправочникСсылка.ХранилищеЗначения = Хранилище; СправочникСсылка.Записать(); |
Кроме хранения таких значений в базе данных, с помощью хранилища значений 1С, мы также можем сохранить такое значение в файл, например:
1 2 3 4 5 6 |
Настройки = Новый Структура(); Настройки.Вставить("ПоУмолчанию", Истина); Настройки.Вставить("Наименование", "Наименование1"); Хранилище = Новый ХранилищеЗначения(Настройки, Новый СжатиеДанных(9)); ЗначениеВФайл("C:\", Хранилище); |
Пример – сохранение значения из файла
1 2 3 |
//Значение - картинка из файла Файл = Новый Картинка("C:\ФайлКартинки.jpg"); Хранилище = Новый ХранилищеЗначения(Файл, Новый СжатиеДанных(9)); |
1 2 3 |
//Значение - произвольный файл Файл = Новый ДвоичныеДанные("C:\ИсполняемыйФайл.exe"); Хранилище = Новый ХранилищеЗначения(Файл, Новый СжатиеДанных(9)); |
1 2 3 4 |
//Значение - текстовый файл Файл = Новый ЧтениеТекста("C:\ТекстовыйФайл.txt"); ТекстовыеДанные = Файл.Прочитать(); Хранилище = Новый ХранилищеЗначения(ТекстовыеДанные, Новый СжатиеДанных(9)); |
Значение, помещенное в хранилище значений 1С нельзя использовать, пока оно там находится. Чтобы работать с ним, его нужно «распаковать» обратно, например:
1 2 3 4 |
Знч = Хранилище.Получить(); Если Знч = Неопределено Тогда Сообщить("Ошибка получения значения из хранилища"); КонецЕсли; |