Справочники и Данные · 10 мин
Как выгрузить картинки из 1С: пошаговая инструкция
Практические способы выгрузить картинки из 1С: через форму элемента, массовую обработку, запрос и код. Особенности хранения изображений, типичные ошибки и проверка результата.
Картинки в 1С чаще всего встречаются в справочнике «Номенклатура», в карточках сотрудников и в присоединённых файлах документов. Задача выгрузить их возникает при переезде на новую базу, наполнении интернет-магазина, подготовке каталога для менеджеров или передаче ассортимента партнёру. Способ выгрузки зависит от того, как именно хранятся изображения в вашей конфигурации.
В типовых конфигурациях («Управление торговлей», «ERP», «Комплексная автоматизация», «Розница») картинки обычно хранятся как присоединённые файлы в справочнике «Номенклатура присоединённые файлы» либо в специализированном хранилище изображений. В старых и самописных конфигурациях картинка может лежать прямо в реквизите типа «Хранилище значения» внутри самого элемента справочника. От этого и зависит, что проще: штатная обработка, выгрузка через «Сохранить как» или программный код.
Ниже разобраны рабочие сценарии: от разового сохранения одной картинки до массовой выгрузки тысяч файлов с сохранением связи «номенклатура — файл». Все действия выполняются штатными средствами без сторонних программ, а для массовых задач приведён готовый фрагмент кода.
Определите, где хранятся картинки в вашей базе
Перед выгрузкой нужно понять механизм хранения, иначе можно выгрузить «пустышку» или вообще не найти файлы. Откройте карточку товара, где точно есть изображение, и посмотрите, как оно отображается: в отдельной вкладке «Файлы», в поле картинки на форме или в списке «Изображения».
В типовых конфигурациях на БСП (библиотека стандартных подсистем) присоединённые файлы хранятся либо в информационной базе, либо в томах на диске — это задаётся в настройках «Файлы и вложения». Если включено хранение в томах, файлы физически лежат в сетевой папке, и их можно скопировать напрямую, минуя 1С. Если хранение в базе — потребуется выгрузка через платформу.
Проверьте настройку хранения: в базе или в томах на диске
Потребуется код или обработка для извлечения
Можно копировать файлы напрямую из сетевого каталога
Выгрузка одной или нескольких картинок вручную
Для разовой задачи не нужны ни обработки, ни код. Откройте карточку номенклатуры, перейдите к присоединённым файлам, выделите нужную картинку и нажмите «Сохранить как» (кнопка с дискетой или пункт контекстного меню). Укажите папку на диске — файл сохранится в исходном формате и качестве.
Если картинка отображается прямо на форме (без списка файлов), попробуйте правый клик по изображению — во многих конфигурациях доступно «Сохранить картинку». Если пункт неактивен, значит изображение лежит в реквизите-хранилище, и потребуется программный способ из следующего раздела.
Ручной способ разумен до 20–30 файлов. Дальше трудозатраты растут линейно, а риск пропустить или продублировать файл становится ощутимым — переходите к массовой выгрузке.
- 1Откройте карточку номенклатуры и перейдите в список присоединённых файлов
- 2Выделите нужный файл и нажмите «Сохранить как»
- 3Укажите папку и проверьте, что файл открылся просмотрщиком изображений
Массовая выгрузка присоединённых файлов штатными средствами
В типовых конфигурациях список присоединённых файлов поддерживает множественное выделение: откройте форму списка файлов по всей номенклатуре (через «Все функции» → справочник «Номенклатура присоединённые файлы»), отберите нужные записи отбором по владельцу и выделите их. Команда «Сохранить как» сохранит все выделенные файлы в указанную папку.
Минус этого способа — имена файлов будут такими, как их загрузили пользователи: «IMG_4521.jpg», «фото (2).png» и тому подобное. Для каталога или интернет-магазина обычно нужны системные имена вида «артикул.jpg». Здесь помогает либо последующее пакетное переименование по таблице соответствия, либо программная выгрузка.
Если файлы хранятся в томах на диске, задача упрощается: откройте папку тома, скопируйте содержимое и по таблице соответствия (выгруженной из 1С запросом: владелец файла — имя файла) переименуйте файлы пакетно, например через PowerShell или Total Commander.
Программная выгрузка через встроенный язык 1С
Когда нужен контроль над именами файлов и структурой папок, используют код. Смысл простой: запросом выбираются присоединённые файлы (или элементы с реквизитом-картинкой), из хранилища извлекаются двоичные данные и записываются на диск. Код выполняют через внешнюю обработку или консоль кода на толстом клиенте.
Типовой фрагмент для присоединённых файлов БСП использует функцию работы с файлами, которая возвращает двоичные данные по ссылке на файл. Для реквизита типа «Хранилище значения» данные извлекают методом Получить(), а затем записывают через объект «Картинка» или напрямую как двоичные данные.
Запрос = Новый Запрос("ВЫБРАТЬ Ссылка, ВладелецФайла.Артикул КАК Артикул, Расширение ИЗ Справочник.НоменклатураПрисоединенныеФайлы");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Данные = РаботаСФайлами.ДвоичныеДанныеФайла(Выборка.Ссылка);
Если Данные <> Неопределено Тогда
Данные.Записать("D:\Картинки\" + СокрЛП(Выборка.Артикул) + "." + Выборка.Расширение);
КонецЕсли;
КонецЦикла;Имя функции получения двоичных данных может отличаться в зависимости от версии БСП в вашей конфигурации — сверьтесь с составом общих модулей. Если конфигурация самописная и картинка лежит в реквизите «ДанныеКартинки» типа «Хранилище значения», логика такая: Картинка = Элемент.ДанныеКартинки.Получить(); Картинка.Записать(ИмяФайла); — при условии, что в хранилище лежит именно объект «Картинка», а не двоичные данные.
Выгрузка через универсальные обработки и конвертацию данных
Если цель — перенести картинки в другую базу 1С, а не на диск, подход другой. Используйте «Универсальный обмен данными в формате XML» (обработка с диска ИТС или из поставки конфигурации): выгружается справочник номенклатуры вместе со связанными присоединёнными файлами. В правилах обмена нужно убедиться, что выгрузка присоединённых файлов включена — по умолчанию она часто отключена ради скорости.
Для переноса между разнородными конфигурациями (например, из «Управления торговлей 10.3» в «УТ 11») применяют «Конвертацию данных» с настройкой правил под реквизиты-хранилища. Это задача уровня внедренца: ошибка в правилах приведёт к потере картинок при переносе, поэтому тестовый прогон на копии обязателен.
Сравнение способов выгрузки
Подходит до 20–30 файлов; имена и структуру не контролируете
Быстро и без кода, но имена файлов останутся исходными
Полный контроль имён и папок; требует прав и навыков или помощи специалиста
Для переноса между базами 1С; избыточен для выгрузки на диск
Проверка результата и типичные ошибки
После выгрузки сверьте количество файлов в папке с количеством записей в выборке — расхождение означает, что часть картинок не извлеклась. Частая причина: у части элементов картинка не заполнена, либо в хранилище лежит не объект «Картинка», а двоичные данные, и метод Записать() отработал иначе.
Откройте выборочно десяток файлов просмотрщиком: битый файл нулевого размера или не открывающееся изображение говорят о проблеме с извлечением данных. Также проверьте соответствие «артикул — картинка»: если имена формировались из артикулов, убедитесь, что артикулы в базе уникальны, иначе файлы перезаписали друг друга.
Как проверить результат
Совпадает с числом записей в выборке
Файлов меньше — часть картинок не извлеклась
Все файлы больше нуля байт и открываются
Есть файлы нулевого размера или нечитаемые
Имя файла однозначно указывает на товар
Дубли имён, невозможно понять, чья картинка
Ограничения и когда привлекать специалиста
Массовая выгрузка требует прав: нужен доступ к справочнику присоединённых файлов и, для кода, — право запуска внешних обработок. В файловых базах код выполняется без ограничений, в клиент-серверных могут действовать профили безопасности, запрещающие запись на диск сервера.
Объёмные выгрузки (десятки тысяч файлов) лучше запускать порциями с отбором по группам номенклатуры — так проще контролировать процесс и не блокировать работу базы надолго. Если картинки хранятся в нестандартном виде (внешние компоненты, интеграция с CMS, ссылки на облако вместо файлов), самостоятельный разбор механизма может занять неоправданно много времени — это граница, где разумно привлечь специалиста по 1С.
Что важно запомнить
Сначала определите способ хранения картинок, затем выбирайте метод: вручную для единичных файлов, массовое сохранение или код для больших объёмов. Обязательно проверяйте количество, читаемость файлов и уникальность имён, а код запускайте только после резервной копии.
Частые вопросы
Можно ли выгрузить картинки из 1С без прав администратора?
Ручное сохранение через «Сохранить как» доступно при обычных правах на чтение номенклатуры. Массовая выгрузка кодом требует права запуска внешних обработок — обычно это право администратора или разработчика.
Почему выгруженный файл не открывается?
Чаще всего неверно указано расширение или в хранилище лежали двоичные данные, а не объект «Картинка». Проверьте реальное расширение исходного файла в карточке присоединённого файла и повторите выгрузку с правильным расширением.
Как выгрузить картинки вместе с таблицей соответствия товарам?
Выгрузите запросом таблицу «ссылка на файл — код/артикул/наименование номенклатуры» в Excel одновременно с выгрузкой самих файлов. По этой таблице можно переименовать файлы или загрузить их в интернет-магазин.
Картинки хранятся в томах на диске — нужна ли выгрузка через 1С?
Нет. Файлы уже лежат в сетевой папке в обычном виде. Скопируйте их напрямую и выгрузите из 1С только таблицу соответствия «файл — товар», чтобы восстановить связь.
Как перенести картинки в другую базу 1С?
Используйте универсальный обмен данными XML с включённой выгрузкой присоединённых файлов или конвертацию данных для разнородных конфигураций. Обязательно сделайте тестовый перенос на копии и сверьте количество перенесённых изображений.
Выгружаются ли картинки при стандартном обмене с сайтом?
Да, типовой обмен с сайтом (CommerceML) включает изображения товаров в пакет выгрузки. Если картинки на сайт не приходят, проверьте настройки отбора в узле обмена и наличие изображений в карточках товаров.