Автоматизация директ-маркетинга (на примере ООО "Дело Системы")

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



?ойИнформации <> Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты Тогда

Если ПустаяСтрока(Адрес) Тогда

ПолучитьПредставлениеИВсюКонтактнуюИнформациюКонтакта(Контакт, "", Адрес,ТипКонтактнойИнформации);

КонецЕсли;

Возврат;

КонецЕсли;

// Для адреса электронной почты проверим, введен он или нет

Если Найти(Адрес, "@") <> 0 Тогда

Возврат;

КонецЕсли;

Адреса = ПолучитьНаименованиеИАдресаЭлектроннойПочтыКонтакта(Контакт);

Если Адреса 0 Тогда

Элемент = Адреса.Адреса.Получить(0);

Адрес = Элемент.Значение;

КонецЕсли;

КонецПроцедуры

//Формирует строку-представление списка участников взаимодействия //

Процедура СформироватьСписокУчастников(Объект) Экспорт

Объект.СписокУчастников = "";

Для Каждого Участник Из Объект.Участники Цикл

Объект.СписокУчастников = Объект.СписокУчастников + ?(Объект.СписокУчастников = "","","; ") + Участник.ПредставлениеКонтакта;

КонецЦикла;

КонецПроцедуры

Процедура ПолучитьПисьма(УчетнаяЗапись, ЕстьОшибки, СтрОшибка, Получено)

// -----------------------------------------------------------------

// Сформируем почтовый профиль и подключимся к почтовому серверу

Профиль = ЭлектроннаяПочта.СформироватьИнтернетПрофиль(УчетнаяЗапись);

Почта = Новый ИнтернетПочта;

Попытка

Почта.Подключиться(Профиль);

Исключение

ЕстьОшибки = Истина;

СтрОшибка = ПолучитьОписаниеОшибки(ИнформацияОбОшибке());

Возврат;

КонецПопытки;

// -----------------------------------------------------------------

// Получим идентификаторы сообщений на сервере

Идентификаторы = Почта.ПолучитьИдентификаторы();

Если Идентификаторы.Количество() = 0 Тогда

// если на сервере сообщений нет, то удалим все записи по учетной записи в регистре сведений ИдентификаторыПолученныхЭлектронныхПисем

УдалитьИдентификаторыВсехРанееПолученныхПисем(УчетнаяЗапись);

Почта.Отключиться();

Возврат;

КонецЕсли;

// -----------------------------------------------------------------

// Определим какие сообщения нужно получать

ИдЗагружать = ПолучитьИдентификаторыПисемДляЗагрузки(Идентификаторы, УчетнаяЗапись);

Получено = 0;

Если ИдЗагружать.Количество() <> 0 Тогда

// Получим нужные сообщения

Сообщения = Почта.Выбрать(Ложь, ИдЗагружать);

// Запишем их

Для Каждого Сообщение Из Сообщения Цикл

ЗаписатьВходящееЭлектронноеПисьмо(УчетнаяЗапись, Сообщение, УчетнаяЗапись.ОтветственныйЗаОбработкуПисем);

КонецЦикла;

Получено = Сообщения.Количество();

КонецЕсли;

// -----------------------------------------------------------------

// Удалим ненужные сообщения на сервере

ОставлятьКопии = (УчетнаяЗапись.ОставлятьКопииСообщенийНаСервере <> 0);

ОставлятьДней = УчетнаяЗапись.ОставлятьКопииСообщенийНаСервере;

Если Не ОставлятьКопии Тогда

// удалять все

масУдалять = Идентификаторы;

УдалятьВсе = Истина;

Иначе

масУдалять = ПолучитьИдентификаторыПисемДляУдаленияНаСервере(Идентификаторы, УчетнаяЗапись, ТекущаяДата() - ОставлятьДней*24*60*60);

УдалятьВсе = Ложь;

КонецЕсли;

Если масУдалять.Количество() <> 0 Тогда

Почта.УдалитьСообщения(масУдалять);

КонецЕсли;

// -----------------------------------------------------------------

// Удалим ненужные идентификаторы в регистре сведений

Если УдалятьВсе Тогда

УдалитьИдентификаторыВсехРанееПолученныхПисем(УчетнаяЗапись);

Иначе

УдалитьИдентификаторыРанееПолученныхПисем(УчетнаяЗапись, Идентификаторы, масУдалять);

КонецЕсли;

// -----------------------------------------------------------------

// Отключимся от почтового сервера

Почта.Отключиться();

КонецПроцедуры

Процедура ЗаписатьВходящееЭлектронноеПисьмо(УчетнаяЗапись, Сообщение, ОтветственныйЗаОбработкуПисем)

НачатьТранзакцию();

// Создадим документ и заполним его реквизиты на основе сообщения

Письмо = Документы.ЭлектронноеПисьмоВходящее.СоздатьДокумент();

Письмо.УчетнаяЗапись = УчетнаяЗапись;

ЗаполнитьДокументЭлектронноеПисьмоВходящее(Письмо, Сообщение);

// Найдем основание письма, проставим предмет и определим контакты

ЗаполнитьПредметИКонтакты(Письмо);

// Заполним ответственного

Ответственный = ?(ЗначениеЗаполнено(Письмо.Предмет), Письмо.Предмет.Ответственный, Неопределено);

Если Не ЗначениеЗаполнено(Ответственный) Тогда

Ответственный = ОтветственныйЗаОбработкуПисем;

КонецЕсли;

Письмо.Ответственный = Ответственный;

// Запишем письмо

Письмо.Записать();

МассивИменВложений = Новый Массив;

//Запишем вложения

Для Каждого "ожение Из Сообщение.Вложения Цикл

МассивИменВложений.Добавить(Вложение.ИмяФайла);

КонецЦикла;

СоответствиеВложенийИПодписей = ФайловыеФункцииКлиентСервер.ПолучитьСоответствиеФайловИПодписей(МассивИменВложений);

Для каждого ЭлементСоответствия Из СоответствиеВложенийИПодписей Цикл

НайденноеВложение= Неопределено;

МассивПодписей= Новый Массив;

Для каждого "ожение Из Сообщение.Вложения Цикл

Если "ожение.ИмяФайла = ЭлементСоответствия.Ключ Тогда

НайденноеВложение = "ожение;

Прервать;

КонецЕсли

КонецЦикла;

Если НайденноеВложение 0 Тогда

Для каждого "ожение Из Сообщение.Вложения Цикл

Если ЭлементСоответствия.Значение. Найти(Вложение.ИмяФайла) <> Неопределено Тогда

МассивПодписей.Добавить(Вложение);

КонецЕсли;