ХранилищеЗначения

1. Xershi 1535 11.12.14 11:32 Сейчас в теме
ХранилищеЗначения (ValueStorage)
Методы:

Получить (Get)

Конструкторы:

На основании значения

Описание:

Предназначен для хранения значения в специальном формате. Он может быть записан в поля базы данных, имеющие соответствующий тип. Это позволяет сохранять в базе данных значения, тип которых не может быть выбран в качестве типа поля, например, Картинка.
Большинство объектов, которые имеют неизменяемое значение, а также универсальные коллекции, могут быть помещены в ХранилищеЗначения. К значению, хранящемуся в объекте, нельзя обращаться, его можно только извлечь из хранилища.
Описания типов объектов, которые могут быть помещены в ХранилищеЗначения, включают текст "Сериализуется".
Замечание! Не рекомендуется хранить в реквизитах типа ХранилищеЗначения ссылки на другие объекты базы данных.

Важно! В системе не поддерживается ссылочная целостность по объектам, сохраненным в базе данных в полях типа ХранилищеЗначения. Это означает, что при попытке удаления, например, элементов справочников система не контролирует ссылки на эти элементы, сохраненные в ХранилищеЗначения.

Как трактовать эту запись выделенную жирным?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. Allexe8.1 11.12.14 12:59 Сейчас в теме
(1) Xershi, можно трактовать буквально) Что, собственно, смущает?
5. Xershi 1535 11.12.14 13:01 Сейчас в теме
2. alex_4x 87 11.12.14 12:48 Сейчас в теме
Все просто. Поле Хранилища значения - это BLOB, и в отличии от ссылки на ТИП и ссылки на ВИД ТИПА, там просто бинарные данные.
Если ты превратишь например ссылку на объект в строку, например функцией ЗначениеВСтрокуВнутр(), никто не мешает в поле Хранилища значения, такую ссылку хранить, но движок 1С не сможет ни как идентифицировать, что же ты там хранишь, картинку, текст или преобразованную в текстовую форму ссылку. И когда будет производится поиск всех ссылок на объект функцией НайтиПоСсылкам(), то реквизиты где тип Хранилище Значения - вообще проверяться не будут.
3. Xershi 1535 11.12.14 12:55 Сейчас в теме
(2) alex_4x, ну это в принципе меня мало интересует. Вот если юзер поставит пометку удаления на элемент справочника, то когда элемент удалится из базы что будет с хранимым значением?
6. Allexe8.1 11.12.14 13:01 Сейчас в теме
(3) Xershi, со ссылкой в ХЗ - ничего не будет. При получении из ХЗ - у нее будет представление "Объект не найден..", но сама ссылка (идентификатор типа + идентификатор ссылки) - останется неизменной
7. Xershi 1535 11.12.14 13:14 Сейчас в теме
(6) Allexe8.1, идентификатор типа + идентификатор ссылки это что (не понял ничего)?
Вот сам объект с типом ХранилищеЗначения физически запись в таблице на скуле? Или как это выглядит?
8. Allexe8.1 11.12.14 17:10 Сейчас в теме
(7) Xershi, поле реквизита с хранилищем значения в СУБД имеет тип:
image
Этот тип представляет двоичные данные переменной длины, включающие от 0 до 2^31 – 1 (2 147 483 647) байт.

идентификатор типа + идентификатор ссылки

Ну, например
СсылкаНаОбъект = Справочник.Номенклатура.НайтиПоКоду("00000029004");
ЗначениеВСтрокуВнутр(СсылкаНаОбъект) = {"#",44a01d39-c2b6-4751-85e6-06fdc2f23043,93:b682485b39c6b2ee11e1fd9682ae5cd6}

Здесь "44a01d39-c2b6-4751-85e6-06fdc2f23043" - это идентификатор типа;
b682485b39c6b2ee11e1fd9682ae5cd6 - внутреннее значение идентификатора ссылки, то же самое что СсылкаНаОбъект.УникальныйИдентификатор()
9. Xershi 1535 12.12.14 08:55 Сейчас в теме
(8) Allexe8.1, я так понял ты хочешь сказать, что система 1С не может сама подобрать метод распознавания данных. И про это и говорится в справке.

Так при удалении элемента справочника Хранилище Дополнительной Информации двоичные данные, которые лежат в одном из реквизитов тоже удалятся корректно?
10. Allexe8.1 12.12.14 10:02 Сейчас в теме
(9) Xershi,
1) не совсем понял. Система не может запросом определить что хранится в ХЗ, и не может наложить на это поле отбор в запросе..
2) да, конечно, данные реквизита - удалятся вместе с объектом.
11. Xershi 1535 12.12.14 11:14 Сейчас в теме
(10) Allexe8.1,
1) Ну да, там же двоичные данные и платформа не может понять какой тип данных платформы там. В общем я разобрался.
2) Отлично!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот