При настройке синхронизации данных между типовыми конфигурациями (например, между «1С:Бухгалтерией предприятия» и «1С:Управление нашей фирмой», особенно в базовых версиях) специалисты часто сталкиваются с ситуацией, когда в мастере настройки обмена отсутствует выбор канала передачи через электронную почту (EMAIL). В окне выбора транспорта доступны только каталог, FTP или прямое подключение. Разберем технические причины такого поведения подсистемы обмена БСП (Библиотека стандартных подсистем), выясним, куда исчез функционал, и рассмотрим практические способы решения этой задачи.
Проанализируем программную часть конфигурации. Если изучить состав объектов метаданных, перечисление ВидыТранспортаСообщенийОбмена по-прежнему содержит значение EMAIL. Низкоуровневые механизмы отправки и получения почтовых вложений из состава БСП также не удалены разработчиками платформы. Однако мастер настройки синхронизации данных формирует список доступных каналов динамически.
Для каждого плана обмена состав разрешенных транспортов жестко зафиксирован в модуле менеджера плана обмена в функции ИспользуемыеТранспортыСообщенийОбмена(). Посмотрим на типовой пример кода из конфигурации «Бухгалтерия предприятия»:
Функция ИспользуемыеТранспортыСообщенийОбмена() Экспорт
Результат = Новый Массив;
Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FILE);
Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FTP);
Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.COM);
Возврат Результат;
КонецФункции
Как видим, разработчики конфигурации исключили строку добавления почтового транспорта в результирующий массив. Помощник настройки, опрашивая эту функцию, просто скрывает шаг с вводом параметров почтового ящика. В других конфигурациях или версиях (например, в ряде релизов «1С:Управление торговлей») данная функция может возвращать полный список либо обращаться к общему модулю:
Функция ИспользуемыеТранспортыСообщенийОбмена() Экспорт
Результат = Новый Массив;
Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.COM);
Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.WS);
Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FILE);
Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FTP);
Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.EMAIL);
Возврат Результат;
КонецФункции
Таким образом, почтовый транспорт не ликвидирован из ядра 1С, но заблокирован на уровне правил конкретных планов обмена.
Выясним предпосылки, из-за которых фирма «1С» постепенно исключает обмен почтой из типовых решений:
Если для бизнес-процесса необходима именно электронная почта, а конфигурация находится на поддержке без возможности изменения (или является базовой версией), обойти ограничение пользовательского интерфейса можно программно. Все настройки каналов связи БСП сохраняет в регистре сведений НастройкиТранспортаОбмена.
Разберем по шагам, как задействовать почту с помощью внешней обработки, не меняя код конфигурации:
НастройкиТранспортаОбмена для нужного узла плана обмена.Посмотрим на пример программного кода, который принудительно включает почтовый транспорт для созданного узла обмена:
&НаСервере
Процедура ВключитьОбменПоПочтеНаСервере(УзелОбмена, АдресПочты, СерверВходящей, СерверИсходящей, Логин, Пароль)
МенеджерЗаписи = РегистрыСведений.НастройкиТранспортаОбмена.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Узел = УзелОбмена;
МенеджерЗаписи.Прочитать();
// Устанавливаем основной транспорт сообщений
МенеджерЗаписи.ВидТранспорта = Перечисления.ВидыТранспортаСообщенийОбмена.EMAIL;
// Заполняем реквизиты почтового подключения
МенеджерЗаписи.EMAILМаксимальныйДопустимыйРазмерСообщения = 10485760; // 10 МБ
МенеджерЗаписи.EMAILСжиматьФайлИсходящегоСообщения = Истина;
МенеджерЗаписи.EMAILУчетнаяЗапись = ""; // Имя или ссылка на учетную запись БСП, если используется
// Записываем настройки в базу данных
МенеджерЗаписи.Записать(Истина);
Сообщить("Транспорт EMAIL успешно принудительно активирован для узла: " + Строка(УзелОбмена));
КонецПроцедуры
После прямой записи в регистр типовые фоновые задания и процедуры выгрузки БСП подхватят значение EMAIL и будут отправлять и принимать пакеты по стандартным алгоритмам, заложенным в конфигурации.
Если версия платформы и режим совместимости конфигурации поддерживают механизм расширений, переопределить доступность транспорта можно без снятия основной конфигурации с поддержки. Для этого в расширении перехватываем функцию менеджера плана обмена:
&Вместо("ИспользуемыеТранспортыСообщенийОбмена")
Функция Расш_ИспользуемыеТранспортыСообщенийОбмена()
Результат = ПродолжитьВызов();
Если Результат.Найти(Перечисления.ВидыТранспортаСообщенийОбмена.EMAIL) = Неопределено Тогда
Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.EMAIL);
КонецЕсли;
Возврат Результат;
КонецФункции
После подключения расширения мастер настройки синхронизации данных вновь начнет отображать шаг конфигурации почтового транспорта.
Рассмотрим альтернативные пути реализации связи между территориально разделенными базами данных, которые поддерживаются типовым функционалом «из коробки» и избавляют от проблем почтовых фильтров:
FILE (каталог обмена). В качестве каталога указывается папка, синхронизируемая клиентом облачного хранилища (Яндекс Диск, Облако Mail.ru или другое решение). Файлы обмена синхронизируются внешним приложением без ограничений почтовых серверов, сохраняя полную совместимость с базовыми версиями 1С.FTP практически всегда присутствует в функции ИспользуемыеТранспортыСообщенийОбмена(). Настройка собственного или арендованного FTP/FTPS-сервера обеспечивает стабильную передачу файлов любого размера без необходимости доработки конфигурации или написания внешних обработок.Таким образом, отказ от почтового обмена в интерфейсе современных конфигураций 1С обусловлен низкой надежностью протоколов SMTP/POP3 для передачи критичных данных, однако низкоуровневая поддержка в БСП сохранена, и при необходимости транспорт EMAIL активируется прямой записью в регистр настроек.