К статье
Практический материал

Администрирование · 11 мин

Как хранить картинки в 1С: способы и практические рекомендации

Способы хранения картинок в 1С: в базе, в томах на диске, в присоединенных файлах. Настройка, ограничения, типичные ошибки и проверка результата.

Картинки в 1С — это фотографии товаров, сканы документов, логотипы для печатных форм, изображения для описаний номенклатуры. От того, как организовано их хранение, зависят скорость работы базы, размер резервных копий и удобство обмена с сайтом или другими системами. Неправильный выбор на старте приводит к разросшейся базе, медленным запросам и проблемам с выгрузкой.

В типовых конфигурациях на базе Библиотеки стандартных подсистем (БСП) — «Управление торговлей», «ERP», «Комплексная автоматизация», «Бухгалтерия» — уже есть готовый механизм присоединенных файлов. Он поддерживает два основных режима: хранение файлов непосредственно в информационной базе и хранение в томах на диске. В самописных конфигурациях картинки часто хранят в реквизитах типа «ХранилищеЗначения», что имеет свои особенности.

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

Какие способы хранения картинок существуют в 1С

Технически изображение в 1С можно сохранить несколькими путями. Первый — реквизит объекта с типом «ХранилищеЗначения», в который помещают объект «Картинка» или двоичные данные файла. Так исторически хранили фото сотрудников и логотипы организаций. Способ простой, но у него есть ограничение: к одному объекту удобно привязать одну картинку, а не набор файлов.

Второй способ — подсистема «Работа с файлами» из БСП. К любому объекту (номенклатуре, документу, контрагенту) прикрепляются присоединенные файлы, которые хранятся либо в справочнике присоединенных файлов внутри базы, либо в томах на диске, а в базе остаются только ссылки и служебная информация. Именно этот механизм используется в типовых решениях для картинок товаров и сканов документов.

Третий вариант — внешнее хранилище: файлы лежат в сетевом каталоге или объектном хранилище, а в 1С записывается только путь или URL. Это разумно при интеграции с сайтом, но требует самостоятельно следить за целостностью ссылок.

Сравнение способов хранения

ХранилищеЗначения в реквизите

Подходит для одной картинки на объект (фото сотрудника). Ограничение: данные раздувают базу, нет удобного списка файлов.

Присоединенные файлы в базе

Подходит для небольшого объема изображений. Плюс — все в одной копии, минус — рост размера базы и бэкапов.

Присоединенные файлы в томах на диске

Оптимально при большом числе картинок. Минус — тома нужно включать в регламент резервного копирования отдельно.

Внешнее хранилище по ссылке

Подходит при обмене с сайтом. Ограничение — риск «битых» ссылок при перемещении файлов.

Хранение картинок внутри информационной базы

При хранении в базе двоичные данные изображения записываются в таблицы СУБД (в клиент-серверном варианте) или в файл 1Cv8.1CD (в файловом). Главное преимущество — целостность: резервная копия базы автоматически содержит все картинки, не нужно настраивать копирование дополнительных каталогов. Это удобно для небольших организаций, где изображений немного — сотни или единицы тысяч файлов.

Основной недостаток — рост размера базы. Каждая фотография товара весит от десятков килобайт до нескольких мегабайт, и при активном наполнении каталога база быстро увеличивается. Следствия: дольше выполняется резервное копирование и восстановление, медленнее работает обновление конфигурации, в файловом варианте возрастает риск замедления при большом размере файла базы.

Дополнительный нюанс клиент-серверного варианта: двоичные данные файлов обычно хранятся в отдельных таблицах, и типовые механизмы БСП умеют работать с ними корректно. Но при прямых запросах к базе (чего делать не рекомендуется) структура хранения может отличаться между версиями платформы.

Хранение картинок в томах на диске

Тома — это каталоги на диске сервера или общем сетевом ресурсе, куда 1С складывает файлы, а в базе сохраняет только относительный путь и служебные данные. Настройка выполняется в разделе администрирования: включается хранение файлов в томах, создается том с указанием полного пути к каталогу. После этого новые присоединенные файлы записываются на диск, а не в таблицы базы.

Преимущества очевидны: база остается компактной, бэкап делается быстро, а сами картинки доступны как обычные файлы — их можно просмотреть, скопировать или обработать внешними средствами. Томов может быть несколько, что позволяет распределять файлы по разным дискам и управлять заполнением.

Обратная сторона — необходимость дисциплины. Каталог томов должен быть включен в регламент резервного копирования, иначе при восстановлении базы из копии вы получите ссылки на несуществующие файлы. Также у пользователя, под которым работает сервер 1С или служба агента, должны быть права на запись в каталог томов; при файловом варианте — у всех пользователей, работающих с базой по сети.

Настройка томов: пошаговый порядок

Настройка выполняется под пользователем с правами администратора. Порядок действий одинаков для большинства типовых конфигураций на БСП, различается только расположение пункта меню.

Порядок настройки томов
  1. 1
    Создайте на диске каталог для файлов, например отдельный раздел на сервере, и проверьте права доступа для учетной записи сервера 1С.
  2. 2
    В конфигурации откройте настройки работы с файлами и включите вариант «Хранить файлы в томах на диске».
  3. 3
    Добавьте том: укажите имя и полный путь к каталогу. Для Linux-сервера путь задается в формате этой ОС.
  4. 4
    Проверьте заполнение полей пути — в типовых решениях есть кнопка проверки доступности тома.
  5. 5
    Прикрепите тестовую картинку к любому элементу номенклатуры и убедитесь, что файл появился в каталоге тома.

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

