|
Отправка письма определенным пользователям | ☑ | ||
---|---|---|---|---|
0
Slaifer
09.10.22
✎
20:18
|
Всем привет, помогите с решением задачи. Т.З. отправить письмо некоторым пользователям, если в базу добавили подразделение.
У нас есть регистр где записываются подразделения. (администрация, ООО Ромашка) (Кухня, ООО У дома) так же есть регистр где записываются пользователи у которых установлена огранизация (Вася Пупкин, ООО Ромашка) (Сережа Морозов, ООО У дома) Я написал Запрос где соединил два регистра в одну таблицу. помогите написать цикл чтобы Вася Пупкин получал подраздления в которых указан он, а Сережа Морозов получал свои подразделения. Так же может один человек привязан к разным подразделениям Соответвенно людей и подразделений у нас много. Cкpин таблицы значений https://ibb.co/182vHxC ////////////////////////////////////////////////// Процедура ФормированиеПисьмаФинансистуОНовомПодразделенииНаСегодня() Экспорт //ПолучитьОтветственныхБезУчетаОрганизацийНаСегодня - вызвать запрос //ТЗ_ОтветственныеИПодразделенияНаСегодня - получить таблицу значений ТЗ_ОтветственныеИПодразделенияНаСегодня = ПолучитьОтветственныхБезУчетаОрганизацийНаСегодня(); //вызвать учетку в базе СистемнаяУчетнаяЗапись = РаботаСПочтовымиСообщениями.СистемнаяУчетнаяЗапись(); //Формируем параметры для отправки письма //получаем пользователей с должностью "Контролер финансирования" ТЗ_ОтветственныеИПодразделенияНаСегодня = ПолучитьОтветственныхБезУчетаОрганизацийНаСегодня("Контролер финансирования"); //письмо ПараметрыПисьма = Новый Структура; АдресаЭП=""; //получатели Для каждого СтрокаОтветственногоНаСегодня ИЗ ТЗ_ОтветственныеИПодразделенияНаСегодня цикл АдресаЭП=АдресаЭП+СтрокаОтветственногоНаСегодня.АдресЭП+";"; КонецЦикла; //письмо Тема=""; Если АдресаЭП="" Тогда АдресаЭП="[email protected]"; Тема = "Назначь ответсвенного контролера финансирования! "; КонецЕсли; ПараметрыПисьма.Вставить("Кому",АдресаЭП); Тема = Тема+"Оповещение: " + ТекущаяДата() + " На сегодня в 1С прилетели новые подразделения!"; ПараметрыПисьма.Вставить("Тема",Тема); //Тело письма начало ТелоПисьма = "<html> |<head> |<style> |table, th, td { |border: 2px solid black; |border-collapse: collapse; |padding: 5px; |cellpadding: 5px; |font: 12.0pt; |font-family: 'Times New Roman'; } |</style> |</head> |<table> |<tr bgcolor='Orange'> |<th>№</th> <th>Дата</th> <th>Подразделение</th> <th>Организация</th> |</tr>"; Номер = 1; Для каждого СтрокаНовоеПодразделениеНаСегодня ИЗ ТЗ_ОтветственныеИПодразделенияНаСегодня Цикл ТелоПисьма=ТелоПисьма+" | <tr> | <td>"+Номер+"</td> | <td align='center'>"+СтрокаНовоеПодразделениеНаСегодня.Дата+"</td> | <td>"+СтрокаНовоеПодразделениеНаСегодня.Подразделение+"</td> | <td>"+СтрокаНовоеПодразделениеНаСегодня.Подразделение.ГоловнаяОрганизация+"</td> | </tr>"; Номер=Номер+1; КонецЦикла; ТелоПисьма=ТелоПисьма+"</table></html>"; //Тело письма конец ПараметрыПисьма.Вставить("Тело",ТелоПисьма); ПараметрыПисьма.Вставить("ТипТекста","HTML"); ПодготовленноеПисьмо = РаботаСПочтовымиСообщениями.ПодготовитьПисьмо(СистемнаяУчетнаяЗапись, ПараметрыПисьма); Попытка РезультатОтправкиПисьма = РаботаСПочтовымиСообщениями.ОтправитьПисьмо(СистемнаяУчетнаяЗапись, ПодготовленноеПисьмо); Исключение ЗаписьЖурналаРегистрации("ОтправкаПисьмаФинансовомуДиректору на почту "+ АдресаЭП, УровеньЖурналаРегистрации.Ошибка,,, "Ошибка при отправке электронного письма: " + РезультатОтправкиПисьма.ОшибочныеПолучатели); КонецПопытки; КонецПроцедуры ////////////////////////////////////////////////// |
|||
1
Slaifer
09.10.22
✎
20:18
|
В данном коде приходин письмо со всем подразделениями, а получатели как в таблице значения пишет по порядку через запятую.
Тестово выгружал по двум людям и обработка указала Васю и Сергея 182 раза |
|||
2
FIXXXL
09.10.22
✎
20:38
|
уважай сообщество, почисти код, прежде чем выкладывать
глаза ломать на заккоментированном врядли будут |
|||
3
Slaifer
09.10.22
✎
20:48
|
Я извиняюсь конечно, а комменты я специально щас дописывал. Думал так будет понятнее
|
|||
4
alarm2020
10.10.22
✎
09:28
|
(0) Если
|
|||
5
Greeen
10.10.22
✎
11:21
|
Доброго дня! Алгоритмически можно так
1)Вместо ТЗ делаете запрос с группировкой, соотв. первая группировка - Сотрудник. 2)Далее цикл по остальным группировкам (организация/подразделение) - тут уже формируете текст письма 3)Перед переходом на следующего сотрудника - пуляете ему письмо Если с ТЗ(Как вариант): 1)Копируете таблицу, схлопываете по сотруднику (ТЗСОтрудники) 2)Цикл по этой таблице, внутри еще один цикл по основной таблице с отбором по Сотруднику(НайтиСтроки например), тут формируете письмо 3)Отправляете письмо Ну и отбор по дате, чтобы только новые записи отправлялись (В цикле или запросе условие) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |