В системе 1С:Предприятие фотографии — это не просто картинки, а полноценные объекты базы данных, которые интегрируются в документы, справочники и отчёты. Они используются для визуализации товаров, сотрудников, оборудования, сканов документов и даже как часть бизнес-логики (например, для идентификации номенклатуры по изображению). Однако работа с фото в 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С — это не просто "картинка в базе", а объект с собственными свойствами и методами. Например, к изображению можно применить метод ПолучитьДвоичныеДанные(), чтобы экспортировать его в файл, или ИзменитьРазмер(), чтобы подогнать под нужный формат.
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 изображения могут храниться двумя способами:
- Внутри базы данных — в двоичном виде (в таблице
_1SJournдля SQL-варианта или в файле1Cv8.1CDдля файлового). - Во внешних файлах — по ссылке (путь хранится в базе, а само изображение — на диске или в облаке).
Выбор способа хранения зависит от конфигурации и настроек администратора. Например:
- 📁 В 1С:УТ 11 фото товаров по умолчанию хранятся внутри базы, но можно настроить внешнее хранение через обработку.
- 🖥️ В 1С:Документооборот сканы документов часто хранятся во внешних файлах (на сервере или в SEAFILE).
- ☁️ В облачных версиях (например, 1С:Фреш) фото всегда хранятся внутри базы, так как доступ к файловой системе ограничен.
Чтобы узнать, где именно хранится фото в вашей базе:
- Откройте справочник с изображением (например,
Номенклатура). - Нажмите правой кнопкой на фото →
Свойства(илиПросмотр). - Если в свойствах указан путь типа
\\server\photos\goods\123.jpg— хранение внешнее. - Если пути нет — фото хранится в базе.
⚠️ Внимание: При переносе базы (например, с файлового варианта на SQL) фото, хранящиеся внутри базы, мигрируют автоматически. А вот внешние файлы нужно переносить вручную — иначе ссылки станут битыми.
☑️ Проверка хранения фото в 1С
4. Как загрузить фото в 1С: пошаговые инструкции для пользователей
Процесс загрузки изображений зависит от конфигурации и версии платформы. Рассмотрим два самых распространённых сценария: через интерфейс пользователя и программно (для разработчиков).
4.1. Загрузка через интерфейс (для пользователей)
На примере 1С:Управление торговлей 11:
- Откройте справочник
Номенклатураи выберите нужный товар. - В карточке товара найдите поле
Фотография(или вкладкуИзображения). - Нажмите на кнопку
Добавить(или значок плюса) →Загрузить из файла. - Выберите файл на компьютере (поддерживаются форматы из раздела 2).
- Сохраните изменения (
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. Программная загрузка (для разработчиков)
Чтобы загрузить фото через код, используйте следующий пример на встроенном языке 1С:
// Загрузка фото в справочник "Номенклатура"
Процедура ЗагрузитьФото(СсылкаНаОбъект, ПутьКФайлу)
// Создаём объект "ХранилищеЗначения"
Хранилище = Новый ХранилищеЗначения(Новый ДвоичныеДанные(ПутьКФайлу));
// Присваиваем фото объекту
СсылкаНаОбъект.Фотография = Хранилище;
// Сохраняем
СсылкаНаОбъект.Записать();
КонецПроцедуры
// Пример вызова:
Товар = Справочники.Номенклатура.НайтиПоНаименованию("Смартфон 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 МБ).
Для массовой обработки фото (например, уменьшения размера всех изображений в справочнике) можно использовать обработку:
// Обработка для массового уменьшения фото в справочнике "Номенклатура"
Процедура УменьшитьВсеФото()
Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
Если НЕ ПустаяСтрока(Выборка.Фотография) Тогда
ДвоичныеДанные = Выборка.Фотография.Получить();
Если ДвоичныеДанные.Размер() > 500000 Тогда // Если больше 500 КБ
Изображение = Новый Картинка(ДвоичныеДанные);
Изображение.ИзменитьРазмер(800, 600); // Уменьшаем до 800x600
Выборка.Фотография = Новый ХранилищеЗначения(Изображение.ПолучитьДвоичныеДанные());
Выборка.Записать();
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Если фото в 1С отображаются размыто, проверьте настройки DPI в оригинальном файле. Иногда 1С неправильно масштабирует изображения с высоким разрешением (300+ DPI). Решение: откройте фото в Paint, измените размер на 96 DPI и сохраните заново.
6. Оптимизация работы с фото: как ускорить базу и уменьшить её размер
Фотографии могут значительно увеличивать размер базы и замедлять её работу, особенно в файловом варианте. Вот способы оптимизации:
6.1. Настройка внешнего хранения
Если фото хранятся внутри базы, перенесите их во внешние файлы:
- Создайте на сервере папку (например,
\\server\1C_Photos). - Настройте права доступа (полный доступ для пользователя
1Сv8). - В конфигураторе найдите обработку
ПереносФотоВоВнешниеФайлы(или создайте свою). - Запустите обработку — она скопирует все фото в папку и обновит ссылки в базе.
Пример кода для переноса:
Процедура ПеренестиФотоВоВнешниеФайлы()
Каталог = "\\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. Очистка неиспользуемых фото
Со временем в базе накапливаются сиротские фото — изображения, которые не прикреплены ни к одному объекту, но занимают место. Чтобы их найти и удалить:
- В конфигураторе откройте
Администрирование → Поддержка и обслуживание → Тестирование и исправление. - Выберите
Поиск и удаление неиспользуемых данных. - Отметьте галочку
Хранилище значений (фото, файлы). - Запустите проверку и удалите ненужные данные.
⚠️ Внимание: Перед очисткой обязательно сделайте резервную копию базы. Удаление неиспользуемых данных — необратимая операция.
Оптимальный подход: храните фото во внешних файлах (на сервере или в облаке), а в базе держите только ссылки. Это уменьшает размер базы и ускоряет её работу.
7. Интеграция с внешними системами: загрузка фото из Excel, с сайта, по API
Часто фото в 1С нужно загружать не вручную, а автоматически — например, из Excel, с сайта поставщика или через API. Рассмотрим основные сценарии.
7.1. Загрузка фото из Excel
Если у вас есть таблица Excel с ссылками на фото (например, URL или пути к файлам), можно автоматизировать загрузку:
- Создайте обработку с таблицей, куда импортируйте данные из Excel.
- Используйте
HTTPСоединениедля скачивания фото по URL илиДвоичныеДанныедля локальных файлов. - Привяжите фото к нужным объектам в 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));
КонецФункции
Для отправки фото во внешнюю систему