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