Настройка DAM (управление цифровыми активами) для 1С-Битрикс
DAM — это централизованное хранилище медиафайлов с метаданными, тегами, правами доступа и версионированием. В Битрикс роль DAM выполняет модуль Медиабиблиотека (fileman), но в базовой конфигурации он работает как простое файловое дерево без структурированных метаданных и поиска по содержимому.
Архитектура модуля Медиабиблиотека
Файлы хранятся в таблице b_file — это центральный реестр всех файлов в системе. Поля: ID, MODULE_ID, HEIGHT, WIDTH, FILE_SIZE, CONTENT_TYPE, SUBDIR, FILE_NAME, ORIGINAL_NAME, DESCRIPTION, HANDLER_ID.
Медиабиблиотека добавляет поверх этого структуру папок через b_medialib_collection и связку файлов с коллекциями через b_medialib_item. Каждый элемент (b_medialib_item) содержит поля KEYWORD (теги через запятую) и DESCRIPTION.
Для полноценного DAM недостаёт: иерархических тегов, связи с продуктами каталога, истории версий, прав на уровне файла.
Расширение метаданных
Пользовательские свойства медиафайлов добавляются через пользовательские типы в b_uts_medialib_item. Таблица создаётся автоматически при добавлении UF-полей через интерфейс:
Настройки → Пользователи → Пользовательские поля → Тип объекта: MEDIALIB_ITEM
Типичный набор полей для DAM:
-
UF_COPYRIGHT— правообладатель (строка) -
UF_LICENSE— тип лицензии (список) -
UF_EXPIRY_DATE— срок действия прав (дата) -
UF_USAGE_RIGHTS— области применения (множественный список) -
UF_PHOTOGRAPHER— автор (строка)
После добавления полей они доступны в интерфейсе медиабиблиотеки и через API CMedialibItem::GetList().
Связка DAM с каталогом
Главная задача DAM в интернет-магазине — связать медиафайлы с товарами так, чтобы одно изображение использовалось в нескольких местах без дублирования файла. В Битрикс это решается через свойство инфоблока типа «Привязка к элементам медиабиблиотеки».
Создаётся свойство в инфоблоке каталога с типом E:MEDIALIB — это привязка к b_medialib_item.ID. При изменении файла в медиабиблиотеке все товары, использующие его, автоматически получают обновлённую версию.
Поиск по медиабиблиотеке
Стандартный поиск по b_medialib_item работает только по NAME и KEYWORD. Для поиска по UF-полям нужен кастомный запрос:
$items = CMedialibItem::GetList([
'order' => ['ID' => 'DESC'],
'filter' => [
'KEYWORD' => 'product-photo',
'UF_LICENSE' => 'royalty-free',
],
'arSelectFields' => ['ID', 'NAME', 'FILE_ID', 'UF_COPYRIGHT'],
]);
Для полнотекстового поиска по метаданным подключается модуль search — в методе CSearch::Index() индексируются поля UF.
Загрузка через API
Программная загрузка файла в медиабиблиотеку с метаданными:
CModule::IncludeModule('fileman');
$fileId = CFile::SaveFile([
'name' => 'product-main.jpg',
'type' => 'image/jpeg',
'tmp_name' => '/tmp/upload.jpg',
'MODULE_ID' => 'fileman',
], 'medialib');
$itemId = CMedialibItem::Add([
'COLLECTION_ID' => $collectionId,
'FILE_ID' => $fileId,
'NAME' => 'Фото товара',
'KEYWORD' => 'каталог, сезон-2024',
'FIELDS' => [
'UF_COPYRIGHT' => 'Acme Studio',
'UF_LICENSE' => 'royalty-free',
],
]);
Что входит в настройку
- Аудит текущей структуры медиабиблиотеки и файлового хранилища
- Создание иерархии коллекций под нужды проекта
- Добавление UF-полей для расширенных метаданных
- Настройка связки медиабиблиотеки с инфоблоком каталога
- Реализация расширенного поиска по метаданным
- Настройка прав доступа к коллекциям по группам пользователей







