Автоматизация директ-маркетинга (на примере ООО "Дело Системы")
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
.Представление = Стр.Представление;
новСтр.НаименованиеКонтакта = Стр.Наименование + ?(ПустаяСтрока(Стр.НаименованиеВладельца), "", " (" + Стр.НаименованиеВладельца + ")");
новСтр.ИмяСправочника = Стр.Контакт.Метаданные().Имя;
КонецЦикла;
КонецПроцедуры
// Получает представление и всю контактную информацию контакта. //
Процедура ПолучитьПредставлениеИВсюКонтактнуюИнформациюКонтакта(Контакт, Представление, СтрокаКИ,ТипКонтакнойИнформации = Неопределено) Экспорт
Представление = "";
СтрокаКИ = "";
Если Не ЗначениеЗаполнено(Контакт) Тогда
Возврат;
КонецЕсли;
ИмяТаблицы = Контакт.Метаданные().Имя;
ИмяПоляДляНаименованияВладельца = ПолучитьИмяПоляДляНаименованияВладельца(ИмяТаблицы);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|Таблица.Наименование,
|" + ИмяПоляДляНаименованияВладельца + " КАК НаименованиеВладельца,
|Таблица.КонтактнаяИнформация.(
|Тип,
|Представление
|)
|ИЗ
|Справочник." + ИмяТаблицы + " КАК Таблица
|ГДЕ
|Таблица.Ссылка = &Контакт" + ?(ТипКонтакнойИнформации = Неопределено,""," И Таблица.КонтактнаяИнформация.Тип = &ТипКонтактнойИнформации");
Запрос.УстановитьПараметр("Контакт", Контакт);
Запрос.УстановитьПараметр("ТипКонтактнойИнформации",ТипКонтакнойИнформации);
Выборка = Запрос.Выполнить().Выбрать();
Если Не Выборка.Следующий() Тогда
Возврат;
КонецЕсли;
Представление = Выборка.Наименование;
Если Не ПустаяСтрока(Выборка.НаименованиеВладельца) Тогда
Представление = Представление + " (" + Выборка.НаименованиеВладельца + ")";
КонецЕсли;
Для Каждого Стр Из Выборка.КонтактнаяИнформация.Выгрузить() Цикл
Если Стр.Тип <> Перечисления.ТипыКонтактнойИнформации.Другое Тогда
СтрокаКИ = СтрокаКИ + ?(ПустаяСтрока(СтрокаКИ), "", ", ") + Стр.Представление;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
// Выполняет поиск контактов по строке //
Функция ОсуществитьПоискКонтактовПоСтроке (Форма,ДляАдреснойКниги = Ложь) Экспорт
Форма.НайденныеКонтакты.Очистить();
Если ПустаяСтрока(Форма.СтрокаПоиска) Тогда
Возврат "";
КонецЕсли;
Если ПолнотекстовыйПоиск.ПолучитьРежим ПолнотекстовогоПоиска() = РежимПолнотекстовогоПоиска.Запретить Тогда
Возврат НСтр("ru = Использование индекса полнотекстового поиска данных запрещено!");
КонецЕсли;
масМетаданных = ПолучитьМассивМетаданныхКонтакты();
СписокПоиска = ПолнотекстовыйПоиск.СоздатьСписок(Форма.СтрокаПоиска, 101);
СписокПоиска.ОбластьПоиска = масМетаданных;
СписокПоиска.ПерваяЧасть();
КоличествоНайденныхЭлементов = СписокПоиска.Количество();
Если КоличествоНайденныхЭлементов = 0 Тогда
Возврат "";
КонецЕсли;
масСсылок = Новый Массив;
соотвОписание = Новый Соответствие;
Для Сч = 0 По Мин(КоличествоНайденныхЭлементов, 100)-1 Цикл
ЭлементСписка = СписокПоиска.Получить(Сч);
масСсылок.Добавить(ЭлементСписка.Значение);
соотвОписание.Вставить(ЭлементСписка.Значение, ЭлементСписка.Описание);
КонецЦикла;
Если ДляАдреснойКниги Тогда
ТекстЗапроса = ПолучитьТекстЗапросаПоискКонтактовПоСтрокеСEmail();
Иначе
ТекстЗапроса = ПолучитьТекстЗапросаПоискКонтактовПоСтроке();
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("масСсылок", масСсылок);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
новСтр = Форма.НайденныеКонтакты.Добавить();
новСтр.Ссылка = Выборка.Контакт;
новСтр.Представление = ?(ДляАдреснойКниги,Выборка.Представление,соотвОписание.Получить(Выборка.Контакт));
новСтр.НаименованиеКонтакта = Выборка.Наименование + ?(ПустаяСтрока(Выборка.НаименованиеВладельца), "", " (" + Выборка.НаименованиеВладельца + ")");
КонецЦикла;
Возврат ?(КоличествоНайденныхЭлементов < 101, "", НСтр("ru = Уточните параметры поиска. В списке отображены не все найденные контакты!"));
КонецФункции
// Заполняет табличную часть участники у документов Встреча и Запланированное взаимодействие.//
Процедура ЗаполнитьКонтактыДляВстречи(Контакты, Участники) Экспорт
Если Не КонтактыЗаполнены(Контакты) Тогда
Возврат;
КонецЕсли;
Для Каждого Стр Из Контакты Цикл
новСтр = Участники.Добавить();
Если ТипЗнч(Стр) = Тип("Структура") Тогда
новСтр.Контакт = Стр.Контакт;
новСтр.ПредставлениеКонтакта = Стр.Представление;
новСтр.КакСвязаться = Стр.Адрес;
Иначе
новСтр.Контакт = Стр;
КонецЕсли;
ДозаполнитьПоляКонтактов(новСтр.Контакт, новСтр.ПредставлениеКонтакта, новСтр.КакСвязаться);
КонецЦикла;
КонецПроцедуры
// Заполняет значения прочих полей в строках табличной части Участники документов взаимодействий. //
Процедура ДозаполнитьПоляКонтактов(Контакт, Представление, Адрес, ТипКонтактнойИнформации = Неопределено) Экспорт
Если Не ЗначениеЗаполнено(Контакт) Тогда
Возврат;
ИначеЕсли Не ПустаяСтрока(Представление) И Не ПустаяСтрока(Адрес) Тогда
Возврат;
КонецЕсли;
// Заполним поле представление
Если ПустаяСтрока(Представление) Тогда
Представление = ?(ЗначениеЗаполнено(Контакт),ОбщегоНазначения.ПолучитьЗначениеРеквизита(Контакт,"Наименование"),"");
КонецЕсли;
// Для всех типов кроме электронной почты
Если ТипКонтакт?/p>