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

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

При настройке синхронизации данных между типовыми конфигурациями (например, между «1С:Бухгалтерией предприятия» и «1С:Управление нашей фирмой», особенно в базовых версиях) специалисты часто сталкиваются с ситуацией, когда в мастере настройки обмена отсутствует выбор канала передачи через электронную почту (EMAIL). В окне выбора транспорта доступны только каталог, FTP или прямое подключение. Разберем технические причины такого поведения подсистемы обмена БСП (Библиотека стандартных подсистем), выясним, куда исчез функционал, и рассмотрим практические способы решения этой задачи.

Архитектурная причина: почему EMAIL исчезает из интерфейса

Проанализируем программную часть конфигурации. Если изучить состав объектов метаданных, перечисление ВидыТранспортаСообщенийОбмена по-прежнему содержит значение EMAIL. Низкоуровневые механизмы отправки и получения почтовых вложений из состава БСП также не удалены разработчиками платформы. Однако мастер настройки синхронизации данных формирует список доступных каналов динамически.

Для каждого плана обмена состав разрешенных транспортов жестко зафиксирован в модуле менеджера плана обмена в функции ИспользуемыеТранспортыСообщенийОбмена(). Посмотрим на типовой пример кода из конфигурации «Бухгалтерия предприятия»:


Функция ИспользуемыеТранспортыСообщенийОбмена() Экспорт
    
    Результат = Новый Массив;
    Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FILE);
    Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FTP);
    Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.COM);
    Возврат Результат;
    
КонецФункции

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


Функция ИспользуемыеТранспортыСообщенийОбмена() Экспорт
    
    Результат = Новый Массив;
    Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.COM);
    Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.WS);
    Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FILE);
    Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FTP);
    Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.EMAIL);
    
    Возврат Результат;
    
КонецФункции

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

Почему разработчики 1С отказываются от почтового транспорта

Выясним предпосылки, из-за которых фирма «1С» постепенно исключает обмен почтой из типовых решений:

  1. Жесткие лимиты на размер вложений. Файлы обмена между базами (XML, упакованный в zip) при начальной синхронизации или передаче больших объемов данных легко достигают десятков мегабайт. Почтовые серверы отклоняют или обрезают письма с вложениями более 10–25 МБ.
  2. Требования безопасности почтовых сервисов. Большинство публичных почтовых провайдеров отключили стандартную аутентификацию по обычному паролю через протоколы SMTP/POP3/IMAP, перейдя на OAuth 2.0 или пароли приложений. Спам-фильтры и механизмы greylisting часто блокируют письма автоматических рассылок, вызывая сбои и зависания регламентных заданий 1С.
  3. Строгий порядок следования пакетов. Механизм планов обмена критически зависит от нумерации сообщений. Если пакет с номером 5 задержится на почтовом сервере, а пакет с номером 6 придет раньше, синхронизация прерывается с ошибкой до прихода недостающего номера. Почтовый протокол не гарантирует строгую очередность доставки.

Способ 1: Принудительная настройка почты через регистр сведений

Если для бизнес-процесса необходима именно электронная почта, а конфигурация находится на поддержке без возможности изменения (или является базовой версией), обойти ограничение пользовательского интерфейса можно программно. Все настройки каналов связи БСП сохраняет в регистре сведений НастройкиТранспортаОбмена.

Разберем по шагам, как задействовать почту с помощью внешней обработки, не меняя код конфигурации:

  1. Создаем внешнюю обработку и открываем форму настройки.
  2. Получаем набор записей или менеджер записи регистра НастройкиТранспортаОбмена для нужного узла плана обмена.
  3. Устанавливаем основной транспорт и заполняем параметры подключения.

Посмотрим на пример программного кода, который принудительно включает почтовый транспорт для созданного узла обмена:


&НаСервере
Процедура ВключитьОбменПоПочтеНаСервере(УзелОбмена, АдресПочты, СерверВходящей, СерверИсходящей, Логин, Пароль)
    
    МенеджерЗаписи = РегистрыСведений.НастройкиТранспортаОбмена.СоздатьМенеджерЗаписи();
    МенеджерЗаписи.Узел = УзелОбмена;
    МенеджерЗаписи.Прочитать();
    
    // Устанавливаем основной транспорт сообщений
    МенеджерЗаписи.ВидТранспорта = Перечисления.ВидыТранспортаСообщенийОбмена.EMAIL;
    
    // Заполняем реквизиты почтового подключения
    МенеджерЗаписи.EMAILМаксимальныйДопустимыйРазмерСообщения = 10485760; // 10 МБ
    МенеджерЗаписи.EMAILСжиматьФайлИсходящегоСообщения = Истина;
    МенеджерЗаписи.EMAILУчетнаяЗапись = ""; // Имя или ссылка на учетную запись БСП, если используется
    
    // Записываем настройки в базу данных
    МенеджерЗаписи.Записать(Истина);
    
    Сообщить("Транспорт EMAIL успешно принудительно активирован для узла: " + Строка(УзелОбмена));
    
КонецПроцедуры

После прямой записи в регистр типовые фоновые задания и процедуры выгрузки БСП подхватят значение EMAIL и будут отправлять и принимать пакеты по стандартным алгоритмам, заложенным в конфигурации.

Способ 2: Переопределение через механизм расширений

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


&Вместо("ИспользуемыеТранспортыСообщенийОбмена")
Функция Расш_ИспользуемыеТранспортыСообщенийОбмена()
    
    Результат = ПродолжитьВызов();
    Если Результат.Найти(Перечисления.ВидыТранспортаСообщенийОбмена.EMAIL) = Неопределено Тогда
        Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.EMAIL);
    КонецЕсли;
    Возврат Результат;
    
КонецФункции

После подключения расширения мастер настройки синхронизации данных вновь начнет отображать шаг конфигурации почтового транспорта.

Способ 3: Надежные альтернативы почте для базовых версий

Рассмотрим альтернативные пути реализации связи между территориально разделенными базами данных, которые поддерживаются типовым функционалом «из коробки» и избавляют от проблем почтовых фильтров:

  1. Обмен через локальный каталог с облачной синхронизацией. В настройках синхронизации выбирается стандартный транспорт FILE (каталог обмена). В качестве каталога указывается папка, синхронизируемая клиентом облачного хранилища (Яндекс Диск, Облако Mail.ru или другое решение). Файлы обмена синхронизируются внешним приложением без ограничений почтовых серверов, сохраняя полную совместимость с базовыми версиями 1С.
  2. Использование FTP-соединения. Транспорт FTP практически всегда присутствует в функции ИспользуемыеТранспортыСообщенийОбмена(). Настройка собственного или арендованного FTP/FTPS-сервера обеспечивает стабильную передачу файлов любого размера без необходимости доработки конфигурации или написания внешних обработок.

Таким образом, отказ от почтового обмена в интерфейсе современных конфигураций 1С обусловлен низкой надежностью протоколов SMTP/POP3 для передачи критичных данных, однако низкоуровневая поддержка в БСП сохранена, и при необходимости транспорт EMAIL активируется прямой записью в регистр настроек.

← На главную