#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Взаимодействия.ОбработатьНеобходимостьОтображенияГруппПользователей(ЭтотОбъект);
Взаимодействия.ДобавитьСтраницыФормыПодбораКонтактов(ЭтотОбъект);
ЗаполнитьТаблицуПолучателей();
УстановитьГруппуПоУмолчанию();
ВидыКонтактнойИнформации = УправлениеКонтактнойИнформацией.ВидыКонтактнойИнформацииОбъекта(
Справочники.Пользователи.ПустаяСсылка(), Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
Если ВидыКонтактнойИнформации.Количество() > 0 Тогда
ВидЭлектроннаяПочта = ВидыКонтактнойИнформации[0].Ссылка;
Иначе
ВидЭлектроннаяПочта = Неопределено;
КонецЕсли;
Если СписокПользователей.Параметры.Элементы.Найти("ЭлектроннаяПочта") <> Неопределено Тогда
СписокПользователей.Параметры.УстановитьЗначениеПараметра("ЭлектроннаяПочта", ВидЭлектроннаяПочта);
КонецЕсли;
Предмет = Параметры.Предмет;
Взаимодействия.ЗаполнитьКонтактыПоПредмету(Элементы, Предмет, КонтактыПоПредмету, Истина);
ВариантыПоиска = "Везде";
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ОбновитьМенюВариантовПоиска();
УправлениеСтраницами();
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
ВзаимодействияКлиент.ОтработатьОповещение(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
КонецПроцедуры
&НаСервере
Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
ПриИзмененииТолькоКонтактыСАдресами(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура СтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
УправлениеСтраницами();
КонецПроцедуры
&НаКлиенте
Процедура КонтактНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.ПолучателиПисьма.ТекущиеДанные;
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("ТолькоEmail", Истина);
ПараметрыОткрытия.Вставить("ТолькоТелефон", Ложь);
ПараметрыОткрытия.Вставить("ЗаменятьПустыеАдресИПредставление", Истина);
ПараметрыОткрытия.Вставить("ДляФормыУточненияКонтактов", Ложь);
ПараметрыОткрытия.Вставить("ИдентификаторФормы", УникальныйИдентификатор);
ВзаимодействияКлиент.ВыбратьКонтакт(Предмет, ТекущиеДанные.Адрес, ТекущиеДанные.Представление,
ТекущиеДанные.Контакт,ПараметрыОткрытия)
КонецПроцедуры
&НаКлиенте
Процедура ПолучателиПисьмаПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
Если НоваяСтрока Тогда
Элемент.ТекущиеДанные.Группа = "Кому";
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПолучателиПисьмаПриАктивизацииЯчейки(Элемент)
Если Элемент.ТекущийЭлемент.Имя = "Адрес" Тогда
Элементы.Адрес.СписокВыбора.Очистить();
ТекущиеДанные = Элементы.ПолучателиПисьма.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если НЕ ПустаяСтрока(ТекущиеДанные.СписокАдресов) Тогда
Элементы.Адрес.СписокВыбора.ЗагрузитьЗначения(
СтрРазделить(ТекущиеДанные.СписокАдресов, ";"));
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтактыПоПредметуВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ДобавитьПолучателяИзСпискаПоПредмету();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СписокСправочникаВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Не ЗначениеЗаполнено(ВыбраннаяСтрока) Тогда
Возврат;
КонецЕсли;
Результат = ВзаимодействияВызовСервера.НаименованиеИАдресаЭлектроннойПочтыКонтакта(ВыбраннаяСтрока);
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Адрес = Результат.Адреса[0];
СписокАдресов = СтрСоединить(Результат.Адреса.ВыгрузитьЗначения(), ";");
ДобавитьПолучателя(Адрес, Результат.Наименование, ВыбраннаяСтрока, СписокАдресов);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СписокВладелецПриАктивизацииСтроки(Элемент)
ВзаимодействияКлиент.КонтактВладелецПриАктивизацииСтроки(Элемент, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура НайденныеКонтактыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ТекущиеДанные = Элементы.НайденныеКонтакты.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Результат = ВзаимодействияВызовСервера.НаименованиеИАдресаЭлектроннойПочтыКонтакта(ТекущиеДанные.Ссылка);
Если Результат <> Неопределено И Результат.Адреса.Количество() > 0 Тогда
СписокАдресов = СтрСоединить(Результат.Адреса.ВыгрузитьЗначения(), ";");
Иначе
СписокАдресов = "";
КонецЕсли;
ДобавитьПолучателя(ТекущиеДанные.Представление, ТекущиеДанные.НаименованиеКонтакта, ТекущиеДанные.Ссылка, СписокАдресов);
КонецПроцедуры
&НаКлиенте
Процедура ГруппыПользователейПриАктивизацииСтроки(Элемент)
СписокПользователей.Параметры.УстановитьЗначениеПараметра("ГруппаПользователей", Элементы.ГруппыПользователей.ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ПоказыватьТолькоКонтактыСАдресамиПриИзменении(Элемент)
ПриИзмененииТолькоКонтактыСАдресами(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура КомандаОКВыполнить()
Результат = Новый Массив;
Для Каждого СтрокаТаблицы Из ПолучателиПисьма Цикл
Если ПустаяСтрока(СтрокаТаблицы.Адрес) Тогда
Продолжить;
КонецЕсли;
Группа = ?(ПустаяСтрока(СтрокаТаблицы.Группа), "Кому", СтрокаТаблицы.Группа);
Контакт = Новый Структура;
Контакт.Вставить("Адрес", СтрокаТаблицы.Адрес);
Контакт.Вставить("Представление", СтрокаТаблицы.Представление);
Контакт.Вставить("Контакт", СтрокаТаблицы.Контакт);
Контакт.Вставить("Группа", Группа);
Результат.Добавить(Контакт);
КонецЦикла;
ОповеститьОВыборе(Результат);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьИзСпискаПредметовВыполнить()
ДобавитьПолучателяИзСпискаПоПредмету();
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьГруппуКомуВыполнить()
ИзменитьГруппу("Кому");
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьГруппуКопииВыполнить()
ИзменитьГруппу("Копии");
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьГруппуСкрытыеВыполнить()
ИзменитьГруппу("Скрытые");
КонецПроцедуры
&НаКлиенте
Процедура НайтиКонтактыВыполнить()
Если ПустаяСтрока(СтрокаПоиска) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Не задано, что нужно найти.'"),, "СтрокаПоиска");
Возврат;
КонецЕсли;
Результат = "";
НайденныеКонтакты.Очистить();
Если ВариантыПоиска = "Везде" Тогда
Результат = НайтиКонтакты();
ИначеЕсли ВариантыПоиска = "ПоEmail" Тогда
НайтиПоEmail(Ложь);
ИначеЕсли ВариантыПоиска = "ПоДомену" Тогда
НайтиПоEmail(Истина);
ИначеЕсли ВариантыПоиска = "ПоСтроке" Тогда
Результат = КонтактыНайденныеПоСтроке();
ИначеЕсли ВариантыПоиска = "НачинаетсяС" Тогда
НайтиПоНачалуНаименования();
КонецЕсли;
Если Не ПустаяСтрока(Результат) Тогда
ПоказатьПредупреждение(, Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НайтиВСпискеИзСпискаНайденныхВыполнить()
ТекущиеДанные = Элементы.НайденныеКонтакты.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено И ЗначениеЗаполнено(ТекущиеДанные.Ссылка) Тогда
УстановитьТекущимКонтакт(ТекущиеДанные.Ссылка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НайтиВСпискеИзСпискаПолучателейВыполнить()
ТекущиеДанные = Элементы.ПолучателиПисьма.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено И ЗначениеЗаполнено(ТекущиеДанные.Контакт) Тогда
УстановитьТекущимКонтакт(ТекущиеДанные.Контакт);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НайтиВСпискеИзСпискаПредметовВыполнить()
ТекущиеДанные = Элементы.КонтактыПоПредмету.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
УстановитьТекущимКонтакт(ТекущиеДанные.Ссылка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НайтиПоАдресуВыполнить()
Элементы.СтраницыСписки.ТекущаяСтраница = Элементы.СтраницаПоискКонтактов;
НайденныеКонтакты.Очистить();
ТекущиеДанные = Элементы.ПолучателиПисьма.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
СтрокаПоиска = ТекущиеДанные.Адрес;
Если Не ПустаяСтрока(СтрокаПоиска) Тогда
НайтиПоEmail(Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НайтиПоПредставлениюВыполнить()
Элементы.СтраницыСписки.ТекущаяСтраница = Элементы.СтраницаПоискКонтактов;
НайденныеКонтакты.Очистить();
ТекущиеДанные = Элементы.ПолучателиПисьма.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
СтрокаПоиска = ТекущиеДанные.Представление;
Если Не ПустаяСтрока(СтрокаПоиска) Тогда
Результат = КонтактыНайденныеПоСтроке();
Если Не ПустаяСтрока(Результат) Тогда
ПоказатьПредупреждение(,Результат);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьАдресКонтактаВыполнить()
ТекущиеДанные = Элементы.ПолучателиПисьма.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Выберите адрес получателя в списке справа.'"));
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(ТекущиеДанные.Контакт) Тогда
КонтактНачалоВыбора(Элементы.ПолучателиПисьма, Неопределено, Истина);
Возврат;
КонецЕсли;
Результат = ВзаимодействияВызовСервера.ПолучитьАдресаЭлектроннойПочтыКонтакта(ТекущиеДанные.Контакт);
Если Результат.Количество() = 0 Тогда
ПоказатьПредупреждение(,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'У контакта ""%1"" нет адресов электронной почты.'"),
ТекущиеДанные.Контакт));
Возврат;
КонецЕсли;
Если Результат.Количество() = 1 Тогда
Адрес = Результат[0].АдресЭП;
Представление = Результат[0].Представление;
УстановитьАдресИПредставлениеВыбранногоКонтакта(ТекущиеДанные, Представление, Адрес);
Иначе
СписокВыбора = Новый СписокЗначений;
Номер = 0;
Для Каждого Элемент Из Результат Цикл
СписокВыбора.Добавить(Номер, Элемент.ВидНаименование + ": " + Элемент.АдресЭП);
Номер = Номер + 1;
КонецЦикла;
ПараметрыОбработкиВыбора = Новый Структура;
ПараметрыОбработкиВыбора.Вставить("Результат", Результат);
ПараметрыОбработкиВыбора.Вставить("ТекущиеДанные", ТекущиеДанные);
ОбработчикОповещенияОЗакрытии = Новый ОписаниеОповещения("СписокВыбораАдресаЭППослеЗавершения", ЭтотОбъект, ПараметрыОбработкиВыбора);
СписокВыбора.ПоказатьВыборЭлемента(ОбработчикОповещенияОЗакрытии);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьКонтактИзСпискаПредметовВыполнить()
ТекущиеДанные = Элементы.КонтактыПоПредмету.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
УстановитьКонтактВСпискеПолучателей(ТекущиеДанные.Ссылка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УдалитьВсехПолучателей(Команда)
ПолучателиПисьма.Очистить();
КонецПроцедуры
&НаКлиенте
Процедура УдалитьПолучателя(Команда)
ВыделенныеСтроки = Элементы.ПолучателиПисьма.ВыделенныеСтроки;
Для каждого ВыделеннаяСтрока Из ВыделенныеСтроки Цикл
ПолучателиПисьма.Удалить(ПолучателиПисьма.НайтиПоИдентификатору(ВыделеннаяСтрока));
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Функция ДанныеСтрокиНайденныеКонтакты(ВыделеннаяСтрока)
Возврат Элементы.НайденныеКонтакты.ДанныеСтроки(ВыделеннаяСтрока);
КонецФункции
&НаКлиенте
Процедура ВключитьВСписокПолучателей(Команда)
Если Элементы.СтраницыСписки.ТекущаяСтраница = Элементы.СтраницаПоискКонтактов Тогда
Для каждого ВыделеннаяСтрока Из Элементы.НайденныеКонтакты.ВыделенныеСтроки Цикл
ДанныеСтроки = ДанныеСтрокиНайденныеКонтакты(ВыделеннаяСтрока);
ДобавитьПолучателя(ДанныеСтроки.Представление, ДанныеСтроки.НаименованиеКонтакта, ДанныеСтроки.Ссылка);
КонецЦикла;
Возврат;
КонецЕсли;
НомерЭлементаФормы = Неопределено;
Если Элементы.СтраницыСписки.ТекущаяСтраница.ПодчиненныеЭлементы.Количество() = 1 Тогда
НомерЭлементаФормы = 0;
ИначеЕсли Элементы.СтраницыСписки.ТекущаяСтраница.ПодчиненныеЭлементы.Количество() = 2 Тогда
Если ТекущийЭлемент.Имя = "ПереместитьИзВерхнегоСпискаВВыбранное" Тогда
НомерЭлементаФормы = 0;
Иначе
НомерЭлементаФормы = 1;
КонецЕсли;
КонецЕсли;
Если НомерЭлементаФормы = Неопределено Тогда
Возврат;
КонецЕсли;
ПеренестиВыделенныеСтроки(
Элементы.СтраницыСписки.ТекущаяСтраница.ПодчиненныеЭлементы[НомерЭлементаФормы].ВыделенныеСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ВариантПоискаВезде(Команда)
ВариантыПоиска = "Везде";
ОбновитьМенюВариантовПоиска();
КонецПроцедуры
&НаКлиенте
Процедура ВариантПоискаВАдресах(Команда)
ВариантыПоиска = "ПоEmail";
ОбновитьМенюВариантовПоиска();
КонецПроцедуры
&НаКлиенте
Процедура ВариантПоискаВНаименованияхКонтактов(Команда)
ВариантыПоиска = "ПоСтроке";
ОбновитьМенюВариантовПоиска();
КонецПроцедуры
&НаКлиенте
Процедура ВариантПоискаПоДоменномуИмени(Команда)
ВариантыПоиска = "ПоДомену";
ОбновитьМенюВариантовПоиска();
КонецПроцедуры
&НаКлиенте
Процедура Просмотр(Команда)
Если Элементы.СтраницыСписки.ТекущаяСтраница = Элементы.СтраницаПользователей Тогда
ТекущиеДанные = Элементы.СписокПользователей.ТекущиеДанные;
ИначеЕсли ТипЗнч(ТекущийЭлемент) = Тип("ТаблицаФормы") Тогда
ТекущиеДанные = ТекущийЭлемент.ТекущиеДанные;
Иначе
Возврат;
КонецЕсли;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ПоказатьЗначение(, ТекущиеДанные.Ссылка);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ПроцедурыИФункцииОсуществленияПоиска
&НаСервере
Функция НайтиКонтакты()
Возврат Взаимодействия.НайтиКонтакты(СтрокаПоиска, Истина, НайденныеКонтакты);
КонецФункции
&НаСервере
Процедура НайтиПоEmail(ПоДомену)
Взаимодействия.НайтиПоEmail(СтрокаПоиска, ПоДомену, НайденныеКонтакты);
КонецПроцедуры
&НаСервере
Функция КонтактыНайденныеПоСтроке()
Возврат Взаимодействия.ПолнотекстовыйПоискКонтактовПоСтроке(СтрокаПоиска, НайденныеКонтакты, Истина);
КонецФункции
&НаСервере
Процедура НайтиПоНачалуНаименования()
Взаимодействия.НайтиКонтактыСАдресамиПоНаименованию(СтрокаПоиска, НайденныеКонтакты);
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаСервере
Процедура ЗаполнитьТаблицуПолучателей()
табПолучатели = РеквизитФормыВЗначение("ПолучателиПисьма");
Для Каждого ГруппаВыбранных Из Параметры.СписокВыбранных Цикл
Если ГруппаВыбранных.Значение <> Неопределено Тогда
Для Каждого Элемент Из ГруппаВыбранных.Значение Цикл
НоваяСтрока = табПолучатели.Добавить();
НоваяСтрока.Группа = ГруппаВыбранных.Представление;
ЗаполнитьЗначенияСвойств(НоваяСтрока, Элемент);
КонецЦикла;
КонецЕсли;
КонецЦикла;
табПолучатели.Сортировать("Группа");
Если табПолучатели.Количество() > 0 Тогда
ТаблицаАдресов =
Взаимодействия.АдресаЭлектроннойПочтыКонтактов(табПолучатели.ВыгрузитьКолонку("Контакт"));
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| ПолучателиПисьма.Адрес,
| ПолучателиПисьма.Представление,
| ПолучателиПисьма.Контакт,
| ПолучателиПисьма.Группа
|ПОМЕСТИТЬ ПолучателиПисьма
|ИЗ
| &ПолучателиПисьма КАК ПолучателиПисьма
|;
|
|
|ВЫБРАТЬ
| КонтактыАдреса.Контакт,
| КонтактыАдреса.СписокАдресов
|ПОМЕСТИТЬ КонтактыСписокАдресов
|ИЗ
| &КонтактыАдреса КАК КонтактыАдреса
|;
|
|
|ВЫБРАТЬ
| ПолучателиПисьма.Адрес,
| ПолучателиПисьма.Представление,
| ПолучателиПисьма.Контакт,
| ПолучателиПисьма.Группа,
| ЕСТЬNULL(КонтактыСписокАдресов.СписокАдресов, """") КАК СписокАдресов
|ИЗ
| ПолучателиПисьма КАК ПолучателиПисьма
| ЛЕВОЕ СОЕДИНЕНИЕ КонтактыСписокАдресов КАК КонтактыСписокАдресов
| ПО КонтактыСписокАдресов.Контакт = ПолучателиПисьма.Контакт";
Запрос.УстановитьПараметр("ПолучателиПисьма", табПолучатели);
Запрос.УстановитьПараметр("КонтактыАдреса", ТаблицаАдресов);
табПолучатели = Запрос.Выполнить().Выгрузить();
КонецЕсли;
ЗначениеВРеквизитФормы(табПолучатели, "ПолучателиПисьма");
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьПолучателя(Адрес, Наименование, Контакт, СписокАдресов = "")
УдалитьПустогоПолучателя(ПолучателиПисьма);
НоваяСтрока = ПолучателиПисьма.Добавить();
НоваяСтрока.Адрес = Адрес;
НоваяСтрока.Представление = Наименование;
НоваяСтрока.Контакт = Контакт;
НоваяСтрока.СписокАдресов = СписокАдресов;
НоваяСтрока.Группа = ГруппаПоУмолчанию;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УдалитьПустогоПолучателя(ПолучателиПисьма)
Если ПолучателиПисьма.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ПолучательПисьма = ПолучателиПисьма[0];
Если ПустаяСтрока(ПолучательПисьма.Адрес) И ПустаяСтрока(ПолучательПисьма.Представление) И Не ЗначениеЗаполнено(ПолучательПисьма.Контакт) Тогда
ПолучателиПисьма.Удалить(0);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьПолучателяИзСпискаПоПредмету()
ТекущиеДанные = Элементы.КонтактыПоПредмету.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Результат = ВзаимодействияВызовСервера.НаименованиеИАдресаЭлектроннойПочтыКонтакта(ТекущиеДанные.Ссылка);
Если Результат <> Неопределено И Результат.Адреса.Количество() > 0 Тогда
СписокАдресов = СтрСоединить(Результат.Адреса.ВыгрузитьЗначения(), ";");
Иначе
СписокАдресов = "";
КонецЕсли;
ДобавитьПолучателя(ТекущиеДанные.Адрес, ТекущиеДанные.Наименование, ТекущиеДанные.Ссылка, СписокАдресов);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьКонтактВСпискеПолучателей(Контакт)
Если ЗначениеЗаполнено(Контакт) И Элементы.ПолучателиПисьма.ТекущиеДанные <> Неопределено Тогда
Элементы.ПолучателиПисьма.ТекущиеДанные.Контакт = Контакт;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьТекущимКонтакт(Контакт)
Взаимодействия.УстановитьТекущимКонтакт(Контакт, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьГруппу(ИмяГруппы)
Для Каждого ВыделеннаяСтрока Из Элементы.ПолучателиПисьма.ВыделенныеСтроки Цикл
Элемент = ПолучателиПисьма.НайтиПоИдентификатору(ВыделеннаяСтрока);
Элемент.Группа = ИмяГруппы;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ПеренестиВыделенныеСтроки(Знач ВыделенныеСтроки)
Результат = Взаимодействия.АдресаЭлектроннойПочтыКонтактов(ВыделенныеСтроки, ГруппаПоУмолчанию);
Если Результат <> Неопределено Тогда
УдалитьПустогоПолучателя(ПолучателиПисьма);
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(Результат, ПолучателиПисьма);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьГруппуПоУмолчанию()
ГруппаПоУмолчанию = Параметры.ГруппаПоУмолчанию;
Если ПустаяСтрока(ГруппаПоУмолчанию) Тогда
ГруппаПоУмолчанию = НСтр("ru = 'Кому'");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеСтраницами()
Если Элементы.СтраницыСписки.ТекущаяСтраница = Элементы.СтраницаВсеКонтактыПоПредмету
ИЛИ Элементы.СтраницыСписки.ТекущаяСтраница = Элементы.СтраницаПоискКонтактов
ИЛИ Элементы.СтраницыСписки.ТекущаяСтраница.ПодчиненныеЭлементы.Количество() = 1
ИЛИ (Элементы.СтраницыСписки.ТекущаяСтраница = Элементы.СтраницаПользователей
И (НЕ ИспользоватьГруппыПользователей))Тогда
Элементы.СтраницыПереместить.ТекущаяСтраница = Элементы.СтраницаПереместитьОднаТаблица;
Иначе
Элементы.СтраницыПереместить.ТекущаяСтраница = Элементы.СтраницаПереместитьДвеТаблицы;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СписокВыбораАдресаЭППослеЗавершения(ВыбранныйЭлемент, ДополнительныеПараметры) Экспорт
Если ВыбранныйЭлемент = Неопределено Тогда
Возврат;
КонецЕсли;
Индекс = ВыбранныйЭлемент.Значение;
Адрес = ДополнительныеПараметры.Результат[Индекс].АдресЭП;
Представление = ДополнительныеПараметры.Результат[Индекс].Представление;
УстановитьАдресИПредставлениеВыбранногоКонтакта(ДополнительныеПараметры.ТекущиеДанные, Представление, Адрес);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьАдресИПредставлениеВыбранногоКонтакта(ТекущиеДанные, Представление, Адрес)
Позиция = СтрНайти(Представление, "<");
Представление = ?(Позиция= 0, "", СокрЛП(Лев(Представление, Позиция-1)));
ТекущиеДанные.Адрес = Адрес;
Если Не ПустаяСтрока(Представление) Тогда
ТекущиеДанные.Представление = Представление;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
ОбщегоНазначения.УстановитьУсловноеОформлениеСпискаВыбора(ЭтотОбъект, "Группа", "ПолучателиПисьма.Группа");
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьМенюВариантовПоиска()
Элементы.ВариантПоискаВезде.Пометка = (ВариантыПоиска = "Везде");
Элементы.ВариантПоискаВАдресах.Пометка = (ВариантыПоиска = "ПоEmail");
Элементы.ВариантПоискаВНаименованияхКонтактов.Пометка = (ВариантыПоиска = "ПоСтроке");
Элементы.ВариантПоискаПоДоменномуИмени.Пометка = (ВариантыПоиска = "ПоДомену");
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ПриИзмененииТолькоКонтактыСАдресами(Форма)
Для Каждого ИмяСписка Из Форма.ИменаДобавленныхТаблиц Цикл
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Форма.ЭтотОбъект[ИмяСписка.Значение], "Адрес", , ВидСравненияКомпоновкиДанных.Заполнено,, Форма.ПоказыватьТолькоКонтактыСАдресами);
КонецЦикла;
Если Форма.ПоказыватьТолькоКонтактыСАдресами Тогда
Форма.Элементы.КонтактыПоПредмету.ОтборСтрок = Новый ФиксированнаяСтруктура("АдресЗаполнен", Истина);
Форма.Элементы.НайденныеКонтакты.ОтборСтрок = Новый ФиксированнаяСтруктура("ПредставлениеЗаполнено", Истина);
Иначе
Форма.Элементы.НайденныеКонтакты.ОтборСтрок = Неопределено;
Форма.Элементы.КонтактыПоПредмету.ОтборСтрок = Неопределено;
КонецЕсли
КонецПроцедуры
#КонецОбласти
#КонецОбласти