| 
    
        
     
     | 
    
  | 
Отправка почты, помогите с текстом письма | ☑ | ||
|---|---|---|---|---|
| 
    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;  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |