Разработка и Конфигурация · 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 обычно даёт визуально неотличимую картинку при существенном уменьшении объёма.
ОбработкаКартинок = Новый ОбработкаКартинок(ДвоичныеДанные);
ОбработкаКартинок.УстановитьРазмер(800, 0);
ОбработкаКартинок.УстановитьФормат(ФорматКартинки.JPEG);
ОбработкаКартинок.УстановитьКачество(80);
НовыеДанные = ОбработкаКартинок.ПолучитьДвоичныеДанные();Способ 2. Массовое сжатие присоединенных файлов обработкой
Когда картинок тысячи, ручная обработка не подходит. Логика массовой обработки: перебрать справочник присоединенных файлов (например, «НоменклатураПрисоединенныеФайлы»), отобрать файлы с расширениями jpg, jpeg, png, bmp размером больше заданного порога, получить двоичные данные, сжать и записать обратно.
Порядок действий для самописной или типовой обработки:
- Сделайте резервную копию базы или выгрузку .dt.
- Определите порог: например, обрабатывать только файлы больше 300 КБ.
- Запустите обработку в тестовой копии базы и проверьте 10–20 карточек визуально.
- Запустите обработку в рабочей базе в нерабочее время — операция ресурсоёмкая.
- Проверьте итоговый размер базы и скорость открытия карточек.
- 1Создайте резервную копию базы
- 2Отберите файлы-картинки свыше порогового размера
- 3Прогоните сжатие на тестовой копии и проверьте качество
- 4Выполните обработку в рабочей базе в нерабочее время
- 5Сравните размер базы до и после, проверьте карточки товаров
Способ 3. Сжатие до загрузки в 1С и настройки хранения
Самый безопасный вариант — не пускать большие картинки в базу вообще. Если изображения готовятся вручную, их уменьшают заранее в любом графическом редакторе или пакетной утилите (например, бесплатные конвертеры с функцией пакетного изменения размера), а затем загружают уже оптимизированные файлы.
Дополнительно стоит проверить настройку хранения: в типовых конфигурациях в разделе администрирования есть переключатель «Хранить файлы в томах на диске». Перенос файлов в тома не уменьшает сами картинки, но снижает нагрузку на базу и ускоряет её резервное копирование. Для обмена с сайтом многие модули обмена позволяют задать максимальный размер выгружаемых изображений — тогда сжатие происходит автоматически при выгрузке.
Сравнение вариантов
Подходит для автоматизации и массовой обработки; требует доработки и тестирования
Быстрый старт без изменения конфигурации; зависит от качества конкретной обработки
Самый безопасный и контролируемый; требует дисциплины при добавлении новых фото
Ограничения и риски при сжатии изображений
Главный риск — необратимая потеря качества. JPEG-сжатие с потерями нельзя «откатить»: если перезаписать исходник сжатой версией, восстановить детализацию получится только из резервной копии. Поэтому правило «сначала копия, потом обработка» здесь обязательно, а не рекомендовано.
Второе ограничение — сканы документов. Для юридически значимых сканов (доверенности, акты с подписями) агрессивное сжатие недопустимо: мелкий текст и подписи должны оставаться читаемыми. Для таких файлов лучше ограничиться умеренным уменьшением разрешения или вообще не трогать их, сжимая только фото товаров.
Третий момент — объект «ОбработкаКартинок» доступен не во всех версиях платформы. На старых релизах придётся использовать объект «Картинка» с методом «Преобразовать» или внешние компоненты. Перед написанием кода проверьте версию платформы на сервере.
Как проверить результат сжатия
После обработки сравните три показателя: размер базы (или тома хранения) до и после, размер выборочных файлов и визуальное качество. Откройте 10–15 карточек товаров с разными типами изображений — фото на белом фоне, фото с мелкими деталями, изображения с текстом — и убедитесь, что артефактов сжатия нет.
Дополнительно проверьте смежные процессы: выгрузку на сайт, печатные формы с логотипом, мобильное приложение, если оно подтягивает картинки из базы. Иногда после смены формата с PNG на JPEG ломается отображение там, где ожидалась прозрачность.
Как проверить результат
Файлы уменьшились в несколько раз, изображения читаемы
Размер не изменился или картинка стала мутной
Фото открываются быстро и корректно
Чёрные области вместо прозрачного фона (PNG заменён на JPEG)
Выгрузка проходит быстрее, фото на сайте корректны
Ошибки выгрузки или битые изображения на сайте
Типичные ошибки при уменьшении картинок
Самая частая ошибка — сжатие без учёта прозрачности. Формат JPEG не поддерживает альфа-канал: логотипы и иконки с прозрачным фоном после конвертации получают чёрную или белую подложку. Такие файлы нужно оставлять в PNG и уменьшать только разрешение.
Вторая ошибка — обработка «вживую» в рабочее время. Массовое чтение и запись двоичных данных блокирует таблицы и заметно тормозит работу пользователей. Третья — отсутствие фильтра по размеру: сжимать файлы по 20 КБ бессмысленно, а время обработки и риск растут. Разумный порог — 200–500 КБ в зависимости от задач.
Частые вопросы
Можно ли уменьшить картинку в 1С без программирования?
Да, если изображения ещё не загружены — сожмите их любым графическим редактором или пакетной утилитой и только потом прикрепляйте к карточкам. Для файлов, уже лежащих в базе, без обработки или доработки не обойтись: штатной кнопки «сжать все картинки» в типовых конфигурациях нет.
Какой формат выбрать: JPEG или PNG?
JPEG — для фотографий товаров и любых изображений без прозрачности: он даёт максимальное сжатие. PNG — для логотипов, иконок и графики с прозрачным фоном или резкими линиями, но размер файла будет заметно больше.
Не испортится ли качество фото товаров для сайта?
При разрешении 800–1200 пикселей по большей стороне и качестве JPEG 75–85 ухудшение на экране практически незаметно, а объём уменьшается в разы. Проверьте несколько изображений визуально после тестовой обработки — этого достаточно, чтобы подобрать параметры.
Что делать, если платформа не поддерживает объект «ОбработкаКартинок»?
Используйте объект «Картинка» с методом «Преобразовать» для смены формата, либо внешние компоненты и утилиты командной строки, вызываемые через КомандаСистемы(). Альтернатива — выгрузить файлы из базы, сжать сторонней программой и загрузить обратно той же обработкой.
Уменьшится ли база сразу после сжатия файлов?
Для файловой базы физическое уменьшение 1Cv8.1CD произойдёт только после тестирования и исправления с включённым сжатием таблиц. В клиент-серверном варианте место освобождается после шринка таблиц средствами СУБД. Если файлы хранятся в томах, эффект виден сразу по размеру каталога томов.
Как не допустить повторного разрастания базы?
Введите регламент: загружать фото не больше заданного разрешения, настройте автоматическое сжатие при записи присоединенных файлов через подписку на событие и периодически проверяйте размер самых больших файлов отчётом по присоединенным файлам.
Что важно запомнить
Уменьшение картинок в 1С делается программно через ОбработкаКартинок, массовой обработкой присоединенных файлов или сжатием до загрузки. Всегда делайте резервную копию, исключайте сканы документов и PNG с прозрачностью из JPEG-конвертации, а результат проверяйте визуально и по размеру базы.