Подготовить собственный состав хранения двух файловых полей

Учебные задачи

Добавляем два настоящих реквизита собственного учебного справочника в новый состав. Это проект настройки в памяти, не изменение работающего хранилища.

Где и как запускать

Полный серверный модуль собственной учебной конфигурации 8.5.1.1343. Нет применения настроек или удаления данных хранилища.

Подготовка

  1. Создайте отдельную пустую учебную конфигурацию на платформе 8.5.1.1343 с режимом совместимости НеИспользовать. Не используйте производственную базу и не изменяйте предоставленные выгрузки КА2/УТ/УНФ.

  2. Добавьте справочник УчебныеФайлы и три реквизита: Данные и Предпросмотр с типом ХранилищеЗначения, ИспользоватьВнешнееХранение с типом Булево. Обновите только свою учебную базу. Сами записи справочника создавать не нужно.

  3. Создайте серверный общий модуль УчебныеЗадачи, вставьте полный модуль одного урока и вызовите ВыполнитьПример() из своей серверной команды.

  4. Упражнения с Новый СоставХранимыхДанныхХранилищаДвоичныхДанных и параметрами подключения меняют только собственные объекты в памяти. Нет установки состава, записи менеджера, резервного копирования или физической очистки.

  5. Для диагностики настоящего хранилища нужен отдельно подготовленный администратором учебный сервер. Код различает отсутствие поддержки платформой и ошибку чтения состояния, не включает сервис автоматически.

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

Разбор по шагам

  1. Добавить принимает метаданные реквизита, ресурса или константы, содержащей ХранилищеЗначения. Не передаём туда весь справочник или строковый Артикул.

  2. Метаданные и Хранение элемента читаются отдельно. Первая настройка запрещает использование хранения для собственного поля Данные, вторая допускает его для Предпросмотр только в проекте состава.

  3. Количество и порядок известны, потому что состав создан самим уроком. Индекс второго элемента равен 1; Получить не вызывается у пустой коллекции.

  4. Найти может вернуть Неопределено. Проверяем результат до обращения к его свойствам.

  5. Нет УстановитьСоставХранимыхДанных или Записать. Новые правила не применяются к базе и не переносят двоичные данные.

Как проверить результат

  1. Семь контрольных Истина. Состав содержит только два подготовленных вами поля.

  2. После запуска записи справочника и конфигурация реального сервиса не изменились.

Ожидаемый результат

Получен осмысленный проект состава с двумя разными настройками хранения.

На что обратить внимание

  1. Длинный общий тип Метаданные в описании элемента не означает, что Добавить принимает любой объект конфигурации.

  2. Созданный состав не является подтверждением доступности сервера хранения.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.