Для подготовленных файловых реквизитов читаем два новых свойства метаданных 8.3.26+. Отличаем режим хранения от Булево-поля, управляющего записью.
Где и как запускать
Полный серверный модуль собственной учебной конфигурации 8.5.1.1343. Нет применения настроек или удаления данных хранилища.
Подготовка
Создайте отдельную пустую учебную конфигурацию на платформе 8.5.1.1343 с режимом совместимости НеИспользовать. Не используйте производственную базу и не изменяйте предоставленные выгрузки КА2/УТ/УНФ.
Добавьте справочник УчебныеФайлы и три реквизита: Данные и Предпросмотр с типом ХранилищеЗначения, ИспользоватьВнешнееХранение с типом Булево. Обновите только свою учебную базу. Сами записи справочника создавать не нужно.
Создайте серверный общий модуль УчебныеЗадачи, вставьте полный модуль одного урока и вызовите ВыполнитьПример() из своей серверной команды.
Упражнения с Новый СоставХранимыхДанныхХранилищаДвоичныхДанных и параметрами подключения меняют только собственные объекты в памяти. Нет установки состава, записи менеджера, резервного копирования или физической очистки.
Для диагностики настоящего хранилища нужен отдельно подготовленный администратором учебный сервер. Код различает отсутствие поддержки платформой и ошибку чтения состояния, не включает сервис автоматически.
Процедура ВыполнитьПример() Экспорт
Справочник = Метаданные.Справочники.Найти("УчебныеФайлы");
Если Справочник = Неопределено Тогда
ВызватьИсключение "Сначала подготовьте собственный учебный справочник УчебныеФайлы";
КонецЕсли;
Данные = Справочник.Реквизиты.Найти("Данные");
Предпросмотр = Справочник.Реквизиты.Найти("Предпросмотр");
Если Данные = Неопределено ИЛИ Предпросмотр = Неопределено Тогда
ВызватьИсключение "Нужны два собственных реквизита ХранилищеЗначения";
КонецЕсли;
Если НЕ Данные.Тип.СодержитТип(Тип("ХранилищеЗначения"))
ИЛИ НЕ Предпросмотр.Тип.СодержитТип(Тип("ХранилищеЗначения")) Тогда
ВызватьИсключение "Состав допускает данные типа ХранилищеЗначения, не произвольную строку";
КонецЕсли;
Режим = Данные.ИспользованиеХраненияВХранилищеДвоичныхДанных;
Сообщить("Использование хранения: " + Строка(Режим));
Если Режим = ИспользованиеХраненияВХранилищеДвоичныхДанных.Использовать Тогда
Сообщить("На уровне описания реквизита хранение используется; доступность сервиса проверяется отдельно");
ИначеЕсли Режим = ИспользованиеХраненияВХранилищеДвоичныхДанных.НеИспользовать Тогда
Сообщить("На уровне описания реквизита хранение не используется");
КонецЕсли;
Поле = Данные.ПолеИспользованияХраненияВХранилищеДвоичныхДанных;
Если Поле = Неопределено Тогда
Сообщить("Управляющее поле не назначено; значение Булево у несуществующей записи не читается");
Иначе
Сообщить("Управляющий реквизит: " + Поле.Имя);
Сообщить(Поле.Тип.СодержитТип(Тип("Булево")));
КонецЕсли;
УчебноеСодержимое = Новый ХранилищеЗначения("Книга: учебное содержимое только в памяти");
Сообщить(УчебноеСодержимое.Получить() = "Книга: учебное содержимое только в памяти");
Сообщить("Значение не присвоено объекту справочника и не записано в сервис");
КонецПроцедурыРазбор по шагам
Оба свойства метаданных доступны с 8.3.26. Справка указывает для них Чтение и запись, однако этот урок только читает существующую настройку.
ИспользованиеХраненияВХранилищеДвоичныхДанных — системный режим, а не текущее содержимое файла или право пользователя.
ПолеИспользованияХраненияВХранилищеДвоичныхДанных при назначении содержит метаданные Булево-реквизита. Сначала проверяем возможное отсутствие, затем его тип.
Чтобы исследовать непустую ветку, настройте это свойство в Конфигураторе только своего учебного Данные на собственный реквизит ИспользоватьВнешнееХранение, если оно доступно в вашей подготовленной схеме.
Новый ХранилищеЗначения создаёт своё содержимое в памяти. Это не подключение к отдельному сервису и не подтверждение физического размещения файла.
Как проверить результат
Показан реальный режим и наличие/отсутствие управляющего поля. При назначенном поле проверка Булево — Истина.
Контроль собственного содержимого — Истина. Не создано записей справочника и не изменена политика хранения.
Ожидаемый результат
Ученик различает настройку схемы, управляющий реквизит и реальное сохранение двоичных данных.
На что обратить внимание
Свойство метаданных поля не является значением Булево конкретного элемента справочника.
ХранилищеЗначения и отдельное хранилище двоичных данных — не один и тот же объект.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.