Автоматизация директ-маркетинга (на примере ООО "Дело Системы")
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
?ойИнформации <> Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты Тогда
Если ПустаяСтрока(Адрес) Тогда
ПолучитьПредставлениеИВсюКонтактнуюИнформациюКонтакта(Контакт, "", Адрес,ТипКонтактнойИнформации);
КонецЕсли;
Возврат;
КонецЕсли;
// Для адреса электронной почты проверим, введен он или нет
Если Найти(Адрес, "@") <> 0 Тогда
Возврат;
КонецЕсли;
Адреса = ПолучитьНаименованиеИАдресаЭлектроннойПочтыКонтакта(Контакт);
Если Адреса 0 Тогда
Элемент = Адреса.Адреса.Получить(0);
Адрес = Элемент.Значение;
КонецЕсли;
КонецПроцедуры
//Формирует строку-представление списка участников взаимодействия //
Процедура СформироватьСписокУчастников(Объект) Экспорт
Объект.СписокУчастников = "";
Для Каждого Участник Из Объект.Участники Цикл
Объект.СписокУчастников = Объект.СписокУчастников + ?(Объект.СписокУчастников = "","","; ") + Участник.ПредставлениеКонтакта;
КонецЦикла;
КонецПроцедуры
Процедура ПолучитьПисьма(УчетнаяЗапись, ЕстьОшибки, СтрОшибка, Получено)
// -----------------------------------------------------------------
// Сформируем почтовый профиль и подключимся к почтовому серверу
Профиль = ЭлектроннаяПочта.СформироватьИнтернетПрофиль(УчетнаяЗапись);
Почта = Новый ИнтернетПочта;
Попытка
Почта.Подключиться(Профиль);
Исключение
ЕстьОшибки = Истина;
СтрОшибка = ПолучитьОписаниеОшибки(ИнформацияОбОшибке());
Возврат;
КонецПопытки;
// -----------------------------------------------------------------
// Получим идентификаторы сообщений на сервере
Идентификаторы = Почта.ПолучитьИдентификаторы();
Если Идентификаторы.Количество() = 0 Тогда
// если на сервере сообщений нет, то удалим все записи по учетной записи в регистре сведений ИдентификаторыПолученныхЭлектронныхПисем
УдалитьИдентификаторыВсехРанееПолученныхПисем(УчетнаяЗапись);
Почта.Отключиться();
Возврат;
КонецЕсли;
// -----------------------------------------------------------------
// Определим какие сообщения нужно получать
ИдЗагружать = ПолучитьИдентификаторыПисемДляЗагрузки(Идентификаторы, УчетнаяЗапись);
Получено = 0;
Если ИдЗагружать.Количество() <> 0 Тогда
// Получим нужные сообщения
Сообщения = Почта.Выбрать(Ложь, ИдЗагружать);
// Запишем их
Для Каждого Сообщение Из Сообщения Цикл
ЗаписатьВходящееЭлектронноеПисьмо(УчетнаяЗапись, Сообщение, УчетнаяЗапись.ОтветственныйЗаОбработкуПисем);
КонецЦикла;
Получено = Сообщения.Количество();
КонецЕсли;
// -----------------------------------------------------------------
// Удалим ненужные сообщения на сервере
ОставлятьКопии = (УчетнаяЗапись.ОставлятьКопииСообщенийНаСервере <> 0);
ОставлятьДней = УчетнаяЗапись.ОставлятьКопииСообщенийНаСервере;
Если Не ОставлятьКопии Тогда
// удалять все
масУдалять = Идентификаторы;
УдалятьВсе = Истина;
Иначе
масУдалять = ПолучитьИдентификаторыПисемДляУдаленияНаСервере(Идентификаторы, УчетнаяЗапись, ТекущаяДата() - ОставлятьДней*24*60*60);
УдалятьВсе = Ложь;
КонецЕсли;
Если масУдалять.Количество() <> 0 Тогда
Почта.УдалитьСообщения(масУдалять);
КонецЕсли;
// -----------------------------------------------------------------
// Удалим ненужные идентификаторы в регистре сведений
Если УдалятьВсе Тогда
УдалитьИдентификаторыВсехРанееПолученныхПисем(УчетнаяЗапись);
Иначе
УдалитьИдентификаторыРанееПолученныхПисем(УчетнаяЗапись, Идентификаторы, масУдалять);
КонецЕсли;
// -----------------------------------------------------------------
// Отключимся от почтового сервера
Почта.Отключиться();
КонецПроцедуры
Процедура ЗаписатьВходящееЭлектронноеПисьмо(УчетнаяЗапись, Сообщение, ОтветственныйЗаОбработкуПисем)
НачатьТранзакцию();
// Создадим документ и заполним его реквизиты на основе сообщения
Письмо = Документы.ЭлектронноеПисьмоВходящее.СоздатьДокумент();
Письмо.УчетнаяЗапись = УчетнаяЗапись;
ЗаполнитьДокументЭлектронноеПисьмоВходящее(Письмо, Сообщение);
// Найдем основание письма, проставим предмет и определим контакты
ЗаполнитьПредметИКонтакты(Письмо);
// Заполним ответственного
Ответственный = ?(ЗначениеЗаполнено(Письмо.Предмет), Письмо.Предмет.Ответственный, Неопределено);
Если Не ЗначениеЗаполнено(Ответственный) Тогда
Ответственный = ОтветственныйЗаОбработкуПисем;
КонецЕсли;
Письмо.Ответственный = Ответственный;
// Запишем письмо
Письмо.Записать();
МассивИменВложений = Новый Массив;
//Запишем вложения
Для Каждого "ожение Из Сообщение.Вложения Цикл
МассивИменВложений.Добавить(Вложение.ИмяФайла);
КонецЦикла;
СоответствиеВложенийИПодписей = ФайловыеФункцииКлиентСервер.ПолучитьСоответствиеФайловИПодписей(МассивИменВложений);
Для каждого ЭлементСоответствия Из СоответствиеВложенийИПодписей Цикл
НайденноеВложение= Неопределено;
МассивПодписей= Новый Массив;
Для каждого "ожение Из Сообщение.Вложения Цикл
Если "ожение.ИмяФайла = ЭлементСоответствия.Ключ Тогда
НайденноеВложение = "ожение;
Прервать;
КонецЕсли
КонецЦикла;
Если НайденноеВложение 0 Тогда
Для каждого "ожение Из Сообщение.Вложения Цикл
Если ЭлементСоответствия.Значение. Найти(Вложение.ИмяФайла) <> Неопределено Тогда
МассивПодписей.Добавить(Вложение);
КонецЕсли;