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