Почему после настройки почты в 1С база сильно увеличилась в размере и как это исправить?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Введение и суть проблемы

Разберем ситуацию, с которой часто сталкиваются администраторы и разработчики: после настройки электронной почты размер информационной базы 1С (например, файла выгрузки .dt) стремительно увеличивается. На практике база может вырасти с 1.9 Гб до 10 Гб всего за сутки, а на сервере СУБД PostgreSQL образуются огромные файлы данных. Проанализируем причину этой проблемы и посмотрим, как правильно настроить систему, чтобы избежать неконтролируемого роста данных.

Разберем причины разрастания базы

Посмотрим на механизм работы встроенного почтового клиента 1С. При первоначальной настройке учетной записи система по умолчанию пытается синхронизировать все письма с почтового сервера. Все входящие сообщения, включая спам и тяжелые вложения (документы, сканы, архивы), загружаются в базу. В 1С создаются документы ЭлектронноеПисьмо и элементы справочника ВложенияЭлектронныхПисем. Выясним причину глубже: хранение двоичных данных непосредственно в таблицах базы данных SQL всегда приводит к быстрому расходованию дискового пространства и замедлению резервного копирования.

Шаг 1. Настройка почты «Только для отправки»

Разберем по шагам первое и самое простое решение. Если электронная почта в программе используется исключительно для рассылки клиентам печатных форм (счетов, накладных, актов), нам вообще не нужно скачивать входящие письма. Выполним следующие действия:

  1. Зайдем в настройки учетной записи электронной почты в 1С.
  2. Перейдем к блоку Использование учетной записи.
  3. Установим галочку Для отправки писем.
  4. Обязательно снимем флажок Для получения писем.

Таким образом, мы запретим 1С обращаться к входящим сообщениям, и система перестанет скачивать спам и ненужную переписку.

Шаг 2. Как не загружать старые письма и папку «Спам»

Рассмотрим подробнее ситуацию, когда получать входящую почту в 1С все-таки нужно. Как избежать загрузки мусора?

  1. Настройка папок IMAP: При использовании протокола IMAP мы можем явно указать, какие папки следует синхронизировать. Выберем только папку "Входящие" и исключим папки со спамом (Spam/Junk) и различные архивы.
  2. Ограничение периода: При первоначальной загрузке ограничим период (например, скачивать письма только за последний месяц). Это предотвратит загрузку гигабайтов старой переписки.
  3. Использование антиспама: В современных конфигурациях используем кнопку "Пометить как СПАМ", чтобы система автоматически заносила нежелательные адреса в черный список.

Шаг 3. Хранение вложений в томах на диске

Посмотрим на пример оптимального хранения файлов. Чтобы вложения не оседали в СУБД, настроим их хранение вне базы. Перейдем в раздел администрирования (обычно "Настройки работы с файлами"). Включим опцию Хранить файлы в томах на диске. Создадим отдельную папку на сервере и укажем к ней путь. Теперь 1С будет хранить в базе только текстовые атрибуты писем и ссылки на файлы, а сами вложения (PDF-файлы, картинки) будут лежать в обычной папке операционной системы. Это кардинально решит проблему разрастания таблиц PostgreSQL.

Шаг 4. Правильное удаление писем и очистка базы 1С

Проанализируем ситуацию с уже загруженным мусором. Галочка "Удалять письма через день" в настройках почты относится только к удалению писем на самом почтовом сервере (например, Яндекс или Mail.ru), но не очищает саму базу 1С.

Чтобы очистить 1С, выполним следующие шаги:

  1. Вручную или с помощью групповой обработки проставим пометку удаления на все ненужные документы ЭлектронноеПисьмо.
  2. Убедимся, что пометка удаления также стоит на связанных элементах справочника ВложенияЭлектронныхПисем.
  3. Воспользуемся стандартным функционалом Удаление помеченных объектов. Эту процедуру лучше выполнять, когда в базе нет пользователей.

Удаляя письма, мы можем нарушить только ссылочную целостность (если письмо привязано к задаче или контрагенту), но на общую статистику и работоспособность базы это не повлияет.

Шаг 5. Очистка физического места в PostgreSQL

Наконец, разберем важнейший технический нюанс работы с СУБД PostgreSQL. Даже после успешного удаления тысяч писем через "Удаление помеченных объектов", физический размер файлов базы на жестком диске (те самые файлы по гигабайту) не уменьшится автоматически.

PostgreSQL использует механизм MVCC, при котором удаленные данные просто помечаются как "мертвые", но место операционной системе не отдается. Чтобы реально сжать базу, выполним обслуживание таблиц на сервере БД. Нам потребуется запустить команду:

VACUUM FULL;

Эта команда полностью перестроит таблицы и вернет свободное дисковое пространство. Обратите внимание: операция полностью блокирует таблицы на время выполнения, поэтому ее следует проводить исключительно в нерабочее время (ночью или в выходные).

← На главную