В демонстрационную конфигурацию "Обмен данными" помещен пример обмена данными с удаленными складами по электронной почте. Для использования электронной почты в обмене данными нужно в настройках узлов выбрать "Обмен по электронной почте". Для двух узлов, участвующих в обмене, публичный адрес обмена должен быть одинаков. В качестве иллюстрации использования электронной почты был выбран план обмена УдаленныеСклады.
При выгрузке данных формируется файл с именем, в котором указывается отправляющий и принимающий узлы, а также порядковый номер сообщения обмена. Это имя также указывается в теме электронного письма с префиксом "СООБЩЕНИЕ_ОБМЕНА".
// Формируем сообщение обмена
Сообщение = Новый ИнтернетПочтовоеСообщение;
Сообщение.Тема = "СООБЩЕНИЕ_ОБМЕНА: " + ИмяФайлаСообщения;
Сформированный файл прикрепляется к письму и отправляется на указанный в поле "Адрес обмена" адрес.
ФайлСообщения = Новый Файл(ИмяФайлаСообщения);
// Создаем вложение с файлом обмена
Сообщение.Вложения.Добавить(ИмяФайла, ФайлСообщения.Имя);
Почта = Новый ИнтернетПочта;
Попытка
Почта.Подключиться(Профиль);
// Отправляем сообщение с файлом обмена
Почта.Послать(Сообщение);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Почта.Отключиться();
Для приема сообщений обмена из почтового ящика выбираются все письма без удаления их с сервера.
// Получаем все сообщения из почтового ящика
МассивСообщений = Почта.Выбрать(Ложь); // Ложь = без удаления сообщений с сервера
Далее, по теме письма ищутся письма с префиксом "СООБЩЕНИЕ_ОБМЕНА", которые проверяются на принадлежность этого сообщения участвующих в обмене узлов. Все эти сообщения копируются в отдельный массив (МассивСообщенийОбмена) для последующего удаления их с сервера. Данный метод гарантирует сохранность личных писем, а также сообщений обмена относящихся к другим узлам, что позволяет использовать один и тот же почтовый ящик, как для личной переписки, так и для обмена данными с разными узлами.
Поскольку сообщений обмена для двух узлов может быть больше одного, сразу же ищется сообщение с максимальным порядковым номером. Затем файл обмена сохраняется из вложения во временный файл, откуда и происходит загрузка данных. Делается допущение, что в сообщении обмена одно вложение.
// Записываем файл обмена во временный файл
МассивСообщений[ИндексСообщения].Вложения[0].Данные.Записать(ИмяФайла);
// Удаляем все сообщения обмена с сервера для узлов, участвующих в обмене
Почта.УдалитьСообщения(МассивСообщенийОбмена);
Почта.Отключиться();
Перед загрузкой данных происходит выборочное удаление отобранных писем с сервера.
Дополнительную информацию об обмене данными можно найти в помощнике настройки механизма обмена в демонстрационной конфигурации "Обмен данными".