Как я устал возиться с картинками в 1С...
Когда работаешь с постоянно расширяющейся торговой базой, рано или поздно сталкиваешься с проблемой: номенклатуры много, а значит и изображений (картинок) всё больше. База пухнет, открывается медленнее, а уж резервные копии… Размеры просто невообразимые, но главное, нет в их больших размерах необходимости. Чаще всего, картинки просто должны быть. Возникает вопрос, как бы их принудительно время от времени (а может и только разово) уменьшить. Без шума и пыли, так сказать.
Руками скачивать, сжимать в просмотрщиками (хоть бы даже и пакетно) или ещё каком фотошопе с фигмой, а потом также нудно это всё обратно загружать? Не наш путь!
Собственно, я решил автоматизировать этот процесс для своих нужд, а потом так вошёл во вкус, оценив удобство, что захотелось поделиться и с другими.
Сразу оговорюсь, что эта обработка работает только с обычными формами (обычным приложением), позднее обязательно сделаю и под управляемые, – там хотя бы изначально можно файлы хранить в томе на диске, не такая острая проблема. Итак.
Как это работает:
- Назначаем рабочую папку, откуда и куда буду выгружаться, обрабатываться и снова загружаться в базу картинки.
- Обработка выгружает картинки из базы в рабочую папку
- Затем через внешний конвертер (также содержится в архиве) сжимает их согласно заданным настройкам ширины и высоты, а также качества сжатия,
- Картинки загружаются обратно уже оптимизированные файлы.
Важно!
После загрузки уменьшенных картинок необходимо из-под конфигуратора выполнить "Тестирование и исправление информационной базы", включив все проверки и режимы. Это нужно для корректного обновления ссылок и таблиц после обработки изображений.
Особенности решения:
• !ПОЛНАЯ АВТОНОМНОСТЬ! Ничего устанавливать не требуется. В комплекте идёт ImageResizer.exe, основанный на распространённой и достаточно шустрой библиотеке ImageMagick.
• Сам конвертер ImageResizer.exe – это консольное приложение, написанное на C# специально под эту обработку. Во главу угла ставилась работа без установки всяких рантаймов, зависимостей и иже с ними, т.е. всё, что нужно, уже внутри (собственно, поэтому размер чуть больше, чем хотелось бы, но тут уж извините, приходится чем-то жертвовать).
При необходимости могу предоставить исходный код для проверки или адаптации.
• По умолчанию работа происходит с файлами JPG, но сама внешняя ресайзилка поддерживает и другие форматы: PNG, BMP, GIF, TIFF и др.
• Настройка параметров обработки:
- изменение качества сжатия изображения (в процентах, от 1% до 100%),
- изменение размера изображения (в процентах от оригинала, например 50%).
• Возможность принудительного преобразования всех файлов в формат JPG после обработки, независимо от исходного расширения.
• Возможность автоматического удаления преобразованных файлов после загрузки в базу, чтобы не захламлять рабочую папку.
• Пошаговое выполнение процедур: можно отдельно запускать выгрузку, сжатие или загрузку.
• Или выполнить полный цикл одной кнопкой — выгрузить, преобразовать и сразу загрузить обратно в базу.
• Работоспособность проверена на УПП 1.3, КА 1.1, УТ 10.3.
• Мониторинг процента выполнения всех процедур — видно, сколько уже обработано и сколько осталось.
• Реализована поддержка поиска файлов по разным расширениям (учтите, что если имя одинаковое, а расширения разные, могут всплыть нюансы).
• Гибкое логирование: подробный лог всех действий записывается в текстовый файл, читай, изучай, контролируй процесс.
• Поддержка записи событий в Журнал Регистрации: предусмотрены разные способы записи в зависимости от версии платформы. Всё же ОФ – штука, мягко говоря, не самая современная в мире 1С.
• По вышеуказанной причине учтена работа на старых версиях платформы: реализован собственный аналог функции СтрРазделить для разбора строк без зависимости от встроенных методов.
Почему это удобно:
Раньше обработка картинок вручную занимала полдня и море нервов.
Теперь весь процесс автоматизирован — от начала и до конца за несколько минут.
База становится заметно легче, быстрее работает, резервные копии уменьшаются в несколько раз.
На больших базах это особенно хорошо видно: реальная экономия места и времени (ну и нервов, конечно).
Что входит в комплект:
• Сама обработка .epf (Обычные формы) с возможностью как внешнего вызова, так и подключения,
• Внешний конвертер ImageResizer.exe, написанный на C# с использованием библиотеки ImageMagick.
Подходит для:
• Компаний, работающих с большим объёмом номенклатуры с изображениями,
• Проектов, где важно сократить размер базы без потери информации,
• Разработчиков, которым нужно быстро оптимизировать изображения в базе,
• Всех, кто устал вручную сжимать и обрабатывать картинки для 1С.
Проверено на следующих конфигурациях и релизах:
- Управление торговлей, редакция 10.3, релизы 10.3.45.4
- Управление производственным предприятием, редакция 1.3, релизы 1.3.210.1
- Комплексная автоматизация, редакция 1.1, релизы 1.1.115.1