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
[Обновлено] Добавил кнопку загрузки изображения сертификата из файла.