Хранилище значений 1С

Также на эту тему:
Типы 1С и значения 1С
Типы 1С
Описание типов 1С

Дополнительные материалы:
Электронная книга "Язык 1С. Том 1"

ХранилищеЗначения (хранилище значений 1С) – это объект в языке 1С, который позволяет хранить в базе данных прочие значения, например картинки и файлы, структуры и таблицы значений.



Сначала мы создаем значение, например:
Знч = Новый ТаблицаЗначений();

Потом помещаем его в хранилище значений 1С:
Хранилище = Новый ХранилищеЗначения(Знч, Новый СжатиеДанных(9));

Сжатие данных в хранилище значений 1С с параметром «9» означает, что данные будут храниться в архивированном виде, с максимальной степенью сжатия.

Чтобы сохранить такое значение в базу данных, нужно создать объект конфигурации (справочник, документ и т.п.), у которого добавить реквизит с типом ХранилищеЗначения.
СправочникСсылка = Справочники.Хранилище.СоздатьЭлемент();
СправочникСсылка.ХранилищеЗначения = Хранилище;
СправочникСсылка.Записать();

Кроме хранения таких значений в базе данных, с помощью хранилища значений 1С, мы также можем сохранить такое значение в файл, например:
Настройки = Новый Структура();
Настройки.Вставить("ПоУмолчанию", Истина);
Настройки.Вставить("Наименование", "Наименование1");

Хранилище = Новый ХранилищеЗначения(Настройки, Новый СжатиеДанных(9));
ЗначениеВФайл("C:\", Хранилище);


Пример – сохранение значения из файла
//Значение - картинка из файла
Файл = Новый Картинка("C:\ФайлКартинки.jpg");
Хранилище = Новый ХранилищеЗначения(Файл, Новый СжатиеДанных(9));

//Значение - произвольный файл
Файл = Новый ДвоичныеДанные("C:\ИсполняемыйФайл.exe");
Хранилище = Новый ХранилищеЗначения(Файл, Новый СжатиеДанных(9));

//Значение - текстовый файл
Файл = Новый ЧтениеТекста("C:\ТекстовыйФайл.txt");
ТекстовыеДанные = Файл.Прочитать();
Хранилище = Новый ХранилищеЗначения(ТекстовыеДанные, Новый СжатиеДанных(9));

Значение, помещенное в хранилище значений 1С нельзя использовать, пока оно там находится. Чтобы работать с ним, его нужно «распаковать» обратно, например:
Знч = Хранилище.Получить();
Если Знч = Неопределено Тогда
Сообщить("Ошибка получения значения из хранилища");
КонецЕсли;




Проголосовать за этот пост:

1 Star2 Stars3 Stars4 Stars5 Stars (4 голосов, среднее: 5,00 из 5)
Loading ... Loading ...

Также на эту тему:
Типы 1С и значения 1С
Типы 1С
Описание типов 1С

Дополнительные материалы:
Электронная книга "Язык 1С. Том 1"

Один комментарий

Написать комментарий»
  1. Здравствуйте.

    При таком решении:
    СправочникСсылка = Справочники.Файлы.СоздатьЭлемент();
    СправочникСсылка.ТекстХранилище = Хранилище;
    СправочникСсылка.Записать();

    выдает ошибку:
    {Форма.Форма.Форма(104)}: Ошибка при вызове метода контекста (Записать)
    СправочникСсылка.Записать();
    по причине:
    Ошибка при выполнении обработчика — ‘ПередЗаписью’
    по причине:
    {Справочник.Файлы.МодульОбъекта(34)}: Не заполнен владелец в файле
    «».
    ВызватьИсключение ОписаниеОшибки;

    Подскажите, как это решить?

Добавить комментарий