gifts2017

Как создать встречу и разослать приглашения в outlook из 1С?

Опубликовал Артем Пластинин (a_plastinin) в раздел Программирование - Практика программирования

Простейший пример создания встречи с рассылкой приглашений в outlook из 1с

&НаСервере

Процедура СоздатьСобытиеКалендарьOutlook()

    Попытка
       
ПочтоваяПрограмма = Новый COMОбъект("Outlook.Application");
    Исключение
       
СообщениеПользователю = Новый СообщениеПользователю;
       
СообщениеПользователю.Текст = "Не удалось подключиться к Outlook:" + Символы.ПС + ИнформацияОбОшибке().Описание;
       
СообщениеПользователю.Сообщить();
        Возврат;
    КонецПопытки;

   
// создание объекта "Встреча"
    // о параметрах функции Createitem() - http://msdn.microsoft.com/en-us/library/office/bb208104(v=office.12).aspx
   
Событие = ПочтоваяПрограмма.CreateItem(1);

   
Событие.Subject = "Тема встречи";
   
Событие.Start = ТекущаяДата();
   
Событие.End = ТекущаяДата() + 1800;
   
Событие.Body = "Описание встречи";
   
Событие.Location = "Помещение";

   
// The meeting has been scheduled - http://msdn.microsoft.com/en-us/library/office/ff869427.aspx
   
Событие.MeetingStatus = 1;

   
ВыборкаПолучатели = ПолучитьСписокПолучателей();
    Пока
ВыборкаПолучатели.Следующий() Цикл
       
Получатель = Событие.Recipients.Add(ВыборкаПолучатели.Адрес);
       
// Required attendee - // http://msdn.microsoft.com/en-us/library/office/ff869959.aspx
       
Получатель.Type = 1;
    КонецЦикла;

   
// установка напоминания
   
Событие.ReminderMinutesBeforeStart = 15;

   
// сохраняем встречу
   
Событие.Save();

   
// отправляем приглашения
   
Событие.Send();

   
СообщениеПользователю = Новый СообщениеПользователю;
   
СообщениеПользователю.Текст = "Событие создано успешно!";
   
СообщениеПользователю.Сообщить();

КонецПроцедуры

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Alex Stasyuk (GreenFox) 29.08.13 09:37
А что будет если на сервере офис не установлен или сервер вообще линуксовый. Может есть смысл сначала попробовать с клиента запускать потом если не отработало то переходить на сервер?
2. Артем Пластинин (a_plastinin) 29.08.13 10:48
> А что будет если на сервере офис не установлен или сервер вообще линуксовый.
Получим сообщение "Не удалось подключиться" (Пардон за КЭПа)

> Может есть смысл сначала попробовать с клиента запускать потом если не отработало то переходить на сервер?
В общем-то этот пример не претендует на универсальность, и, конечно, в зависимости от ситуации на конкретном проекте может потребовать разнесения получения COM-объекта на клиент/сервер.

Спасибо за замечание.
3. сис (sys) 29.08.13 13:11
//а можно и так
ЗапросАдресаПолучателя = Новый Запрос;
ЗапросАдресаПолучателя.Текст = "ВЫБРАТЬ
| КонтактнаяИнформация.Представление
|ИЗ
| РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
|ГДЕ
| КонтактнаяИнформация.Объект = &Объект
| И КонтактнаяИнформация.Тип = &Тип
| И КонтактнаяИнформация.Вид = &Вид";
ЗапросАдресаПолучателя.УстановитьПараметр("Объект",Контрагент); //Наш контрагент на форме обработки
ЗапросАдресаПолучателя.УстановитьПараметр("Тип",Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
ЗапросАдресаПолучателя.УстановитьПараметр("Вид",Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("000000032")); //наш е-маил
ВыборкаАдресаПолучателя = ЗапросАдресаПолучателя.Выполнить().Выбрать();

Если ВыборкаАдресаПолучателя.Следующий() Тогда
Сообщение = Новый ПочтовоеСообщение;
Сообщение.Текст = "Здравствуйте!";
Сообщение.Тема = "На конференцию становись!";
Сообщение.Получатели.Добавить(ВыборкаАдресаПолучателя.Представление);
//нужно в обработке указать путь к файлу "КаталогСохранения"
Сообщение.Вложения.Добавить(КаталогСохранения);
//затем сам почтовый клиент
Почта = Новый Почта;
Почта.Подключиться("Outlook",); //подключаемся без параметров, к клиенту установленному по умолчанию в системе
Попытка
//Пытаемся послать письмо
Почта.Послать(Сообщение,Истина);
Сообщить("Отправленно по Email");
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
//отключение
Почта.Отключиться();
КонецЕсли;
//удачи и свершений :)
4. Артем Пластинин (a_plastinin) 29.08.13 14:05
(3) sys, в тексте статьи речь идет о создании объекта "Совещание"/"Встреча" с нативным для Outlook'а рассылкой приглашения...

То, о чем пишите Вы - обычная отправка почтового сообщения

5. сис (sys) 29.08.13 14:36