Управление синхронизацией контактов...

Спросили меня про возможность запретить синхронизацию контактов CRM и Outlook, оставив в то же время, синхронизацию задач и встреч. Конечно, можно отключить/сделать неактивным правило синхронизации в CRM->Изменение локальных групп. Но если пользователей сотни или тысячи? Что можно сделать в этом случае? Давайте попробуем.

Все фильтры, в том числе и те, которые используются для синхронизации контактов CRM и Outlook, хранятся в специальной таблице UserQueryBase. Соответственно, достаточно просто разобраться в структуре таблице и с помощью неподдерживаемых настроек (прямой доступ к БД является ярчайшим примером неподдерживаемой конфигурации) регулировать синхронизацию контактов для всех пользователей нашей компании.

Итак, какие же поля являются ключевыми для выполнения нашей задачи? Их несколько. Во-первых, ReturnedTypeCode - тип возвращаемого объекта. В нашем случае, этот тип равняется 2 (контакты). Во-вторых, QueryType. После небольшого теста (создание своего фильтра в Outlook), удалось выяснить, что для нашей задачи этот параметр должен равняться 16. И, наконец, StateCode - состояние фильтра (0-активен, 1-неактивен).

Соответственно, задача выглядит достаточно просто - найти все активные фильтры с типом 16 для контактов для всех пользователей и изменить статус фильтра на 1.