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

Если вы когда-нибудь сталкивались с ошибками при загрузке изображений, медленной работой базы из-за большого количества фото или не могли найти, где именно в хранятся прикреплённые картинки — эта статья поможет разобраться. Мы детально рассмотрим форматы поддерживаемых изображений, способы их хранения (внутри базы или во внешних файлах), типичные ошибки и оптимизацию работы с графикой. Отдельное внимание уделим различиям между 1С 7.7, 8.2 и 8.3, а также интеграции с внешними системами (например, загрузка фото из Excel или с сайта).

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

1. Зачем нужны фотографии в 1С: основные сценарии использования

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

  • 📦 Товары и номенклатура: изображения для каталогов, интернет-магазинов, печатных прайс-листов. Например, в 1С:УТ 11 фото товара может автоматически подгружаться в заказ клиента.
  • 👤 Сотрудники и контакты: фотографии в справочнике Физические лица или Сотрудники для пропускной системы или внутренних документов.
  • 📄 Сканы документов: копии паспортов, договоров, накладных, прикреплённые к карточке контрагента или документу (например, к Поступлению товаров).
  • 🏭 Оборудование и активы: фото техники, мебели или недвижимости в 1С:Бухгалтерия для инвентаризации.
  • 🛒 Маркетинг и продажи: баннеры, логотипы, схемы — например, в 1С:Розница для оформления чеков или витрин.

В некоторых конфигурациях (например, 1С:ERP) фото могут быть частью бизнес-логики. Например, при сканировании штрихкода система автоматически подставляет изображение товара из справочника в документ Отгрузка. Или в 1С:ЗУП фотография сотрудника используется для генерации пропуска.

Важно понимать, что фото в 1С — это не просто "картинка в базе", а объект с собственными свойствами и методами. Например, к изображению можно применить метод ПолучитьДвоичныеДанные(), чтобы экспортировать его в файл, или ИзменитьРазмер(), чтобы подогнать под нужный формат.

📊 Для чего вы чаще всего используете фото в 1С?
Для товаров в каталоге
Для сканов документов
Для фотографий сотрудников
Для маркетинговых материалов
Другое

2. Форматы изображений, поддерживаемые 1С: что можно загружать, а что нет

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

Формат Поддержка в 1С 8.3 Поддержка в 1С 7.7 Особенности
JPEG (JPG) ✅ Да ✅ Да Рекомендуемый формат для фото товаров (баланс качества и размера).
PNG ✅ Да ❌ Нет Поддерживает прозрачность, но файлы крупнее JPEG.
BMP ✅ Да ✅ Да Несжатый формат — занимает много места, не рекомендуется.
GIF ✅ Да (статичные) ❌ Нет Анимация не поддерживается, только первый кадр.
TIFF ✅ Да ✅ Да Используется для сканов документов (многостраничные файлы не поддерживаются).
WEBP ❌ Нет ❌ Нет Современный формат, но 1С его не распознаёт.

Критическое ограничение: 1С не поддерживает векторные форматы (SVG, EPS) и анимацию (APNG, GIF-анимация). Если загрузить такой файл, система либо выдаст ошибку, либо сохранит только статичное изображение (первый кадр).

Рекомендации по выбору формата:

  • 📸 Для фото товаров: JPEG (качество 80-90%, размер до 500 КБ).
  • 📄 Для сканов документов: TIFF (если нужно высокое качество) или PNG (если нужен небольшой размер).
  • 🖼️ Для логотипов и иконок: PNG (прозрачность).
⚠️ Внимание: В 1С 7.7 при загрузке PNG или GIF система автоматически конвертирует их в BMP, что увеличивает размер файла в 5-10 раз. Если база хранится в файловом варианте, это может привести к её быстрому "раздуванию".

3. Где хранятся фото в 1С: внутри базы или во внешних файлах?

В 1С:Предприятие 8.3 изображения могут храниться двумя способами:

  1. Внутри базы данных — в двоичном виде (в таблице _1SJourn для SQL-варианта или в файле 1Cv8.1CD для файлового).
  2. Во внешних файлах — по ссылке (путь хранится в базе, а само изображение — на диске или в облаке).

Выбор способа хранения зависит от конфигурации и настроек администратора. Например:

  • 📁 В 1С:УТ 11 фото товаров по умолчанию хранятся внутри базы, но можно настроить внешнее хранение через обработку.
  • 🖥️ В 1С:Документооборот сканы документов часто хранятся во внешних файлах (на сервере или в SEAFILE).
  • ☁️ В облачных версиях (например, 1С:Фреш) фото всегда хранятся внутри базы, так как доступ к файловой системе ограничен.

