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

Разработка и Конфигурация · 10 мин

Как уменьшить размер картинки в 1С

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

Картинки в базе 1С — товары, фото сотрудников, сканы документов, логотипы — часто становятся главной причиной разрастания информационной базы. Одна фотография с телефона весит 3–8 МБ, а при тысячах позиций номенклатуры база набирает десятки гигабайтов, медленно открываются карточки, долго выполняется обмен с сайтом и резервное копирование.

Уменьшить размер картинки в 1С можно двумя путями: программно, средствами встроенного языка (объект «Картинка» и метод «Преобразовать»), либо массово — с помощью внешних обработок и утилит до загрузки в базу. Выбор зависит от того, где находятся изображения: уже в базе, в томе хранения файлов или только готовятся к импорту.

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

От чего зависит размер картинки в базе 1С

На итоговый объём влияют три фактора: разрешение (количество пикселей), формат хранения и степень сжатия. Фотография 4000×3000 пикселей в формате PNG может занимать в 5–10 раз больше места, чем та же картинка, уменьшенная до 800×600 и сохранённая в JPEG с качеством 80%.

В типовых конфигурациях (УТ, ERP, БП) картинки хранятся как присоединенные файлы — внутри информационной базы или в томах на диске. Если хранение настроено «в базе», каждая большая картинка напрямую раздувает файл 1Cv8.1CD или таблицы СУБД. Если файлы в томах — база растёт медленнее, но проблема медленной выгрузки на сайт и долгой синхронизации остаётся.

База быстро растётКартинки хранятся внутри ИБ

Проверьте настройку «Хранить файлы в информационной базе» в параметрах присоединенных файлов

Медленно открывается карточка товараИзображение слишком большое

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

Долгий обмен с сайтомВыгружаются несжатые фото

Проверьте настройки выгрузки изображений в модуле обмена

Способ 1. Уменьшение картинки программно через объект «Картинка»

Встроенный язык 1С позволяет загрузить изображение, изменить его размер и сохранить в нужном формате. Для этого используется объект «Картинка» совместно с объектом «ОбработкаКартинок» (доступен в современных версиях платформы) или через сохранение с преобразованием.

Типовой пример кода для уменьшения изображения до заданной ширины с сохранением пропорций:

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

ОбработкаКартинок.УстановитьРазмер(800, 0); // высота подберётся пропорционально

ОбработкаКартинок.УстановитьФормат(ФорматКартинки.JPEG);

ОбработкаКартинок.УстановитьКачество(80);

СжатыеДанные = ОбработкаКартинок.ПолучитьДвоичныеДанные();

Метод «УстановитьРазмер» с нулевой второй координатой сохраняет пропорции — это защищает от «сплющенных» изображений. Качество 75–85 для JPEG обычно даёт визуально неотличимую картинку при существенном уменьшении объёма.

bsl
ОбработкаКартинок = Новый ОбработкаКартинок(ДвоичныеДанные);
ОбработкаКартинок.УстановитьРазмер(800, 0);
ОбработкаКартинок.УстановитьФормат(ФорматКартинки.JPEG);
ОбработкаКартинок.УстановитьКачество(80);
НовыеДанные = ОбработкаКартинок.ПолучитьДвоичныеДанные();

Способ 2. Массовое сжатие присоединенных файлов обработкой

Когда картинок тысячи, ручная обработка не подходит. Логика массовой обработки: перебрать справочник присоединенных файлов (например, «НоменклатураПрисоединенныеФайлы»), отобрать файлы с расширениями jpg, jpeg, png, bmp размером больше заданного порога, получить двоичные данные, сжать и записать обратно.

Порядок действий для самописной или типовой обработки:

  1. Сделайте резервную копию базы или выгрузку .dt.
  2. Определите порог: например, обрабатывать только файлы больше 300 КБ.
  3. Запустите обработку в тестовой копии базы и проверьте 10–20 карточек визуально.
  4. Запустите обработку в рабочей базе в нерабочее время — операция ресурсоёмкая.
  5. Проверьте итоговый размер базы и скорость открытия карточек.
