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

Справочники и Данные · 12 мин

Как вытащить картинки из 1С: практическое руководство

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

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

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

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

Определяем, где именно хранятся картинки

Прежде чем что-то выгружать, выясните механизм хранения — от этого зависит весь дальнейший путь. Откройте карточку номенклатуры с изображением и посмотрите, как оно выведено. Если картинка показывается в отдельной форме «Присоединённые файлы» или на вкладке с файлами — это стандартный механизм БСП, и файлы можно извлекать штатно.

Если изображение просто отображается в поле на форме без списка файлов, скорее всего оно лежит в реквизите типа «Хранилище значения». Проверить это можно через конфигуратор: найдите справочник и посмотрите состав реквизитов. Реквизит с типом «ХранилищеЗначения» и названием вроде «ФайлКартинки», «Изображение» или «ДанныеКартинки» подтвердит догадку.

Третий вариант — файлы хранятся в томах на диске, а в базе лежат только ссылки. Это видно в настройках: «Администрирование» → «Работа с файлами» → «Хранить файлы в томах на диске». В этом случае картинки физически уже лежат в файловой системе, и задача сводится к их корректному копированию с привязкой к номенклатуре.

Вкладка «Присоединённые файлы» в карточкеМеханизм БСП

Файлы извлекаются штатно через «Сохранить как» или обработкой

Картинка просто на форме, без списка файловХранилище значения в реквизите

Нужна обработка или запрос, читающий двоичные данные

Включена настройка «Тома хранения файлов»Файлы на диске

Проверьте папку тома — картинки уже доступны как файлы

Сохраняем одну картинку из карточки

Самый простой сценарий — нужно вытащить несколько изображений вручную. Откройте карточку номенклатуры, перейдите к списку присоединённых файлов (ссылка «Файлы» или «Изображения» в панели навигации). Выделите нужный файл и нажмите «Ещё» → «Сохранить как…» либо кнопку сохранения на панели. Укажите папку — файл запишется на диск с исходным именем и расширением.

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

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

Массовая выгрузка присоединённых файлов штатными средствами

В конфигурациях на БСП присоединённые файлы можно выгрузить пакетно. Откройте форму списка присоединённых файлов (через карточку владельца или общий список «Файлы» в разделе администрирования), выделите нужные строки с помощью Ctrl или Shift и используйте «Ещё» → «Сохранить как…». Платформа предложит выбрать каталог и сохранит все выделенные файлы разом.

Ограничение этого подхода — имена файлов. В базе они могут называться как угодно, включая дубли и неинформативные названия вроде «image1.jpg». После выгрузки привязку к номенклатуре придётся восстанавливать вручную, если имена не содержат артикул. Поэтому перед массовой выгрузкой проверьте, как называются файлы, и при необходимости сначала приведите имена к виду «артикул.jpg».

Порядок массового сохранения присоединённых файлов
  1. 1
    Откройте список присоединённых файлов нужного справочника
  2. 2
    Отберите строки отбором или выделите вручную через Ctrl/Shift
  3. 3
    Нажмите «Ещё» → «Сохранить как…» и укажите пустую папку
  4. 4
    Дождитесь окончания копирования и сверьте количество файлов с числом выделенных строк
  5. 5
    Проверьте несколько файлов случайной выборкой: открываются ли они и соответствуют ли товару

Копируем файлы напрямую из томов хранения

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

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

Работайте с томом только в режиме чтения и копируйте файлы, а не перемещайте их. Удаление или переименование файлов в томе приведёт к тому, что 1С перестанет открывать картинки в карточках, и восстановить структуру будет сложно.

Выгружаем картинки из хранилища значений обработкой

Когда изображения лежат в реквизите «Хранилище значения», штатных кнопок сохранения нет — нужна обработка на встроенном языке. Логика проста: обойти элементы справочника, получить значение реквизита методом Получить(), проверить, что это двоичные данные, и записать их в файл через Записать().

Пример минимального кода для обхода номенклатуры и сохранения картинок в каталог:

bsl
Каталог = "D:\Images\";
Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
    Данные = Выборка.ХранилищеКартинки.Получить();
    Если ТипЗнч(Данные) = Тип("ДвоичныеДанные") Тогда
        ИмяФайла = Каталог + Выборка.Артикул + ".jpg";
        Данные.Записать(ИмяФайла);
    КонецЕсли;
КонецЦикла;

Обратите внимание на три момента. Во-первых, имя реквизита в вашей конфигурации может отличаться — уточните его в конфигураторе. Во-вторых, расширение файла лучше брать из данных, а не задавать жёстко: если в базе лежат и JPG, и PNG, единое расширение испортит часть файлов. В-третьих, в имени файла недопустимы символы вроде «/», «\», «:» — артикулы нужно очищать от них перед записью, иначе получите ошибку.

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

Выгружаем картинки вместе с данными через обмен

Если конечная цель — перенести картинки на сайт, в другую 1С или в каталог, часто удобнее не извлекать файлы по одному, а использовать механизмы обмена. Типовая выгрузка товаров в CommerceML включает изображения: при формировании файла обмена картинки складываются в подкаталог import_files рядом с XML-файлом, а внутри XML прописывается связь товара с файлом.

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