Программная работа с картинками

В собственных разработках для сохранения изображения в реквизит типа «ХранилищеЗначения» используется объект «Картинка» или двоичные данные. Для присоединенных файлов в конфигурациях на БСП есть программный интерфейс модуля «РаботаСФайлами»: файл добавляется к объекту-владельцу одним вызовом, без ручной работы со справочниками.

bsl
// Добавление картинки к номенклатуре (БСП)
ДвоичныеДанные = Новый ДвоичныеДанные("C:\Images\tovar01.jpg");
ПараметрыФайла = РаботаСФайлами.ПараметрыДобавленияФайла();
ПараметрыФайла.ВладелецФайлов = НоменклатураСсылка;
ПараметрыФайла.ИмяБезРасширения = "tovar01";
ПараметрыФайла.РасширениеБезТочки = "jpg";
ПрисоединенныйФайл = РаботаСФайлами.ДобавитьФайл(ПараметрыФайла, ПоместитьВоВременноеХранилище(ДвоичныеДанные));

Для получения изображения обратно — например, для выгрузки на сайт или вывода в отчет — используется функция получения двоичных данных присоединенного файла. Важно помнить: при хранении в томах программный интерфейс тот же самый, механизм сам определяет, откуда читать файл, поэтому код не зависит от выбранного способа хранения.

Картинки в печатных формах и на формах

Частая задача — вывести логотип организации или изображение товара в печатную форму. В табличном документе для этого используется область с рисунком, в которую программно подставляется объект «Картинка», полученный из хранилища значений или из присоединенного файла. Логотип организации в типовых конфигурациях обычно хранится в специальном реквизите справочника организаций.

На формах элементов изображение выводится через реквизит формы типа «Строка», содержащий навигационную ссылку на файл, либо через адрес во временном хранилище. В типовых карточках номенклатуры это уже реализовано: присоединенная картинка показывается автоматически, а при наличии нескольких файлов можно переключаться между ними.

Перед загрузкой фотографий товаров уменьшайте их разрешение до разумного — для карточки товара обычно достаточно 800–1200 пикселей по большей стороне. Исходники с фотоаппарата по 10–15 МБ заметно замедляют открытие карточек и обмен с сайтом.
ПЗ
Практическое замечание

Типичные ошибки и как их избежать

Большинство проблем с картинками в 1С связано не с платформой, а с организационными решениями: не тем способом хранения, отсутствием бэкапа томов или ручными операциями с файлами.

Типичные ошибки
01
Хранение тысяч фотографий внутри базы — итог: гигантский файл базы, долгие бэкапы и медленное обновление.
02
Резервное копирование только базы при хранении в томах — при восстановлении все картинки теряются, остаются битые ссылки.
03
Ручное переименование и перемещение файлов в каталоге тома — 1С перестает находить файлы по сохраненным путям.
04
Отсутствие прав на каталог томов у учетной записи сервера — ошибки при попытке прикрепить файл.
05
Загрузка фото в исходном разрешении — карточки товаров открываются медленно, обмен с сайтом занимает часы.

Как проверить, что все работает правильно

После настройки и при периодическом обслуживании полезно выполнять контрольные проверки: доступность томов, отсутствие «потерянных» файлов и разумный размер базы. В типовых конфигурациях есть служебные отчеты по присоединенным файлам, а проверку доступности тома можно запустить из формы настройки тома.

Контрольные точки

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

Новый прикрепленный файл
Норма

Файл появляется в каталоге тома и открывается из карточки объекта

Тревожный признак

Файл записался в базу, а не в том — проверьте настройку способа хранения

Резервная копия
Норма

Архивируются и база, и каталоги томов; тестовое восстановление проходит с картинками

Тревожный признак

Копируется только база — картинки при аварии будут потеряны

Открытие карточки товара
Норма

Изображение отображается быстро, без ошибок

Тревожный признак

Ошибка «файл не найден» — нарушена связь с томом или файл удален

Итог

Что важно запомнить

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

Частые вопросы

Можно ли перенести картинки из базы в тома без потерь?

Да. В конфигурациях на БСП для этого есть обработки переноса файлов в тома либо штатный механизм изменения способа хранения. Перед переносом сделайте полную резервную копию базы, выполняйте операцию в нерабочее время и после завершения проверьте несколько карточек с картинками вручную.

Что произойдет, если каталог тома станет недоступен?

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

Какой формат картинок лучше использовать для товаров?

Практичный выбор — JPEG для фотографий и PNG для изображений с прозрачностью или текстом. Формат влияет только на размер и качество: 1С хранит любые файлы, а для обмена с сайтом ориентируйтесь на требования используемого модуля интеграции.

Как вывести картинку товара в печатную форму счета или прайса?

В макете табличного документа добавьте рисунок, а в коде формирования печатной формы получите двоичные данные присоединенного файла через функции модуля «РаботаСФайлами» и присвойте объекту «Картинка» в области рисунка. Учитывайте, что у части позиций изображения может не быть — предусмотрите проверку.

Влияет ли способ хранения на обмен с сайтом?

Для штатного обмена с сайтом (например, по типовому протоколу CommerceML) изображения выгружаются как файлы независимо от того, лежат они в базе или в томах — механизм обмена читает их через единый программный интерфейс. Разница проявляется косвенно: при хранении в базе большой объем картинок замедляет формирование пакета выгрузки.

Можно ли хранить картинки в файловой базе на сетевом диске, а тома — на другом ресурсе?

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