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

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

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

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

1 звезда2 звезды3 звезды4 звезды5 звезд (1 голосов, средний: 1.00 из 5)
Loading ... Loading ...