Альтернатива — универсальный обмен данными в формате XML (EnterpriseData) или выгрузка через конвертацию данных, если перенос идёт между двумя базами 1С. В обоих случаях двоичные данные картинок переносятся вместе с объектами, и отдельное извлечение файлов не требуется.

Сравнение способов извлечения

Ручное сохранение из карточки

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

Пакетное «Сохранить как» из списка файлов

Десятки и сотни файлов без программирования; имена файлов могут быть неинформативными

Копирование из томов хранения

Быстро для больших объёмов; требуется таблица соответствия файлов и товаров

Обработка на встроенном языке

Полный контроль над именами и структурой; нужны права и минимальные навыки

Обмен CommerceML

Картинки сразу с привязкой к товарам для сайта; работает только в типовых конфигурациях

Проверяем результат и исправляем типичные проблемы

После выгрузки сверьте количество полученных файлов с количеством позиций, у которых есть изображения. Расхождение обычно означает одно из трёх: у части товаров картинки действительно нет, файлы с одинаковыми именами перезаписали друг друга, либо часть данных не является изображениями (в хранилище могли сохранить что угодно).

Проверьте случайную выборку файлов: откройте их в просмотрщике и убедитесь, что изображение соответствует товару, чей артикул указан в имени. Если файл не открывается, посмотрите его реальный формат — расширение могло быть назначено неверно. Признаки: JPG начинается с байтов FF D8, PNG — с сигнатуры «PNG», видимой в любом hex-просмотрщике.

Отдельная проблема — дубли имён. Если у двух товаров одинаковый артикул (что бывает при нестрогом учёте), второй файл перезапишет первый молча. Добавляйте в имя файла уникальный идентификатор, например код элемента справочника, чтобы исключить потери.

Типичные ошибки при выгрузке картинок
01
Жёстко заданное расширение .jpg для всех файлов — PNG и другие форматы оказываются испорчены для части программ
02
Использование артикула с символами «/» и «\» в имени файла — ошибка записи или создание неожиданных подпапок
03
Перемещение файлов из тома хранения вместо копирования — 1С теряет картинки в карточках
04
Игнорирование дублей имён — файлы молча перезаписывают друг друга, часть изображений теряется
05
Запуск массовой обработки в рабочее время на файловой базе — блокировки и зависания у пользователей
Контрольные точки

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

Количество файлов в целевой папке
Норма

Совпадает с числом позиций, имеющих изображения

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

Файлов меньше — ищите дубли имён или пустые реквизиты

Открытие случайных файлов
Норма

Изображение открывается и соответствует товару

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

Файл не открывается или показывает чужой товар

Размер файлов
Норма

Размеры в разумных пределах, отличаются между файлами

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

Много файлов нулевого размера — данные в реквизите пустые

Состояние базы после выгрузки
Норма

Картинки в карточках 1С открываются как раньше

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

Карточки потеряли изображения — затронуты тома или данные

FAQ

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

Да, если речь о ручном сохранении: для кнопки «Сохранить как» у присоединённого файла достаточно обычных прав пользователя на чтение номенклатуры. А вот запуск внешних обработок, доступ к томам хранения и консоли запросов требуют расширенных прав — тут без администратора не обойтись.

Почему после выгрузки часть файлов не открывается?

Чаще всего неверно назначено расширение: в хранилище значений формат не зафиксирован, и под одним реквизитом могут лежать JPG, PNG и BMP. Определите реальный формат по сигнатуре файла и переименуйте. Реже причина в том, что в реквизите сохранены не двоичные данные, а, например, строка с путём — тогда метод хранения нужно пересмотреть.

Как выгрузить картинки сразу с привязкой к артикулам?

Самый надёжный путь — обработка, которая формирует имя файла из артикула или кода номенклатуры, либо типовая выгрузка CommerceML, где связь товара и файла прописывается в XML. Простое копирование из томов такой привязки не даёт, её придётся восстанавливать отдельной таблицей соответствия.

Картинки хранятся в базе — она сильно раздута. Что делать?

Выгрузите изображения обработкой в файловую систему, затем переведите базу на хранение файлов в томах на диске и загрузите картинки обратно уже как присоединённые файлы с хранением в томах. Это стандартная практика снижения размера базы. Все операции выполняйте только после полной резервной копии.

Можно ли вытащить картинки из 1С:Розницы или УНФ так же?

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

Что делать, если в карточке картинка есть, а в списке присоединённых файлов пусто?

Значит, изображение хранится не как присоединённый файл, а в реквизите типа «Хранилище значения» либо подтягивается из связанного справочника (например, из карточки основного изображения). Уточните в конфигураторе, откуда форма берёт картинку, и выгружайте данные именно из этого источника.

Итог

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

Сначала определите способ хранения картинок: присоединённые файлы, хранилище значений или тома на диске. Единичные изображения сохраняйте вручную, массовые — пакетным сохранением, обработкой или обменом CommerceML. Имена файлов формируйте из артикула с очисткой недопустимых символов, из томов файлы только копируйте, а перед массовыми операциями делайте резервную копию.