Задача
К нам обратился заказчик, который уже пытался самостоятельно настроить штатную синхронизацию между календарями Битрикс24 и Microsoft Exchange, но столкнулся с критическими ограничениями:
- не синхронизировались встречи с внешними участниками;
- повторяющиеся события обрабатывались только как цепочка, терялись изменения отдельных событий;
- синхронизация зависала и требовала ручного вмешательства;
- не было понятной отладочной информации, а при включенном логировании логи занимали гигабайты.
Почему штатное решение не работало
Битрикс24 и Exchange имею разную архитектуру и в реализации календарей заложена разная идеология. К примеру архитектура Битрикс24 предполагает, что все пользователи Exchange должны быть пользователями Битрикс24, а Битрикс24 ожидает, что повторяющие события могут меняться только всей цепочкой. У заказчика сложилась обратная ситуация. Все пользователи работают с Exchange, а Битрикс24 развернут в интересах определённых команд.
Цели проекта
Нам требовалось:
- обеспечить быструю, автономную и незаметную для пользователя синхронизацию;
- управлять участниками событий без обязательного приглашения их в Битрикс24;
- внедрить понятный и локализованный лог ошибок без хранения огромных файлов;
- дать администратору гибкие настройки синхронизации;
- обеспечить параллельную работу в обоих календарях без ограничений;
- корректно обрабатывать повторяющиеся встречи и их изменения.
Как мы решали
Мы провели серию встреч, составили детальное ТЗ и развернули тестовый стенд. Моделирование выявило глубинные проблемы:
- встроенные методы обмена устарели;
- модули внутри систем сильно переплетены;
- вмешательство в штатную логику было невозможно;
- документация отсутствовала, отладка была неинформативной.
Решение
Был разработан отдельный модуль, который:
- аккуратно встроился поверх штатной синхронизации, не нарушая её работу;
- добавил понятный интерфейс для настройки параметров синхронизации;
- ввёл систему логирования с выводом только значимых событий (рис. 1–2);
- расширил пользовательские уведомления на портале Битрикс24 (рис. 3).
Модуль не заменил, а дополнил стандартные механизмы, сделав их управляемыми и прозрачными.
Рис. 1 - Настройка модуля
Рис. 2 - Параметры логирования
Рис. 3 - Уведомления и предупреждения
Результат
Все поставленные задачи перед нашей командой выполнены. Заказчик получил готовый модуль в архиве с подробной инструкцией и комментированным кодом. При этом разработанный нашей командой модуль не заменил, а дополнил стандартные методы синхронизации.
Теперь сотрудники заказчика могут:
- работать в привычных инструментах — Битрикс24 или Outlook — без потери актуальности данных;
- создавать и изменять встречи в любой из систем;
- приглашать участников и принимать приглашения без ограничений;
- видеть актуальные изменения в режиме реального времени;
- полноценно управлять цепочками повторяющихся событий.
Синхронизация стала быстрой, надёжной и прозрачной, а администратор получил контроль над процессами, которые раньше были «чёрным ящиком».


