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