Настройка DAM (управление цифровыми активами) для 1С-Битрикс
Настраиваем DAM на базе медиабиблиотеки 1С-Битрикс. Стандартный модуль fileman — это простое файловое дерево без метаданных, полнотекстового поиска и прав на уровне файла. Результат: 30–40% дубликатов, поиск файла занимает 15 минут, контроль версий отсутствует. Наши инженеры с 5+ годами опыта решают проблему: добавляем иерархические теги, UF-поля, связываем файлы с товарами без дублирования, настраиваем версионирование. Типичный проект окупается за 3-4 месяца за счет сокращения дубликатов, экономя до $720–1k. на хранении.
Почему стандартной медиабиблиотеки недостаточно?
Таблица 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). В каждом элементе есть только поле KEYWORD (теги через запятую) и DESCRIPTION. Этого недостаточно для полноценного DAM. Отсутствуют иерархические теги, версионирование, права на файл и поиск по содержимому. Мы решаем эти задачи.
Как интегрировать DAM с каталогом товаров?
Главная задача — связать медиафайлы с продуктами так, чтобы одно изображение использовалось в нескольких товарах без дублирования файла. В Битрикс это решается через свойство инфоблока типа «Привязка к элементам медиабиблиотеки» (E:MEDIALIB). При изменении файла в медиабиблиотеке все товары автоматически получают обновлённую версию. Мы также настраиваем автоматическую привязку через агенты: при загрузке изображения в медиабиблиотеку создаётся товар или обновляется его визуал. Это сокращает время ручного связывания на 95%.
Какие UF-поля нужны для DAM?
Пользовательские свойства (UF) добавляются через интерфейс: Настройки → Пользователи → Пользовательские поля → Тип объекта MEDIALIB_ITEM. Типичный набор:
- UF_COPYRIGHT — правообладатель (строка)
- UF_LICENSE — тип лицензии (список)
- UF_EXPIRY_DATE — срок действия прав (дата)
- UF_USAGE_RIGHTS — области применения (множественный список)
- UF_PHOTOGRAPHER — автор (строка)
После добавления поля доступны через API CMedialibItem::GetList(). Для полнотекстового поиска по UF-полям подключаем модуль search и пишем агент индексации.
| UF-поле | Тип | Пример значения |
|---|---|---|
| UF_COPYRIGHT | строка | "Acme Inc." |
| UF_LICENSE | список | "royalty-free", "editorial" |
| UF_EXPIRY_DATE | дата | 2025-12-31 |
| UF_USAGE_RIGHTS | множественный | "web", "print", "social" |
| UF_PHOTOGRAPHER | строка | "John Doe" |
Сравнение: стандартная медиабиблиотека vs DAM (наша настройка)
| Характеристика | Стандартная медиабиблиотека | DAM после настройки |
|---|---|---|
| Метаданные | Только Name, Keywords, Description | Произвольные UF-поля (лицензия, автор, срок прав) |
| Поиск | По Name и Keywords | Полнотекстовый поиск по всем UF-полям через модуль search |
| Иерархия тегов | Отсутствует | Многоуровневые справочники (HL-блоки) с привязкой к элементам |
| Привязка к товарам | Нет автоматической | Через свойство инфоблока E:MEDIALIB, агенты синхронизации |
| Версионирование | Нет | На основе событий медиабиблиотеки |
| Права доступа | Только коллекциям | На уровне файла + кастомные группы |
| Время поиска файла | 5–15 минут | 1–2 секунды |
| Дубликаты | 30–40% | Менее 5% |
Поиск по медиабиблиотеке: кастомный запрос
Стандартный поиск работает только по 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. Мы настраиваем агент с периодической индексацией раз в 15 минут.
Загрузка через 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' => 'каталог, сезон', 'FIELDS' => [ 'UF_COPYRIGHT' => 'Acme Studio', 'UF_LICENSE' => 'royalty-free', ], ]); Типичные ошибки при настройке DAM
- Не индексировать UF-поля для поиска — пользователи не смогут находить файлы по лицензии или автору.
- Использовать одно свойство для разных типов медиа (фото, видео, документы) — лучше создавать отдельные UF-поля.
- Не настроить права доступа к коллекциям — конфиденциальные материалы станут доступны всем.
Процесс работы: от аудита до деплоя
- Аудит — анализируем текущую структуру медиабиблиотеки, файловое хранилище, количество дубликатов, метаданные. (1-2 дня)
- Проектирование — проектируем иерархию коллекций, определяем UF-поля, права доступа, схему связки с каталогом. (1 день)
- Реализация — создаём UF-поля, настраиваем поиск, версионирование, агенты, пишем кастомные компоненты для отображения. (3-5 дней)
- Тестирование — проверяем загрузку, поиск, привязку к товарам, права доступа, производительность. (1-2 дня)
- Деплой — выкатываем на боевой сервер, обучаем редакторов. Получаете полную документацию и исходный код.
Сроки — от 1 до 3 недель в зависимости от объёма. Оценим ваш проект за 1 день бесплатно. Свяжитесь с нами для консультации.
Что входит в настройку
- Аудит текущей структуры медиабиблиотеки и файлового хранилища
- Создание иерархии коллекций под нужды проекта
- Добавление UF-полей для расширенных метаданных
- Настройка связки медиабиблиотеки с инфоблоком каталога
- Реализация расширенного поиска по метаданным
- Настройка прав доступа к коллекциям по группам пользователей
- Версионирование через события (опционально)
- Интеграция с REST API для внешнего доступа
Гарантируем результат — функциональность, заявленную в ТЗ. Закажите настройку — получите DAM, сокращающий время поиска файлов в 3 раза и снижающий дубликаты до 5%. Подробнее о возможностях медиабиблиотеки читайте в официальной документации.







