Email и электронный адрес физ. лица

1. Geophysic 10.02.23 11:33 Сейчас в теме
Здравствуйте, мне нужно чтобы в рассылке уведомлений в поле "Email сотрудника" выводился email из вида контактной информации "Электронный адрес физ.лица", а если оно пустое, тогда из вида контактной информации "Email". Подскажите пожалуйста, что я сделал не так и почему не работает? Сейчас всегда выводится вид контактной информации "Электронный адрес физ.лица", а если поле пустое то не заполняется из вида КИ "email"

 Запрос.УстановитьПараметр("ДатаРассылки", ДатаРассылки);
    Запрос.УстановитьПараметр("ЭлектронныйАдресФизЛица", Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Электронный адрес физ.лица"));
    
    Запрос.Текст =
    
"ВЫБРАТЬ РАЗЛИЧНЫЕ
|    ТЧ.Ссылка КАК Документ,
|    ТЧ.ДатаНачала КАК ДатаНачала,
|    ТЧ.Сотрудник КАК Сотрудник,
|    ДОБАВИТЬКДАТЕ(ТЧ.ДатаНачала, ДЕНЬ, -14) КАК ДатаНапоминания,
|    ФизическиеЛицаКонтактнаяИнформация.АдресЭП КАК АдресСотрудника,
|    ПользователиКонтактнаяИнформация.АдресЭП КАК АдресОтветственного,
|    ТЧ.Ссылка.Номер КАК Номер,
|    ТЧ.Ссылка.Ответственный КАК Ответственный,
|    ТЧ.ФизическоеЛицо КАК ФизическоеЛицо,
|    ФизическиеЛицаКонтактнаяИнформация.Вид КАК Вид
|ПОМЕСТИТЬ ВТ
|ИЗ
|    Документ.ГрафикОтпусков.Сотрудники КАК ТЧ
|        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Пользователи.КонтактнаяИнформация КАК ПользователиКонтактнаяИнформация
|        ПО ТЧ.Ссылка.Ответственный = ПользователиКонтактнаяИнформация.Ссылка
|            И (ПользователиКонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.EmailПользователя))
|        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица.КонтактнаяИнформация КАК ФизическиеЛицаКонтактнаяИнформация
|        ПО ТЧ.ФизическоеЛицо = ФизическиеЛицаКонтактнаяИнформация.Ссылка
|            И (ФизическиеЛицаКонтактнаяИнформация.Вид = &ЭлектронныйАдресФизЛица),
|    Справочник.ФизическиеЛица КАК СпрФиз,
|    Справочник.Пользователи КАК СпрП,
|    Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации
|;
|
|////////////////////////////////////////////////////////////­////////////////////
|ВЫБРАТЬ
|    ВТ.Документ КАК Документ,
|    ВТ.ДатаНачала КАК ДатаНачала,
|    ВТ.Сотрудник КАК Сотрудник,
|    ВТ.ДатаНапоминания КАК ДатаНапоминания,
|    ВТ.АдресСотрудника КАК АдресСотрудника,
|    ВТ.АдресОтветственного КАК АдресОтветственного,
|    ВТ.Номер КАК Номер,
|    ВТ.Ответственный КАК Ответственный,
|   ВЫБОР
|   КОГДА &ЭлектронныйАдресФизЛица = """"  
|   ТОГДА ВТ.АдресСотрудника
|   Иначе &ЭлектронныйАдресФизЛица
|    КОНЕЦ КАК ИтоговыйАдрес
|ИЗ
|    ВТ КАК ВТ
|ГДЕ
|    ВТ.ДатаНапоминания = &ДатаРассылки
|
|УПОРЯДОЧИТЬ ПО
|    Сотрудник";

    Рез = Запрос.Выполнить();
    
    ТЗ = Рез.Выгрузить();
    
    Если НЕ Рез.Пустой() Тогда
    
        Выборка = Рез.Выбрать();
        
        Пока Выборка.Следующий() Цикл
        
            СтрТЧ = ЭтотОбъект.Документы.Добавить();
            
            СтрТЧ.ОК                  = Истина;
            СтрТЧ.ДокСсылка           = Выборка.Документ;
            СтрТЧ.Номер               = Выборка.Номер;
            СтрТЧ.Ответственный       = Выборка.Ответственный;
            СтрТЧ.ДатаНачала          = Выборка.ДатаНачала;
            СтрТЧ.Сотрудник           = Выборка.Сотрудник;
            СтрТЧ.АдресОтветственного = Выборка.АдресОтветственного;
            СтрТЧ.АдресСотрудника     = Выборка.АдресСотрудника;
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. soft_wind 10.02.23 12:21 Сейчас в теме
посмотрите, попробуйте такой запрос
внимание добавлено поле ПочтаДляОтправки
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТЧ.Ссылка КАК Документ,
| ТЧ.ДатаНачала КАК ДатаНачала,
| ТЧ.Сотрудник КАК Сотрудник,
| ДОБАВИТЬКДАТЕ(ТЧ.ДатаНачала, ДЕНЬ, -14) КАК ДатаНапоминания,
| КИ_Пользователя.АдресЭП КАК АдресОтветственного,
| ТЧ.Ссылка.Номер КАК Номер,
| ТЧ.Ссылка.Ответственный КАК Ответственный,
| ТЧ.ФизическоеЛицо КАК ФизическоеЛицо,
| КИ_ФизЛица.Вид КАК Вид,
| КИ_Пользователя.АдресЭП КАК АдресОтветственного,
| КИ_ФизЛица.АдресЭП КАК АдресСотрудника,
| ЕстьNull(КИ_ФизЛица.АдресЭП,КИ_Пользователя.АдресЭП) КАК ПочтаДляОтправки //можно добавить проверку второй почты
|
|ИЗ
| Документ.ГрафикОтпусков.Сотрудники КАК ТЧ
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Пользователи.КонтактнаяИнформация КАК КИ_Пользователя
| ПО ТЧ.Ссылка.Ответственный = КИ_Пользователя.Ссылка
| И (КИ_Пользователя.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.EmailПользователя))
| И КИ_Пользователя.АдресЭП <> """"
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица.КонтактнаяИнформация КАК КИ_ФизЛица
| ПО ТЧ.ФизическоеЛицо = КИ_ФизЛица.Ссылка
| И (КИ_ФизЛица.Вид = &ЭлектронныйАдресФизЛица),
| И КИ_ФизЛица.АдресЭП <> """"
|
|ГДЕ
| ДОБАВИТЬКДАТЕ(ТЧ.ДатаНачала, ДЕНЬ, -14) = &ДатаРассылки
|
|УПОРЯДОЧИТЬ ПО
| ТЧ.Сотрудник Автоупорядочивание
|";                              
                        
Показать
3. user5300 1076 10.02.23 12:32 Сейчас в теме
АдресЭП = ПолучитьПочту(сотрудник);
Если АдресЭП = Неопределено Тогда
	АдресЭП   = ПолучитьПочту(сотрудник.ФизЛицо);
	Если АдресЭП = Неопределено Тогда
		Сообщить("Отсутствует почта");
		Возврат;
	КонецЕсли;
КонецЕсли;



&НаСервере
Функция ПолучитьПочту(Контакт)

	Результат = ВзаимодействияВызовСервера.ПолучитьАдресаЭлектроннойПочтыКонтакта(сотрудник);
	Если Результат = Неопределено Тогда
		Возврат Неопределено;
	КонецЕсли;
	Если Результат.количество() Тогда
		Возврат Неопределено;
	КонецЕсли;

	Возврат  Результат[0].АдресЭП;
	
КонецФункции

Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот