При активном использовании почтового клиента в базе CRM администраторы системы зачастую сталкиваются с тем, что со временем размер базы данных увеличивается, что приводит к замедлению работы системы.
Типовой клиент почты в 1С:CRM автоматически создаёт на каждое письмо в базе данных документ “Электронное письмо входящее”/“Электронное письмо исходящее”. Это и занимает значительное место в базе.
У нашего Заказчика большое количество сотрудников, пользующихся почтовым клиентом в 1С, и это в итоге привело к проблемам с размерами базы данных. Поэтому в рамках проекта было решено разработать альтернативный почтовый клиент, который бы позволил работать с письмами, но не хранить их в базе.
Функциональная часть
Для работы с письмами мы использовали методы для работы с письмами по протоколам IMAP - для получения писем, и SMTP - для их отправки.
Состав папок мы получаем с почтового сервера, письма отображаются на форме почтового менеджера только в тот момент, когда пользователь с ними работает, документы для каждого письма не создаются.
Для реализации такого почтового клиента сделали обработку для работы с письмами. Нижеперечисленные настройки используем типовые:
- Настройки учётных записей
- Дополнительные настройки и подписи
Обработка для альтернативного почтового клиента внешне аналогична типовому интерфейсу, реализованы следующие возможности:
Превью в альтернативной обработке
Реализованы стандартные функции работы с письмом:
- Принять обращение (открытие формы мастера принятия обращения с автоматическим поиском в клиентской базе по адресу электронной почты - аналогично типовому функционалу CRM);
- Ответить;
- Ответить всем;
- Установить пометку о прочтении;
- Переместить письмо.
Функции работы с письмом
При создании Интереса на основании письма, его данные сохраняются в регистре сведений. При создании Интереса и связке Интереса с письмом происходит:
- автоматический перенос вложений из письма в присоединённые файлы в “Интересе”;
- в ленте “Интереса” отображается текст письма, а также имеется возможность открыть письмо из ленты.
Детали реализации
-
Чтобы заполнить таблицу электронных писем для вывода на форму, мы используем объект конфигурации ИнтернетПочта.
-
Письма получаем по каждой активной папке, предварительно получаем список этих папок с помощью методов ПолучитьПочтовыеЯщики() или ПолучитьПочтовыеЯщикиПоПодписке() объекта ИнтернетПочта. Учитываем, что папки могут иметь иерархию.
-
Далее по каждой активной папке получаем заголовки писем по определенным отборам. Если на форме АРМ указан период, за который нужно получить письма, то указываем его в параметрах отбора. Отдельно получаем прочитанные и непрочитанные письма.
-
Сам текст письма и его вложения содержатся в объекте ПочтовоеСообщение, который можно получить из заголовка письма, поэтому в АРМ есть 2 варианта работы с письмами:
- загрузка писем сразу вместе с текстом и его вложениями - в этом случае мы сразу получаем данные письма, которые содержатся в объекте ПочтовоеСообщение; при таком варианте письма грузятся дольше, но работа с ними в дальнейшем будет идти быстрее;
- загрузка писем без текста письма - в этом случае мы имеем ограниченную информацию о письме, а данные письма получаем при открытии его на форме АРМ; при таком варианте письма грузятся быстрее, но открываться они будут немного дольше.
-
После заполнения таблицы с данными писем, мы проверяем, какие из полученных писем были уже обработаны в базе (обработанными являются письма, по которым в базе был создан документ Интерес). Для хранения обработанных писем нами был создан регистр сведений Обработанные письма, в котором имеется измерение Идентификатор - в нем мы храним идентификатор письма, которое было обработано, и измерение Интерес - для хранения связи письма с конкретным документом Интерес.
-
Далее мы передаем результат получения писем (таблицу с самими письмами, связанные таблицы с получателями, отправителями писем, получателями копий, вложениями) на форму и выводим результат на форму.
-
Для просмотра письма в АРМ была реализована отдельная форма, на которой выводятся данные открытого письма. Если выбран вариант работы в АРМ с загрузкой писем без текста письма и вложений - данные письма дополнительно подгружаются при открытии формы, иначе мы сразу выводим данные из результата получения писем.
-
Для отправки нового письма была также реализована отдельная форма. Письмо отправляется с помощью метода Послать объекта ИнтернетПочта.
-
В АРМ реализована возможность перемещения письма в различные папки, в т.ч. в папку Удаленные, установка/снятие отметки о прочтении. Для этого мы используем методы объекта ИнтернетПочта:
- ПереместитьВПочтовыйЯщик - для перемещения письма в папку;
- УстановитьФлагиСообщений - для установки/снятие отметки о прочтении.
Подведем итоги
В результате проведенного проекта был разработан альтернативный почтовый клиент, который позволяет работать с письмами без их хранения в базе данных CRM.Это позволило решить проблему с увеличением размеров базы данных и замедлением работы системы.
Пользователи системы теперь могут продолжать эффективно использовать почтовые функции в CRM, а администратор может не бояться негативного влияния на производительность системы.