Скоро эта страница будет выглядеть по-новому
|
Настройки синхронизации с Exchange Server.
Для синхронизации с Exchange все календарные категории, в том числе системный календарь, должны быть денормализованными.
|
В "Первой Форме" реализованы два режима синхронизации календаря с Exchange Server: по расписанию и событийный. Эти два режима не могут быть включены одновременно!
Рекомендуется использовать событийную синхронизацию. Режим "по расписанию" считается устаревшим.
Синхронизация повторяющихся встреч из Exchange возможна только при событийной синхронизации.
После изменения режима синхронизации необходимо перезапустить пул IIS.
|
Для работы интеграции с Exchange (EWS) необходимо предоставить учетной записи, под который будет работать сервис, право редактора или право перевоплощения (имерсонализации) на те учетные записи или календари, с которыми будут работать пользователи под этой системной учетной записью.
|
Событийный режим
Используется при включенном флажке Синхронизировать календарь с Exchange (событийный режим). В этом режиме синхронизация выполняется в режиме онлайн при любых изменениях календарных задач.
Событийный режим работает некорректно с несколькими приложениями "Первой Формы" одновременно, поскольку в нескольких приложениях используется один сервер EWS.
|
Синхронизация осуществляется от имени пользователя, указанного в поле "Логин". Этот пользователь должен иметь галку Сотрудник и обладать правами администратора системы "Первая Форма", его необходимо занести в группу Administrators. У группы Administrators должно быть право "Администратор задач" во всех календарных категориях.
Если у пользователя нет прав доступа к календарям всех сотрудников в системе "Первая Форма", то необходимо настроить делегирование прав доступа к календарю (метод AddDelegate, см пример ниже).
// библиотеку Microsoft.Exchange.WebServices.dll необходимо загрузить из открытых источников,
// установить и указать к ней путь вместо "..." в строке ниже
Add-Type -Path ...\Microsoft.Exchange.WebServices.dll
Add-Type -Language CSharpVersion3 -ReferencedAssemblies Microsoft.Exchange.WebServices -TypeDefinition @"
using System;
using System.Net;
using Microsoft.Exchange.WebServices.Data;
public class SyncExchangeInit
{
private Uri Url = new Uri("*");
private ExchangeCredentials superUserCredentials = new WebCredentials("*", "*", "*");
private string superMail = "*";
private ExchangeCredentials serviceUserCredentials = new WebCredentials("*", "*", "*");
private string serviceMail = "*";
private string userMail = "*";
static SyncExchangeInit()
{
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
}
public void AddDelegate()
{
var service = new ExchangeService(ExchangeVersion.Exchange2010, TimeZoneInfo.Utc);
service.UseDefaultCredentials = false;
service.Credentials = superUserCredentials;
if (Url == null)
service.AutodiscoverUrl(superMail);
else
service.Url = Url;
service.RemoveDelegates(userMail, new UserId(serviceMail));
var delegateUser = new DelegateUser(serviceMail);
delegateUser.ViewPrivateItems = true;
delegateUser.Permissions.CalendarFolderPermissionLevel = DelegateFolderPermissionLevel.Editor;
service.AddDelegates(userMail, MeetingRequestsDeliveryScope.DelegatesAndMe, delegateUser);
}
}
"@
$SyncExchangeInit = New-Object SyncExchangeInit
$SyncExchangeInit.AddDelegate()
|
# Имя почтового сервера Exchange
$Mail_Server = 'mail.domain.local'
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://$Mail_Server/PowerShell/ -Authentication Kerberos
Import-PSSession $Session
Clear-host
# Учётная запись, которой даются права
$serviceaccount = "CalendarEditorUser"
# Права календарного редактора
$CalACLEdit = "Editor"
$CalACL = $null
# В этом месте собирается список пользователей, которым выставляются права на календарь. По умолчанию все пользователи.
$Users = Get-Mailbox
$Users = $Users.SamAccountName
Write-Host -f Yellow "Установка прав на календарь"
foreach ($useraccount in $Users)
{
# Получение текущих прав
$CalName = ($useraccount + ":\" + (Get-MailboxFolderStatistics -Identity $useraccount -FolderScope Calendar | Select -First 1).Name)
$CalACL = Get-MailboxFolderPermission -Identity $CalName | Select User
Write-Host -f Yellow "`nТекущие права: $CalName"
Write-Host -f Green $CalACL.User
# Добавление прав редактора
Add-MailboxFolderPermission -Identity $CalName -User $serviceaccount -AccessRights $CalACLEdit
# Удаление прав (для выполнения необходимо раскомментировать следующую строку Remove-MailboxFolderPermission и закомментировать предыдущую Add-MailboxFolderPermission)
# Remove-MailboxFolderPermission -Identity $CalName -User $serviceaccount -Confirm:$false
Write-Host -f Yellow "`nНовые права $CalName"
$CalACL = Get-MailboxFolderPermission -Identity $CalName | Select User
Write-Host -f Green $CalACL.User
}
|
Перевоплощение
Если включен флажок "Использовать перевоплощение", то при синхронизации изменений из "Первой Формы" в Exchange пользователь, от имени которого устанавливается соединение (он указан в параметре "Логин"), будет перевоплощаться в пользователя, от чьего имени нужно внести изменения на сервере Exchange. В этом случае нужно выдать служебному пользователю право перевоплощения в Exchange (см. Руководство по техобслуживанию).
Если флажок не включен, изменения будут совершаться от имени служебного пользователя, установившего соединение (указанного в параметре "Логин"). В этом случае используется механизм делегирования в Exchange.
Запрет на перевоплощение позволяет более строго контролировать внесение изменений в параметры календарных событий. Однако Microsoft рекомендует использовать перевоплощение.
|
Рассмотрим действие настройки на примере создания новой встречи. Пусть соединение с Exchange устанавливается от имени пользователя TCUser (он указан в параметре "Логин").
•Если использование перевоплощения разрешено (флажок "Использовать перевоплощение" включен), то TCUser перевоплотится в организатора встречи и от его имени создаст встречу в его календаре. •Если использование перевоплощения не разрешено (флажок "Использовать перевоплощение" НЕ включен), то TCUser от своего имени поставит встречу организатору в календаре организатора. |
Особенности не-доменной синхронизации
Если флажок "Доменная синхронизация" выключен, то в настройках синхронизации достаточно указать имя домена, логин и пароль пользователя, от имени которого будет выполняться синхронизация. Если же флажок включен, то необходимо внести изменения в конфигурационный файл приложения web.config (как правило, этот файл расположен в C:\inetpub\wwwroot\1Forma).
В блоке <system.web> после тегов <controls> нужно добавить строку <identity impersonate="true" userName="ДОМЕН\ИМЯ_ПОЛЬЗОВАТЕЛЯ" password="ПАРОЛЬ" />
Файл должен выглядеть примерно так:
<system.web>
<pages validateRequest="false" enableViewState="true" enableSessionState="true" enableEventValidation="false" clientIDMode="AutoID">
<controls>
...
</controls>
</pages>
<identity impersonate="true" userName="ДОМЕН\ИМЯ_ПОЛЬЗОВАТЕЛЯ" password="ПАРОЛЬ" />
После внесения изменений в конфигурационный файл вся работа приложения будет осуществляться от имени данного пользователя. Во избежание ошибок убедитесь, что данный пользователь обладает полным правом администрирования на сервере "Первой Формы".
Полезные ссылки
Настройки для синхронизации с Exchange
Пользовательские настройки
Задания по таймеру
Календарные категории и системный календарь
Особенности синхронизации с календарем Outlook
Синхронизация с Exchange по расписанию 