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

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

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



.Представление = Стр.Представление;

новСтр.НаименованиеКонтакта = Стр.Наименование + ?(ПустаяСтрока(Стр.НаименованиеВладельца), "", " (" + Стр.НаименованиеВладельца + ")");

новСтр.ИмяСправочника = Стр.Контакт.Метаданные().Имя;

КонецЦикла;

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

// Получает представление и всю контактную информацию контакта. //

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

Представление = "";

СтрокаКИ = "";

Если Не ЗначениеЗаполнено(Контакт) Тогда

Возврат;

КонецЕсли;

ИмяТаблицы = Контакт.Метаданные().Имя;

ИмяПоляДляНаименованияВладельца = ПолучитьИмяПоляДляНаименованияВладельца(ИмяТаблицы);

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

|Таблица.Наименование,

|" + ИмяПоляДляНаименованияВладельца + " КАК НаименованиеВладельца,

|Таблица.КонтактнаяИнформация.(

|Тип,

|Представление

|)

|ИЗ

|Справочник." + ИмяТаблицы + " КАК Таблица

|ГДЕ

|Таблица.Ссылка = &Контакт" + ?(ТипКонтакнойИнформации = Неопределено,""," И Таблица.КонтактнаяИнформация.Тип = &ТипКонтактнойИнформации");

Запрос.УстановитьПараметр("Контакт", Контакт);

Запрос.УстановитьПараметр("ТипКонтактнойИнформации",ТипКонтакнойИнформации);

Выборка = Запрос.Выполнить().Выбрать();

Если Не Выборка.Следующий() Тогда

Возврат;

КонецЕсли;

Представление = Выборка.Наименование;

Если Не ПустаяСтрока(Выборка.НаименованиеВладельца) Тогда

Представление = Представление + " (" + Выборка.НаименованиеВладельца + ")";

КонецЕсли;

Для Каждого Стр Из Выборка.КонтактнаяИнформация.Выгрузить() Цикл

Если Стр.Тип <> Перечисления.ТипыКонтактнойИнформации.Другое Тогда

СтрокаКИ = СтрокаКИ + ?(ПустаяСтрока(СтрокаКИ), "", ", ") + Стр.Представление;

КонецЕсли;

КонецЦикла;

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

// Выполняет поиск контактов по строке //

Функция ОсуществитьПоискКонтактовПоСтроке (Форма,ДляАдреснойКниги = Ложь) Экспорт

Форма.НайденныеКонтакты.Очистить();

Если ПустаяСтрока(Форма.СтрокаПоиска) Тогда

Возврат "";

КонецЕсли;

Если ПолнотекстовыйПоиск.ПолучитьРежим ПолнотекстовогоПоиска() = РежимПолнотекстовогоПоиска.Запретить Тогда

Возврат НСтр("ru = Использование индекса полнотекстового поиска данных запрещено!");

КонецЕсли;

масМетаданных = ПолучитьМассивМетаданныхКонтакты();

СписокПоиска = ПолнотекстовыйПоиск.СоздатьСписок(Форма.СтрокаПоиска, 101);

СписокПоиска.ОбластьПоиска = масМетаданных;

СписокПоиска.ПерваяЧасть();

КоличествоНайденныхЭлементов = СписокПоиска.Количество();

Если КоличествоНайденныхЭлементов = 0 Тогда

Возврат "";

КонецЕсли;

масСсылок = Новый Массив;

соотвОписание = Новый Соответствие;

Для Сч = 0 По Мин(КоличествоНайденныхЭлементов, 100)-1 Цикл

ЭлементСписка = СписокПоиска.Получить(Сч);

масСсылок.Добавить(ЭлементСписка.Значение);

соотвОписание.Вставить(ЭлементСписка.Значение, ЭлементСписка.Описание);

КонецЦикла;

Если ДляАдреснойКниги Тогда

ТекстЗапроса = ПолучитьТекстЗапросаПоискКонтактовПоСтрокеСEmail();

Иначе

ТекстЗапроса = ПолучитьТекстЗапросаПоискКонтактовПоСтроке();

КонецЕсли;

Запрос = Новый Запрос;

Запрос.Текст = ТекстЗапроса;

Запрос.УстановитьПараметр("масСсылок", масСсылок);

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл

новСтр = Форма.НайденныеКонтакты.Добавить();

новСтр.Ссылка = Выборка.Контакт;

новСтр.Представление = ?(ДляАдреснойКниги,Выборка.Представление,соотвОписание.Получить(Выборка.Контакт));

новСтр.НаименованиеКонтакта = Выборка.Наименование + ?(ПустаяСтрока(Выборка.НаименованиеВладельца), "", " (" + Выборка.НаименованиеВладельца + ")");

КонецЦикла;

Возврат ?(КоличествоНайденныхЭлементов < 101, "", НСтр("ru = Уточните параметры поиска. В списке отображены не все найденные контакты!"));

КонецФункции

// Заполняет табличную часть участники у документов Встреча и Запланированное взаимодействие.//

Процедура ЗаполнитьКонтактыДляВстречи(Контакты, Участники) Экспорт

Если Не КонтактыЗаполнены(Контакты) Тогда

Возврат;

КонецЕсли;

Для Каждого Стр Из Контакты Цикл

новСтр = Участники.Добавить();

Если ТипЗнч(Стр) = Тип("Структура") Тогда

новСтр.Контакт = Стр.Контакт;

новСтр.ПредставлениеКонтакта = Стр.Представление;

новСтр.КакСвязаться = Стр.Адрес;

Иначе

новСтр.Контакт = Стр;

КонецЕсли;

ДозаполнитьПоляКонтактов(новСтр.Контакт, новСтр.ПредставлениеКонтакта, новСтр.КакСвязаться);

КонецЦикла;

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

// Заполняет значения прочих полей в строках табличной части Участники документов взаимодействий. //

Процедура ДозаполнитьПоляКонтактов(Контакт, Представление, Адрес, ТипКонтактнойИнформации = Неопределено) Экспорт

Если Не ЗначениеЗаполнено(Контакт) Тогда

Возврат;

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

Возврат;

КонецЕсли;

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

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

Представление = ?(ЗначениеЗаполнено(Контакт),ОбщегоНазначения.ПолучитьЗначениеРеквизита(Контакт,"Наименование"),"");

КонецЕсли;

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

Если ТипКонтакт?/p>