MyTetra Share
Делитесь знаниями!
Как сканировать картинки из 1С:8.2
Время создания: 10.04.2012 10:14
Раздел: Компьютер - Windows - 1С - Готовые решения
Запись: xintrea/mytetra_syncro/master/base/1334038461klkfqycs96/text.html на raw.github.com

Сканирование с использованием WIA, хранение в справочнике Хранилище дополнительной информации и печать из документа реализации.

I. Сканирование.

Сканирование происходит с помощью WIA (Windows Image Acquisition). В Windows 7 соответствующие dll уже входят в комплект, а для XP нужно качать и регистрировать (с сайта Microsoft, где в архиве есть инструкция). Код для сканирования из 1с следующий:

Image = Новый COMОбъект("WIA.ImageFile"); //создаем объект "Изображения" в WIA для дальнейшей работы с ним

DevManager = Новый COMОбъект("WIA.CommonDialog"); //а это диалог сканирования

Image = DevManager.ShowAcquireImage(); //записываем сканированное изображение

IP = Новый COMОбъект("WIA.ImageProcess"); //создаем фильтр для сохранения изображения

IP.Filters.Add(IP.FilterInfos("Convert").FilterID);

IP1 = IP.Filters(1);

Для К = 1 По IP1.Properties.Count Цикл

Если IP1.Properties(К).Name = "FormatID" Тогда

IP1.Properties(К).Value = "{B96B3CAF-0728-11D3-9D7B-0000F81EF32E}"; //конвертируем в PNG

Прервать;

КонецЕсли;

КонецЦикла;

Image = IP.Apply(Image); //применяем фильтр на изображение

После этого можно сохранить объект Image на диск и прочитать её уже средствами 1с:

УдалитьФайлы(ИмяФайла); //удалим старый файл

Image.SaveFile(ИмяФайла); //сохраним на жесткий диск объект WIA

ЭлементыФормы.СертификатИзображение.Картинка = Новый Картинка(ИмяФайла); // Читаем картинку с жесткого диска

Полученное изображение можно повертеть с помощью того же WIA:

Если Image = Неопределено Тогда

Возврат;

КонецЕсли;

IP = Новый COMОбъект("WIA.ImageProcess"); //создаем объект WIA для редактирования изображения

IP.Filters.Add(IP.FilterInfos("RotateFlip").FilterID); //создаем WIA-фильтр для поворота

IP1 = IP.Filters(1);

Для К = 1 По IP1.Properties.Count Цикл

Если IP1.Properties(К).Name = "RotationAngle" Тогда

IP1.Properties(К).Value = Градусов; //вертеть можно на 90,180 и 270 грудосов

Прервать;

КонецЕсли;

КонецЦикла;

Image = IP.Apply(Image); //применяем фильтр на изображение

II. Сохранение

Наиболее естественным местом хранения изображения сертификата - это справочник Хранилище дополнительной информации с привязкой к номенклатуре. В зависимости от разных обстоятельств один и тот же сертификат может быть привязан к различным позициям номенклатуры, к различными характеристиками и сериями одной номенклатуры. Хранилище дополнительных данных не позволяет устанавливать соответствие между списком номенклатуры/характеристиками/сериями. Поэтому алгоритм хранения информации выглядит следующим образом:

1.Для сертификата состаляеся таблица: Номенклатура, характеристика, серия.

2.При записи сертификата изображение сохраняется в хранилище и привязывается к первой по списку номенклатуре.

3.Для каждого номенклатуры по списку ищется связанный элемент справочника Хранилище дополнительной информации под именем ТаблицаДляСертификатов (если его нет, то создается). В этом хранилище помещается таблица Номенклатура, характеристика, серия, ссылка на хранилище изображение сертификата. В эту таблицу добавляются новые данные и она снова записывается в хранилище.

Кроме того, в таблицу добавляется дополнительная информации о сертификате: дата начала, дата окончания и описание.

Таким образом, получаем 2 элемента Хранилища дополнительной информации: сами изображения сертификатов и таблицы, в которых хранится дополнительная и более подробная о принадлежности сертификатов относительно характеристик и серий.

III. Печать.

Печатная форма документа Реализации товаров и услуг. Сначала составляется список номенклатуры и по нему получаются таблицы с данными о сертификатах. Потом проходя по табличной части документа происходит поиск соответствующих сертификатов, которые выводятся в табличный документ.

З.Ы. Вот по этим ссылкам можно посмотреть пример, что ещё можно сделать с помощью WIA с картинками.

http://msdn.microsoft.com/en-us/library/ms630819(VS.85).aspx

http://www.codeproject.com/KB/shell/resize_image_script_all.aspx

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования