Попалась синхронизировать календарь в базе 1С с календарем Outlook пользователя.
Нет проблем запустить COM объект outlook и далее уже делать все что нужно, тем более, что такое взаимодействие приходилось делать не раз, в том числе и синхронизацию календарей.
Но отличие этого задания было в том, что синхронизацию надо делать не зависимо от пользователя в рег. Задании.
Поиск решений привел к единственному разумному варианту – использование EWS
В процессе реализации столкнулся с тем, что по теме интеграции с EWS очень мало информации, приходилось буквально собирать по крупицам.
Много полезного можно найти в документации, но приходилось иногда читать именно на английском, потому что автоматический перевод иногда искажал смысл.
Собрал в обработке запросы, которые использовал для синхронизации календарей, может кому пригодятся.
Через EWS, кстати, можно делать очень много: работать с почтой, отправлять сообщения, создавать/читать задачи, работать с контактами, отправлять приглашения.
Все это описано в документации по ссылке выше.
В обработке же реализованы примеры запросов:
В параметрах указываете адрес веб-службы EWS, логин и пароль для подключения, также указываете адрес почты, в котором будут создаваться события календаря.
По кнопке примеры запросов – в текст запроса будут вставлены соответствующие запросы, с автоподстановкой параметров из обработки
Id и ChangeKey заполняются автоматически из ответа сервера, нужны для некоторых запросов
Текст ответа – ответ сервера после выполнения запроса
Примеры запросов:
Создать запись календаря – пример запроса создания события в календаре в указанном ящике
Получить все свойства записи outlook – получает все свойства события календаря по Id и ChangeKey (ChangeKey – обязательный параметр, но может быть любым, получается последнее состояние записи)
Актуализировать change key записи outlook – получает актуальный ChangeKey записи по ИД, нужен, например, для запроса изменения записи, если ChangeKey не актуальный – изменение не произойдет
Удалить запись outlook – удаляет событие по Id
Изменить запись outlook – изменяет событие по Id и ChangeKey
Изменить категорию записи outlook – изменяет категорию события
Изменить пользовательские поля записи outlook – изменяет пользовательские свойства в событии. Это как доп. Реквизиты в 1с, их можно установить, даже если нет, но выводится они не будут, тут только создавать свою форму события для Outlook и выводить их.
Получить last modified time записи outlook – получает дату последнего изменения записи по данным outlook
Получить записей outlook за месяц – получает список событий календаря за период. Запись попадает в ответ, если дата начала или дата окончания попадает в интервал
Получить body записи outlook – предыдущий запрос не возвращает некоторые поля, такие как тело события, вот этим запросом можно получить тело события отдельно.
Надеюсь, набор примеров запроса упростит жизнь тому, кому придется разбираться с EWS.
Тестировалось на платформе 8.3.13 и выше, но будет работать на любой платформе и в любой конфигурации в управляемом режиме.