Проблема дублирования входящих сообщений во встроенной почте конфигурации «1С:Документооборот» — это классическая техническая трудность, с которой сталкиваются многие компании через несколько месяцев активной эксплуатации системы. В то время как сторонние почтовые клиенты (например, TheBat или Outlook) отображают письма корректно, в «1С» одно и то же сообщение может загружаться десятки раз. Давайте подробно разберем, почему это происходит и как настроить систему для стабильной работы.
Для начала проанализируем ситуацию: основная причина кроется в механизме взаимодействия платформы 1С с почтовыми серверами по протоколу POP3. Когда в настройках учетной записи установлена галочка «Оставлять копии сообщений на сервере», система должна как-то понимать, какие письма она уже скачала, а какие — нет. Для этого используется идентификатор UIDL (Unique ID Listing).
Рассмотрим подробнее, как это работает «под капотом». Система 1С хранит список всех загруженных UIDL в специальном техническом регистре сведений. При каждом сеансе приема почты программа запрашивает у сервера список идентификаторов всех писем, находящихся в почтовом ящике, и сравнивает их со своим списком. Если сопоставление дает сбой, 1С считает все письма на сервере новыми и начинает их повторную загрузку.
Основные факторы сбоя идентификации:
UIDL могут измениться. Для «1С» это сигнал, что в ящике лежат абсолютно новые объекты.Как показывает практика эксплуатации и сообщения пользователей, наиболее стабильным «быстрым» решением является использование настройки удаления писем с сервера через определенный промежуток времени. Разберем по шагам, как это реализовать.
Если мы не можем полностью отказаться от хранения копий на сервере (например, почта нужна другим сотрудникам в веб-интерфейсе), установим компромиссный вариант. В настройках учетной записи почты в «1С:Документооборот» необходимо найти параметры получения почты и установить флаг «Удалять письма с сервера через N дней».
Почему это помогает? Ограничивая «глубину» хранения писем на сервере (например, 7 или 14 днями), мы кратно уменьшаем объем списка UIDL, который 1С приходится обрабатывать при каждом запуске регламентного задания ПриемПочты. Это минимизирует вероятность ошибок тайм-аута и упрощает синхронизацию.
Выясним причину, по которой POP3 проигрывает в данной ситуации. Протокол POP3 изначально создавался для сценария «скачал и удалил». Работа в режиме «оставлять на сервере» для него является надстройкой, которая работает нестабильно в тяжелых информационных системах.
Проанализируем преимущества перехода на IMAP:
Важно: При переходе на IMAP убедитесь, что версия вашей платформы 1С актуальна (не ниже 8.3.20), так как в старых релизах работа с IMAP могла приводить к утечкам памяти в процессе rphost.
Рассмотрим ситуацию, упомянутую в обсуждении: когда письма не только дублируются, но и начинают попадать в почтовые ящики других пользователей. Это серьезная ошибка, связанная с работой фоновых заданий и кэшированием объектов ИнтернетПочтовыйПрофиль.
В определенных релизах «1С:Документооборот» (особенно ветки 2.1.13–2.1.15) наблюдался эффект «залипания» сессии. Когда одно фоновое задание последовательно обрабатывает очередь из нескольких учетных записей, параметры авторизации предыдущего пользователя могут ошибочно примениться к следующему.
Для исправления этой ситуации выполним следующие действия:
Посмотрим на пример настройки расписания. Часто дубли возникают из-за того, что новое регламентное задание запускается до того, как завершилось предыдущее. Проанализируем типичный код инициализации почтового соединения:
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераPOP3 = "pop.mail.ru";
Профиль.ПортPOP3 = 995;
Профиль.ИспользоватьSSLPOP3 = Истина;
Почта = Новый ИнтернетПочта;
Попробовать
Почта.Подключиться(Профиль);
// Здесь происходит получение заголовков
Заголовки = Почта.ПолучитьЗаголовки();
Исключение
ЗаписатьЛогСобытий("Ошибка подключения к почте: " + ОписаниеОшибки());
КонецПопытки;
Если в момент выполнения Почта.ПолучитьЗаголовки() происходит обрыв связи или принудительное завершение сеанса сервером по тайм-ауту, 1С не успевает передать серверу команду завершения QUIT, и транзакция пометки писем как «обработанных» не проходит.
Рекомендации по настройке фоновых заданий:
Timeout для интернет-соединений. В условиях медленного интернета стандартных 30-60 секунд может быть недостаточно для загрузки тяжелых вложений.Напоследок разберем влияние инфраструктуры. Иногда 1С ни при чем — виноват антивирусный сканер на сервере, который «вклинивается» в трафик между 1С и почтовым сервером. Антивирус перехватывает пакеты, проверяет их, и если проверка затягивается, 1С разрывает соединение по тайм-ауту. Однако сервер считает, что письмо было передано, а 1С — что нет. На следующем цикле загрузка повторяется.
Проанализируем сетевой путь: если вы используете прокси-сервер или корпоративный межсетевой экран, добавьте исполняемые файлы 1С (ragent.exe, rphost.exe) в исключения для проверки почтового трафика (порты 110, 995, 143, 993).
Подводя итог, скажем: наиболее эффективная стратегия борьбы с дублями в «1С:Документооборот» — это сочетание перехода на IMAP, установки актуальных патчей платформы и настройки разумного срока удаления писем с сервера (не более 14 дней). Это гарантирует, что база данных не будет перегружена лишними идентификаторами, а механизмы синхронизации будут работать корректно.