Чтобы узнать, где именно хранится фото в вашей базе:

  1. Откройте справочник с изображением (например, Номенклатура).
  2. Нажмите правой кнопкой на фото → Свойства (или Просмотр).
  3. Если в свойствах указан путь типа \\server\photos\goods\123.jpg — хранение внешнее.
  4. Если пути нет — фото хранится в базе.
⚠️ Внимание: При переносе базы (например, с файлового варианта на SQL) фото, хранящиеся внутри базы, мигрируют автоматически. А вот внешние файлы нужно переносить вручную — иначе ссылки станут битыми.

☑️ Проверка хранения фото в 1С

Выполнено: 0 / 4

4. Как загрузить фото в 1С: пошаговые инструкции для пользователей

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

4.1. Загрузка через интерфейс (для пользователей)

На примере 1С:Управление торговлей 11:

  1. Откройте справочник Номенклатура и выберите нужный товар.
  2. В карточке товара найдите поле Фотография (или вкладку Изображения).
  3. Нажмите на кнопку Добавить (или значок плюса) → Загрузить из файла.
  4. Выберите файл на компьютере (поддерживаются форматы из раздела 2).
  5. Сохраните изменения (Ctrl+S или кнопка Записать).

В некоторых конфигурациях (например, 1С:ERP) можно загружать несколько фото для одного товара. Для этого:

  • 📷 Перейдите на вкладку Изображения.
  • 🔄 Нажмите Добавить группу, если нужно сгруппировать фото (например, "Вид спереди", "Вид сзади").
  • 🖼️ Загрузите несколько файлов одновременно (в некоторых версиях поддерживается drag-and-drop).

Ограничения при загрузке:

  • 🚫 Максимальный размер файла: обычно 5-10 МБ (зависит от настроек сервера).
  • 🚫 Разрешение: рекомендуется не более 2000×2000 px (иначе база будет тормозить).
  • 🚫 Количество фото на один объект: в 1С:УТ 11 по умолчанию — до 10, но можно увеличить через конфигуратор.
Что делать, если 1С не даёт загрузить фото?

Если при загрузке фото появляется ошибка "Неверный формат файла" или "Файл слишком большой", проверьте:

1. Формат файла (должен быть JPEG/PNG/BMP).

2. Размер файла (уменьшите через Paint или Photoshop).

3. Права доступа к папке с временными файлами 1С (обычно это %TEMP%).

4. Настройки конфигурации: возможно, администратор ограничил типы файлов.

4.2. Программная загрузка (для разработчиков)

Чтобы загрузить фото через код, используйте следующий пример на встроенном языке :


// Загрузка фото в справочник "Номенклатура"

Процедура ЗагрузитьФото(СсылкаНаОбъект, ПутьКФайлу)

// Создаём объект "ХранилищеЗначения"

Хранилище = Новый ХранилищеЗначения(Новый ДвоичныеДанные(ПутьКФайлу));

// Присваиваем фото объекту

СсылкаНаОбъект.Фотография = Хранилище;

// Сохраняем

СсылкаНаОбъект.Записать();

КонецПроцедуры

// Пример вызова:

Товар = Справочники.Номенклатура.НайтиПоНаименованию("Смартфон X");

ЗагрузитьФото(Товар, "C:\Photos\phone.jpg");

Для работы с несколькими изображениями (например, в 1С:ERP) используйте коллекцию Изображения:

// Добавляем несколько фото к товару

Товар = Справочники.Номенклатура.НайтиПоНаименованию("Ноутбук Y");

МассивФото = Новый Массив;

МассивФото.Добавить(Новый ХранилищеЗначения(Новый ДвоичныеДанные("C:\Photos\laptop1.jpg")));

МассивФото.Добавить(Новый ХранилищеЗначения(Новый ДвоичныеДанные("C:\Photos\laptop2.jpg")));

Товар.Изображения = МассивФото;

Товар.Записать();

⚠️ Внимание: При программной загрузке всегда проверяйте размер файла. Если изображение весит более 10 МБ, его загрузка может заблокироваться настройками сервера 1С или привести к ошибке Недостаточно памяти.

5. Типичные ошибки при работе с фото в 1С и как их исправить

Даже опытные пользователи сталкиваются с проблемами при работе с изображениями в 1С. Вот самые распространённые ошибки и способы их решения:

Ошибка Причина Решение
Неверный формат файла Пытаетесь загрузить WEBP, SVG или анимированный GIF. Конвертируйте фото в JPEG/PNG/BMP через Paint или онлайн-конвертер.
Файл слишком большой Размер фото превышает лимит (обычно 5-10 МБ). Уменьшите размер через Photoshop или MS Paint (сохраните как JPEG с качеством 80%).
Не удалось сохранить изменения Не хватает прав на запись в базу или папку с фото. Обратитесь к администратору 1С или проверьте права на папку (если хранение внешнее).
Фото не отображается в печатной форме В макете документа не прописан вывод изображения. Откройте макет в конфигураторе и добавьте поле Фотография.
Ошибка чтения двоичных данных Файл повреждён или не является изображением. Попробуйте открыть фото в стандартном просмотрщике. Если не открывается — пересохраните.

Если фото отображается в карточке, но не выводится в печатной форме, проверьте:

  1. Настроен ли вывод изображения в макете документа (в конфигураторе: Объект → Макеты → ПечатнаяФорма).
  2. Не скрыто ли поле Фотография условием (например, Если НЕ ПустаяСтрока(Фотография) Тогда).
  3. Не превышает ли размер фото допустимые границы для печати (в некоторых конфигурациях лимит — 1 МБ).

Для массовой обработки фото (например, уменьшения размера всех изображений в справочнике) можно использовать обработку:

// Обработка для массового уменьшения фото в справочнике "Номенклатура"

Процедура УменьшитьВсеФото()

Выборка = Справочники.Номенклатура.Выбрать();

Пока Выборка.Следующий() Цикл

Если НЕ ПустаяСтрока(Выборка.Фотография) Тогда

ДвоичныеДанные = Выборка.Фотография.Получить();

Если ДвоичныеДанные.Размер() > 500000 Тогда // Если больше 500 КБ

Изображение = Новый Картинка(ДвоичныеДанные);

Изображение.ИзменитьРазмер(800, 600); // Уменьшаем до 800x600

Выборка.Фотография = Новый ХранилищеЗначения(Изображение.ПолучитьДвоичныеДанные());

Выборка.Записать();

КонецЕсли;

КонецЕсли;

КонецЦикла;

КонецПроцедуры

💡

Если фото в 1С отображаются размыто, проверьте настройки DPI в оригинальном файле. Иногда 1С неправильно масштабирует изображения с высоким разрешением (300+ DPI). Решение: откройте фото в Paint, измените размер на 96 DPI и сохраните заново.

6. Оптимизация работы с фото: как ускорить базу и уменьшить её размер

Фотографии могут значительно увеличивать размер базы и замедлять её работу, особенно в файловом варианте. Вот способы оптимизации:

6.1. Настройка внешнего хранения

Если фото хранятся внутри базы, перенесите их во внешние файлы:

  1. Создайте на сервере папку (например, \\server\1C_Photos).
  2. Настройте права доступа (полный доступ для пользователя 1Сv8).
  3. В конфигураторе найдите обработку ПереносФотоВоВнешниеФайлы (или создайте свою).
  4. Запустите обработку — она скопирует все фото в папку и обновит ссылки в базе.

Пример кода для переноса:

Процедура ПеренестиФотоВоВнешниеФайлы()

Каталог = "\\server\1C_Photos\";

Выборка = Справочники.Номенклатура.Выбрать();

Пока Выборка.Следующий() Цикл

Если НЕ ПустаяСтрока(Выборка.Фотография) Тогда

ДвоичныеДанные = Выборка.Фотография.Получить();

ИмяФайла = Каталог + СокрЛП(Выборка.Наименование) + ".jpg";

ДвоичныеДанные.Записать(ИмяФайла);

Выборка.Фотография = Новый ХранилищеЗначения(ИмяФайла); // Теперь хранится ссылка

Выборка.Записать();

КонецЕсли;

КонецЦикла;

КонецПроцедуры

6.2. Сжатие и уменьшение размера фото

Рекомендации по оптимизации изображений:

  • 📉 Размер файла: не более 500 КБ для фото товаров, 1 МБ для сканов.
  • 📏 Разрешение: для веб и печати достаточно 800×600 px (для сканов — 1200×1600 px).
  • 🎨 Формат: JPEG для фото (качество 80%), PNG для логотипов.
  • 🔍 Инструменты: RIOT (Radical Image Optimization Tool), TinyPNG, или даже стандартный MS Paint.

Для автоматического сжатия при загрузке можно использовать обработку:

Процедура ПриЗаписи(Объект)

Если НЕ ПустаяСтрока(Объект.Фотография) Тогда

ДвоичныеДанные = Объект.Фотография.Получить();

Если ДвоичныеДанные.Размер() > 500000 Тогда // Если больше 500 КБ

Изображение = Новый Картинка(ДвоичныеДанные);

Изображение.ИзменитьРазмер(800, 600, Истина); // Сжать с сохранением пропорций

Изображение.Сжать(80); // Качество 80%

Объект.Фотография = Новый ХранилищеЗначения(Изображение.ПолучитьДвоичныеДанные());

КонецЕсли;

КонецЕсли;

КонецПроцедуры

6.3. Очистка неиспользуемых фото

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

  1. В конфигураторе откройте Администрирование → Поддержка и обслуживание → Тестирование и исправление.
  2. Выберите Поиск и удаление неиспользуемых данных.
  3. Отметьте галочку Хранилище значений (фото, файлы).
  4. Запустите проверку и удалите ненужные данные.
⚠️ Внимание: Перед очисткой обязательно сделайте резервную копию базы. Удаление неиспользуемых данных — необратимая операция.
💡

Оптимальный подход: храните фото во внешних файлах (на сервере или в облаке), а в базе держите только ссылки. Это уменьшает размер базы и ускоряет её работу.

7. Интеграция с внешними системами: загрузка фото из Excel, с сайта, по API

Часто фото в 1С нужно загружать не вручную, а автоматически — например, из Excel, с сайта поставщика или через API. Рассмотрим основные сценарии.

7.1. Загрузка фото из Excel

Если у вас есть таблица Excel с ссылками на фото (например, URL или пути к файлам), можно автоматизировать загрузку:

  1. Создайте обработку с таблицей, куда импортируйте данные из Excel.
  2. Используйте HTTPСоединение для скачивания фото по URL или ДвоичныеДанные для локальных файлов.
  3. Привяжите фото к нужным объектам в 1С.

Пример кода для загрузки по URL:

Процедура ЗагрузитьФотоПоURL(СсылкаНаОбъект, URL)

HTTP = Новый HTTPСоединение();

ДвоичныеДанные = HTTP.Получить(URL);

Если ДвоичныеДанные.Размер() > 0 Тогда

СсылкаНаОбъект.Фотография = Новый ХранилищеЗначения(ДвоичныеДанные);

СсылкаНаОбъект.Записать();

Иначе

Сообщить("Не удалось загрузить фото по адресу: " + URL);

КонецЕсли;

КонецПроцедуры

// Пример вызова:

Товар = Справочники.Номенклатура.НайтиПоНаименованию("Монитор Samsung");

ЗагрузитьФотоПоURL(Товар, "https://example.com/photos/monitor.jpg");

7.2. Загрузка фото с сайта (парсинг)

Для автоматизации загрузки фото с сайта поставщика можно использовать HTTP-запросы и регулярные выражения (или XPath для HTML-парсинга). Пример:

Процедура СкачатьФотоССайта(Артикул, URLСтраницы)

HTTP = Новый HTTPСоединение();

HTML = HTTP.Получить(URLСтраницы);

// Ищем URL фото по артикулу (пример для простого HTML)

Регулярка = Новый РегулярноеВыражение("<img[^>]+src=""([""']?)([^""'>]+)\1", РежимПоиска.Многострочный);

Совпадения = Регулярка.Найти(HTML);

Пока Совпадения.НайтиСледующее() Цикл

URLФото = Совпадения.ПолучитьПодстроку(2);

Если СтрНайти(URLФото, Артикул) > 0 Тогда

Товар = Справочники.Номенклатура.НайтиПоАртикулу(Артикул);

Если НЕ Товар = Неопределено Тогда

ЗагрузитьФотоПоURL(Товар, URLФото);

КонецЕсли;

КонецЕсли;

КонецЦикла;

КонецПроцедуры

⚠️ Внимание: Парсинг сайтов может нарушать их пользовательское соглашение. Перед автоматизацией проверьте разрешение на скачивание контента или используйте официальное API поставщика.

7.3. Обмен фото через API (REST, JSON)

Если ваша 1С интегрирована с внешней системой (например, 1С-Битрикс, MoySklad или Wildeberries), фото можно обменивать через API. Пример загрузки фото из JSON:

Процедура ЗагрузитьФотоИзJSON(JSONСтрока)

Данные = JSON.Прочитать(JSONСтрока);

Для Каждого Товар Из Данные.Товары Цикл

Товар1С = Справочники.Номенклатура.НайтиПоАртикулу(Товар.Артикул);

Если НЕ Товар1С = Неопределено Тогда

// Предполагаем, что фото закодировано в Base64

ДвоичныеДанные = Base64СтрокаВДвоичныеДанные(Товар.ФотоBase64);

Товар1С.Фотография = Новый ХранилищеЗначения(ДвоичныеДанные);

Товар1С.Записать();

КонецЕсли;

КонецЦикла;

КонецПроцедуры

// Вспомогательная функция для декодирования Base64

Функция Base64СтрокаВДвоичныеДанные(СтрокаBase64)

Возврат Новый ДвоичныеДанные(Base64Строка(СтрокаBase64));

КонецФункции

Для отправки фото во внешнюю систему