Получить адреса электронной почты для массива контактов. Получает адреса электронной почты для массива контактов.
// Получает адреса электронной почты для массива контактов.
//
// Параметры:
// МассивКонтактов - Массив - массив ссылок на контакты.
// Группа - Строка - имя группы в письме для которой ищутся адреса, например "Получатели", "Получатели копий".
//
// Возвращаемое значение:
// ТаблицаЗначений - таблица содержащая контакты и адреса их электронной почты.
//
Функция ПолучитьАдресаЭлектроннойПочтыДляМассиваКонтактов(МассивКонтактов,Группа = "") Экспорт
Если МассивКонтактов.Количество() = 0 Тогда
Возврат Неопределено;
КонецЕсли;
МассивОписанияТиповКонтактов = ВзаимодействияКлиентСервер.ОписанияКонтактов();
ТекстЗапроса = "
|ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
| ТаблицаКонтактнаяИнформация.АдресЭП КАК Адрес,
| ТаблицаКонтакт.Ссылка КАК Контакт
|ПОМЕСТИТЬ КонтактыАдреса
|ИЗ
| Справочник.Пользователи КАК ТаблицаКонтакт
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Пользователи.КонтактнаяИнформация КАК ТаблицаКонтактнаяИнформация
| ПО (ТаблицаКонтактнаяИнформация.Ссылка = ТаблицаКонтакт.Ссылка)
| И (ТаблицаКонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты))
|ГДЕ
| ТаблицаКонтакт.Ссылка В (&МассивКонтактов)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаКонтактнаяИнформация.АдресЭП КАК Адрес,
| ТаблицаКонтакт.Ссылка КАК Контакт
|ИЗ
| Справочник.Пользователи КАК ТаблицаКонтакт
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Пользователи.КонтактнаяИнформация КАК ТаблицаКонтактнаяИнформация
| ПО (ТаблицаКонтактнаяИнформация.Ссылка = ТаблицаКонтакт.Ссылка)
| И (ТаблицаКонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты))
|ГДЕ
| ИСТИНА В
| (ВЫБРАТЬ
| ИСТИНА
| ИЗ
| РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
| ГДЕ
| СоставыГруппПользователей.Пользователь = ТаблицаКонтакт.Ссылка
| И СоставыГруппПользователей.ГруппаПользователей В (&МассивКонтактов))";
Для каждого ЭлементМассиваОписания Из МассивОписанияТиповКонтактов Цикл
Если ЭлементМассиваОписания.Имя = "Пользователи" Тогда
Продолжить;
Иначе
ТекстЗапроса = ТекстЗапроса + "
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаКонтактнаяИнформация.АдресЭП,
| ТаблицаКонтакт.Ссылка
|ИЗ
| Справочник." + ЭлементМассиваОписания.Имя + " КАК ТаблицаКонтакт
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник." + ЭлементМассиваОписания.Имя + ".КонтактнаяИнформация КАК ТаблицаКонтактнаяИнформация
| ПО (ТаблицаКонтактнаяИнформация.Ссылка = ТаблицаКонтакт.Ссылка)
| И (ТаблицаКонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты))
|ГДЕ
| ТаблицаКонтакт.Ссылка В(&МассивКонтактов) " + ?(ЭлементМассиваОписания.Иерархический," И НЕ ТаблицаКонтакт.ЭтоГруппа","");
КонецЕсли;
КонецЦикла;
ТекстЗапроса = ТекстЗапроса + "
|;
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| КонтактыАдреса.Контакт,
| ПРЕДСТАВЛЕНИЕ(КонтактыАдреса.Контакт) КАК Представление,
| &Группа
|ИЗ
| КонтактыАдреса КАК КонтактыАдреса
|УПОРЯДОЧИТЬ ПО
| Контакт
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| КонтактыАдреса.Контакт КАК Контакт,
| КонтактыАдреса.Адрес КАК Адрес
|ИЗ
| КонтактыАдреса КАК КонтактыАдреса
|УПОРЯДОЧИТЬ ПО
| Контакт
|ИТОГИ
|ПО
| Контакт
|";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("МассивКонтактов",МассивКонтактов);
Запрос.УстановитьПараметр("Группа",Группа);
Результат = Запрос.ВыполнитьПакет();
ТаблицаРезультат = Результат[1].Выгрузить();
МассивТипов = Новый Массив;
МассивТипов.Добавить(Тип("Строка"));
ТаблицаРезультат.Колонки.Добавить("Адрес", Новый ОписаниеТипов(МассивТипов, , Новый КвалификаторыСтроки(100)));
ТаблицаРезультат.Колонки.Добавить("СписокАдресов",Новый ОписаниеТипов(МассивТипов));
ВыборкаКонтакты = Результат[2].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Для каждого СтрокаТаблицы Из ТаблицаРезультат Цикл
ВыборкаКонтакты.Следующий();
ВыборкаАдреса = ВыборкаКонтакты.Выбрать();
Пока ВыборкаАдреса.Следующий() Цикл
Если ПустаяСтрока(СтрокаТаблицы.Адрес) Тогда
СтрокаТаблицы.Адрес = ВыборкаАдреса.Адрес;
КонецЕсли;
СтрокаТаблицы.СписокАдресов = СтрокаТаблицы.СписокАдресов + ?(ПустаяСтрока(СтрокаТаблицы.СписокАдресов), "", ";") + ВыборкаАдреса.Адрес;
КонецЦикла;
КонецЦикла;
Возврат ТаблицаРезультат;
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ПолучитьАдресаЭлектроннойПочтыКонтакта (БСП)
НаименованиеИАдресаЭлектроннойПочтыКонтакта (БСП)
ВсеКонтактыПоНачалуНаименованияСАдресамиЭлектроннойПочты (БСП)
ОбновитьАдресЭлектроннойПочты (БСП)
ОпределитьАдресЭлектроннойПочтыПользователя (БСП)
АдресаЭлектроннойПочтыИзСтроки (БСП)
ПолучитьКодПроверкиЭлектроннойПочты (БСП)