Бывает, нужно повернуть картинку под определенный угол (для вывода в печатные формы или ранее отсканированные документы под другим углом).
Сначала для поворота картинки я использовал com объект "wia.imagefile", но столкнулся с тем, что не на всех серверах присутствует данная dll (Ссылка на публикацию).
Для случаев, когда нет возможности зарегистрировать dll, но есть права запуска приложений, написал программу на C#, которая может поворачивать как одно конкретное изображение, так и множество из выбранной папки.
Для того, чтобы было удобно работать с ней программно, добавил параметры запуска - смотрите на фото №2.
Выглядит это так:
Вставляем программу в макет обработки как двоичные данные. Далее рабочий код:
//Закидываем в модуль менеджера встроенной обработки, чтобы можно было обращаться не создавая экземпляра обработки (Обработки.ПовернутьКартинку.ПовернутьКартинкуЧерезEditPictures())
Функция ПовернутьКартинкуЧерезEditPictures(УголПоварота,ФайлИлиПапка,ПутьИсточник,ПутьПриемник,TimeOut = Неопределено) Экспорт
//TimeOut - Через сколько секунд программа должна закрыться принудительно.
Попытка
//Получаем программу в виде двоичных даннх
НашаПрограмма = ПолучитьМакет("EditPictures");
//Определяем путь с уникальным именем файла
ПутьКПРограмме = КаталогВременныхФайлов()+"EditPictures_"+Строка(Новый УникальныйИдентификатор)+".exe";
//Сохраняем программу по определенному выше пути
НашаПрограмма.Записать(ПутьКПРограмме);
//Определяем ком объект "WScript.Shell"
WshShell = Новый COMОбъект("WScript.Shell");
//Выполняем команду запуска программы с переданными выше параметрами
WshShell.Run(ПутьКПРограмме +" """+УголПоварота+""""+" """+ФайлИлиПапка+""""+" """+ПутьИсточник+""""+" """+ПутьПриемник+""""+" """+TimeOut+"""",0,Истина);
//После выполнения программа "EditPictures" сама себя удалит!
//Уничтожаем переменную "WshShell"
WshShell = Неопределено;
УспешноОбработано = Истина;
Исключение
УспешноОбработано = Ложь;
КонецПопытки;
Возврат Новый Структура("УспешноОбработано,Путь",УспешноОбработано,ПутьПриемник);
КонецФункции
Файл перезалит:
Изменения для режима запуска программы с внешними параметрами:
а. Добавлен новый параметр TimeOut идет после последнего параметра на скрине. Измеряется в секундах.
Так же пишем все в кавычках. Обозначает время когда программа принудительно завершится (полезно если по каким то причинам зависла). По умолчанию TimeOut= 120сек.
б. Добавлено самоудаление программы из сохраненного каталога при завершении. Даже после выполнении программы 1С не может удалить ее т.к. она занята. По этому и появилась необходимость создания самоудаления.
Для работы программы нужен net framework (обычно в windows установлен по умолчанию).
Можно скачать отсюда http://net-framework.ru (качаем последнюю версию на данный момент).