|
Отправка почты, помогите с текстом письма | ☑ | ||
---|---|---|---|---|
0
Айвонттубифри
12.03.20
✎
15:51
|
Добрый день!
В таблице значений ТЗ1 собрала информацию о графике отпусков сотрудников всех подразделений. Теперь надо, чтобы каждый руководитель получал единое письмо с перечнем графиком отпусков сотрудников только своего подразделения. Причем, чтобы текст письма выводился так (можно: - Иванов: запланирован отпуск с 01.01.2020 по 10.01.2020 - Петров: запланирован ... - Сидоров: запланирован ... Сейчас у меня по каждому сотруднику приходит отдельное письмо руководителю, что неверно. Подскажите, как сделать, чтобы каждый руководитель получал единое письмо с перечнем графика отпусков сотрудников только своего подразделения? Процедура ПодготовитьПисьмоРуководителю(ТЗ1, ТЗ2) мОтобранныеСтроки = Новый Массив; ТекПодразделение = ""; //ТЗ1 и ТЗ2 - идентичные таблицы значений, в которой хранится информация об отпусках сотрудников всех подразделений //ниже, я делаю отбор по подразделению, чтобы руководитель получил график отпусков только своего подразделения Для каждого СтрокаТЗ ИЗ ТЗ1 Цикл ТекПодразделение = СтрокаТЗ.ТекущееПодразделение; СтруктураОтбора = Новый Структура; СтруктураОтбора.Вставить("ТекущееПодразделение", ТекПодразделение); СтруктураОтбора.Вставить("ДатаНачала", СтрокаТЗ.ДатаНачала); мОтобранныеСтроки = ТЗ2.НайтиСтроки(СтруктураОтбора); ОтправитьПисьмоРуководителю(мОтобранныеСтроки, ТекПодразделение); //руководитель получает в одном письме информацию о графике отпусков своего подразделения мОтобранныеСтроки.Очистить(); КонецЦикла; КонецПроцедуры Процедура ОтправитьПисьмоРуководителю(мОтобранныеСтроки, ТекПодразделение); ПараметрыПисьма = Новый Структура; ПараметрыПисьма.Вставить("Кому", ПочтовыйАдресРуководителя); ПараметрыПисьма.Вставить("Тема", "Рассылка по графику отпусков"); Для Каждого Строка ИЗ мОтобранныеСтроки Цикл; ТелоТекста = Строка.Сотрудник + " - запланирован отпуск с " + Формат(Строка.ДатаНачала, "ДФ=dd.MM.yyyy") +"г. по "+ Формат(Строка.ДатаОкончания, "ДФ=dd.MM.yyyy") + "г." + Символы.ВК; //вот здесь мне надо, чтобы текст письма выводился так: //Иванов - запланирован отпуск с 01.01.2020 по 10.01.2020 //Петров - запланирован ... //Сидоров - запланирован ... КонецЦикла; ПараметрыПисьма.Вставить("Тело", ТелоТекста); ОтправитьПочтовоеСообщение(УчетнаяЗапись, ПараметрыПисьма); КонецПроцедуры |
|||
1
Айвонттубифри
12.03.20
✎
15:52
|
+(0) Код некрасиво вставился, дублирую:
Процедура ПодготовитьПисьмоРуководителю(ТЗ1, ТЗ2) мОтобранныеСтроки = Новый Массив; ТекПодразделение = ""; //ТЗ1 и ТЗ2 - идентичные таблицы значений, в которой хранится информация об отпусках сотрудников всех подразделений //ниже, я делаю отбор по подразделению, чтобы руководитель получил график отпусков только своего подразделения Для каждого СтрокаТЗ ИЗ ТЗ1 Цикл ТекПодразделение = СтрокаТЗ.ТекущееПодразделение; СтруктураОтбора = Новый Структура; СтруктураОтбора.Вставить("ТекущееПодразделение", ТекПодразделение); СтруктураОтбора.Вставить("ДатаНачала", СтрокаТЗ.ДатаНачала); мОтобранныеСтроки = ТЗ2.НайтиСтроки(СтруктураОтбора); ОтправитьПисьмоРуководителю(мОтобранныеСтроки, ТекПодразделение); //руководитель получает в одном письме информацию о графике отпусков своего подразделения мОтобранныеСтроки.Очистить(); КонецЦикла; КонецПроцедуры Процедура ОтправитьПисьмоРуководителю(мОтобранныеСтроки, ТекПодразделение); ПараметрыПисьма = Новый Структура; ПараметрыПисьма.Вставить("Кому", ПочтовыйАдресРуководителя); ПараметрыПисьма.Вставить("Тема", "Рассылка по графику отпусков"); Для Каждого Строка ИЗ мОтобранныеСтроки Цикл; ТелоТекста = Строка.Сотрудник + " - запланирован отпуск с " + Формат(Строка.ДатаНачала, "ДФ=dd.MM.yyyy") +"г. по "+ Формат(Строка.ДатаОкончания, "ДФ=dd.MM.yyyy") + "г." + Символы.ВК; //вот здесь мне надо, чтобы текст письма выводился так: //Иванов - запланирован отпуск с 01.01.2020 по 10.01.2020 //Петров - запланирован ... //Сидоров - запланирован ... КонецЦикла; ПараметрыПисьма.Вставить("Тело", ТелоТекста); ОтправитьПочтовоеСообщение(УчетнаяЗапись, ПараметрыПисьма); КонецПроцедуры |
|||
2
8 bit
12.03.20
✎
16:04
|
> Для Каждого Строка ИЗ мОтобранныеСтроки Цикл;
ТелоТекста = Строка.Сотрудник + " - запланирован ТелоТекста = ""; Для Каждого Строка ИЗ мОтобранныеСтроки Цикл; ТелоТекста = ТелоТекста + Строка.Сотрудник + " - запланирован........... тут условие еще неплохо бы: Если не последняя строка таблицы мОтобранныеСтроки тогда ТелоТекста = ТелоТекста + символпереводастроки; КонецЕсли; |
|||
3
dka80
12.03.20
✎
17:42
|
О! У меня прям есть такая штука один в один, которая формирует текст письма в виде HTML
Только я вам ее на дам )) |
|||
4
dka80
12.03.20
✎
17:44
|
Но идея такая: отбираются предстоящие отпуска, добавляются руководители. Далее это все выгружается в дерево для анализа, а затем дерево обходится по строкам первого уровня, где руководители, а затем по строкам второго уровня, где сотрудники
|
|||
5
8 bit
12.03.20
✎
17:50
|
(3)(4) умничка, возьми с полочки пирожочек вкусненький.
Только в (0) у чувака одна маленькая проблема - он перезатирает в цикле единственную строку, следовательно, в тело письма попадает последняя строка из той ТЗ, которую он передает в процедуру ОтправитьПисьмоРуководителю. И твой опыт ему ну никак не поможет. |
|||
6
pechkin
12.03.20
✎
17:57
|
юзай типовой механизм рассылки отчетов. зачем свое изобретать?
|
|||
7
Айвонттубифри
12.03.20
✎
19:56
|
(0) Вобщем сделала так, вроде выводит все как мне надо,:
ТекстПисьма = " Здравствуйте, " + ДанныеСтруктуры.Руководитель + "!" + " |<br /> |<br /> |<br /> Скоро начинается отпуск у сотрудника(ов) департамента: " + " |"; ТекстПисьма = ТекстПисьма + "<table border='1px'><th>ФИО</th><th>Дата начала</th><th>Дата окончания</th>"; Для каждого Строка Из мОтобранныеСтроки Цикл ТекстПисьма = ТекстПисьма + "<tr>"; ТекстПисьма = ТекстПисьма + "<td>" + Строка.Сотрудник + "</td>"; ТекстПисьма = ТекстПисьма + "<td>" + Формат(Строка.ДатаНачала, "ДФ=dd.MM.yyyy") + "г.</td>"; ТекстПисьма = ТекстПисьма + "<td>" + Формат(Строка.ДатаОкончания, "ДФ=dd.MM.yyyy") + "г.</td>"; ТекстПисьма = ТекстПисьма + "</tr>"; КонецЦикла; ТекстПисьма = ТекстПисьма + "</table>"; ТекстПисьма = ТекстПисьма + " |<br /> |<br /> |<br /> Просим проконтролировать передачу заявления на отпуск (не позднее, чем за 2 недели до начала отпуска). " + " |<br /> Если даты отпуска поменяются, оповестите нас, пожалуйста. " + " |"; Текст = Письмо.Тексты.Добавить(ТекстПисьма); Текст.ТипТекста = ТипТекстаПочтовогоСообщения.HTML; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |