Сама библиотека Outlook Redemption реализована в виде COM DLL. Разработчик Dmitry Streblechenko.
Смысл использования библиотеки состоит в том, что начиная с версии Outlook 2000 и по сей день Microsoft использует режим повышенной безопасности для доступа к Outlook через СDO. В результате программная работа с Outlook либо вообще блокируется, либо каждый раз выдаются предупреждающие сообщения, надоедающие пользователям. Библиотека Redemption позволяет обойти повышенную безопасность и спокойно работать с Microsoft Office Outlook.
Пример кода, для полуавтоматической отправки заказа поставщику из Управления Торговлей. Заказ сохраняется в XLS, присоединяется к письму, и письмо, готовое для отправки, отображается на экране. Далее в новом сообщении Outlook, пользователь может дописать что-нибудь и нажать кнопку Отправить.
функция ПослатьВложениеXLS(ПосылатьОтчет=ложь) экспорт
Если ПосылатьОтчет тогда
Отчет=Элементыформы.ПолеТабличногоДокумента;
иначе
Отчет=ПечатныйДокумент;
конецесли;
ФайлВФорматеXLS = "c:\temp\Заказ.xls"; //ПолучитьИмяВременногоФайла();
Отчет.Записать(ФайлВФорматеXLS, ТипФайлаТабличногоДокумента.XLS);
myOlApp = Новый COMОбъект("Outlook.Application");
myItem = myOlApp.CreateItem(0);
//Redemption
SafeItem = Новый COMОбъект("Redemption.SafeMailItem");
SafeItem.Item = myItem;
//Адрес
Если Поставщик<>неопределено тогда
Запрос=Новый запрос;
Запрос.Текст="ВЫБРАТЬ КонтактнаяИнформация.Представление
| ИЗ
| РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
| ГДЕ
| КонтактнаяИнформация.Вид.Наименование =""Адрес электронной почты контрагента для обмена электронными документами""
| И КонтактнаяИнформация.Объект = &Парам1";
Запрос.УстановитьПараметр("Парам1",Поставщик);
выборка=Запрос.Выполнить().Выбрать();
выборка.следующий();
адреспочты=выборка.Представление;
если СокрЛП(адреспочты)<>"" тогда
myRecipient = SafeItem.Recipients.Add(адреспочты);
конецесли;
конецесли;
SafeItem.Subject = Отчет.Область(3,2).Текст;
myItem.BodyFormat=1;
myItem.Body ="Добрый день.
|
|Заказ во вложении. Прошу выставить счет.
|
|С уважением,
|Иванов Иван
|
|ООО «Иван»
|+7 (111) 123-45-67";
xlAplication = Новый COMОбъект("Excel.Application");
xlDoc=xlAplication.Workbooks.Open(ФайлВФорматеXLS);
xlPS=xlDoc.Worksheets(1).PageSetup;
xlPS.Zoom=False;
xlPS.FitToPagesWide=1;
xlDoc.Save();
xlAplication.quit();
myAttachments = myItem.Attachments();
myAttachments.Add( ФайлВФорматеXLS, 1, 1, "Заказ поставщику");
SafeItem.Display();
УдалитьФайлы(ФайлВФорматеXLS);
конецфункции
У библиотеки Redemption есть один важный нюанс. Если вы используете 1С:Предприятие на платформе x64, то и Microsoft Office и библиотека Redemption должны использоваться только 32х-разрядные! То есть офис надо ставить x86. Дело в том, что сама клиентская платформа 1С не имеет версии x64, а достучаться из 32-х разрядной 1С в офис x64 не получается.