Порядок массового сжатия
  1. 1
    Создайте резервную копию базы
  2. 2
    Отберите файлы-картинки свыше порогового размера
  3. 3
    Прогоните сжатие на тестовой копии и проверьте качество
  4. 4
    Выполните обработку в рабочей базе в нерабочее время
  5. 5
    Сравните размер базы до и после, проверьте карточки товаров

Способ 3. Сжатие до загрузки в 1С и настройки хранения

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

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

Сравнение вариантов

Программное сжатие в 1С

Подходит для автоматизации и массовой обработки; требует доработки и тестирования

Внешняя обработка

Быстрый старт без изменения конфигурации; зависит от качества конкретной обработки

Сжатие до загрузки

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

Ограничения и риски при сжатии изображений

Главный риск — необратимая потеря качества. JPEG-сжатие с потерями нельзя «откатить»: если перезаписать исходник сжатой версией, восстановить детализацию получится только из резервной копии. Поэтому правило «сначала копия, потом обработка» здесь обязательно, а не рекомендовано.

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

Третий момент — объект «ОбработкаКартинок» доступен не во всех версиях платформы. На старых релизах придётся использовать объект «Картинка» с методом «Преобразовать» или внешние компоненты. Перед написанием кода проверьте версию платформы на сервере.

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

После обработки сравните три показателя: размер базы (или тома хранения) до и после, размер выборочных файлов и визуальное качество. Откройте 10–15 карточек товаров с разными типами изображений — фото на белом фоне, фото с мелкими деталями, изображения с текстом — и убедитесь, что артефактов сжатия нет.

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

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

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

Размер файлов после обработки
Норма

Файлы уменьшились в несколько раз, изображения читаемы

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

Размер не изменился или картинка стала мутной

Отображение в карточках
Норма

Фото открываются быстро и корректно

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

Чёрные области вместо прозрачного фона (PNG заменён на JPEG)

Обмен с сайтом
Норма

Выгрузка проходит быстрее, фото на сайте корректны

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

Ошибки выгрузки или битые изображения на сайте

Типичные ошибки при уменьшении картинок

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

Вторая ошибка — обработка «вживую» в рабочее время. Массовое чтение и запись двоичных данных блокирует таблицы и заметно тормозит работу пользователей. Третья — отсутствие фильтра по размеру: сжимать файлы по 20 КБ бессмысленно, а время обработки и риск растут. Разумный порог — 200–500 КБ в зависимости от задач.

Типичные ошибки
01
Конвертация PNG с прозрачностью в JPEG — фон становится чёрным или белым
02
Запуск массовой обработки без резервной копии — потерянное качество не восстановить
03
Сжатие всех файлов подряд без порога размера — лишняя нагрузка без эффекта
04
Обработка в рабочее время — блокировки и жалобы пользователей на торможение

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

Можно ли уменьшить картинку в 1С без программирования?

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

Какой формат выбрать: JPEG или PNG?

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

Не испортится ли качество фото товаров для сайта?

При разрешении 800–1200 пикселей по большей стороне и качестве JPEG 75–85 ухудшение на экране практически незаметно, а объём уменьшается в разы. Проверьте несколько изображений визуально после тестовой обработки — этого достаточно, чтобы подобрать параметры.

Что делать, если платформа не поддерживает объект «ОбработкаКартинок»?

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

Уменьшится ли база сразу после сжатия файлов?

Для файловой базы физическое уменьшение 1Cv8.1CD произойдёт только после тестирования и исправления с включённым сжатием таблиц. В клиент-серверном варианте место освобождается после шринка таблиц средствами СУБД. Если файлы хранятся в томах, эффект виден сразу по размеру каталога томов.

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

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

Итог

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

Уменьшение картинок в 1С делается программно через ОбработкаКартинок, массовой обработкой присоединенных файлов или сжатием до загрузки. Всегда делайте резервную копию, исключайте сканы документов и PNG с прозрачностью из JPEG-конвертации, а результат проверяйте визуально и по размеру базы.