Имя: Пароль:
1C
1С v8
Программное формирование письма из 1С.Расстановка переносов строк
0 skupidom5
 
10.09.17
11:14
Управление производственным предприятием, редакция 1.2 (1.2.26.1)
Процедура создает эл. письмо и используя настройки сервера и email адрес рассылает его по ответственным и их заместителям из 1С.При этом каждая группировка начинается с новой строки, но группировка по документам (последняя группировка):
документ + инициатор + дата и время отправки + статус;
выводится в разнобой (где-то с переносами,где то без). Использование Символы.ВК и Символы.ПС не помогаю упорядочить группировку по документам. Коллеги, прошу Вашего совета и помощи.  
Пример как сейчас выводятся группировки:

Рассылка сформирована для: Олега (ответсвенный) __________________________________________________
Проект: Проект 1
________________________________________
Заказ поставщику
__________________________________________________________________Группировка по документам:
Заказ поставщику 00000014046 от 31.07.2017 23:59:59, иницатор Ксения, отправлен 01.08.2017 17:21:15  Заказ поставщику 00000014112 от 31.07.2017 23:59:59, иницатор Ксения, отправлен 02.08.2017 9:59:05  Заказ поставщику 00000014126 от 31.07.2017 23:59:59, иницатор Ксения, отправлен 02.08.2017 10:23:59  Заказ поставщику 00000014131 от 31.07.2017 23:59:59, иницатор Ксения, отправлен 02.08.2017 10:36:53  Заказ поставщику 00000014137 от 01.08.2017 22:09:07, иницатор Ксения, отправлен 02.08.2017 10:49:04  Заказ поставщику 00000014155 от 01.08.2017 22:09:17, иницатор Ксения, отправлен 02.08.2017 12:01:28  Заказ поставщику 00000014156 от 01.08.2017 22:09:19, иницатор Ксения, отправлен 02.08.2017 12:25:42  Заказ поставщику 00000014157 от 01.08.2017 22:09:21, иницатор Ксения, отправлен 02.08.2017 12:31:32  Заказ поставщику 00000014159 от 31.07.2017 23:59:59, иницатор Ксения, отправлен 02.08.2017 13:01:56  Заказ поставщику 00000014179 от 31.07.2017 23:59:59, иницатор Александр, отправлен 02.08.2017 14:31:59

Заявка на расходование средств __________________________________________________________________

Заявка на расходование средств 00000021618 от 25.10.2016 0:00:00, (просрочен, документ в закрытом периоде!), иницатор Мария, отправлен 25.10.2016 18:49:40  Заявка на расходование средств 00000021949 от 27.10.2016 0:00:00, (просрочен, документ в закрытом периоде!), иницатор Мария, отправлен 28.10.2016 9:25:30

Код:
Для Каждого ТекСтрокаОтветственный Из Дерево.Строки Цикл // Ответственный
        
        ТекстПисьма = "";  
        
        ОтветсвенныйСЗаместителями = "Рассылка сформирована для: ";
        СтрокаСписокЕмаилАдресов = "";        
        
        Для Каждого ПодчиненнаяСтрокаПроект Из ТекСтрокаОтветственный.Строки Цикл // Проект
            
            ТекущийПроект = ПодчиненнаяСтрокаПроект.Группировка;
            ОтветственныеТекущегоПроекта = ПолучитьЗаместителейОтветственных(ТекСтрокаОтветственный.Группировка,ТекущаяДата(),Истина,Ложь,Истина,ТекущийПроект);             
            
            Для Каждого отв Из ОтветственныеТекущегоПроекта Цикл
                
                Пользователь = отв.Значение;
                НаименованиеФЛ = СокрЛП(отв.Значение.ФизЛицо.Наименование);
                
                Если Найти(ОтветсвенныйСЗаместителями,НаименованиеФЛ) > 0 Тогда
                Иначе
                    // Отв. / зам.:
                    Если Пользователь = ТекСтрокаОтветственный.Группировка Тогда                         
                        ОтветсвенныйСЗаместителями = ОтветсвенныйСЗаместителями + НаименованиеФЛ + " (ответсвенный)" + "; ";
                    Иначе
                        ОтветсвенныйСЗаместителями = ОтветсвенныйСЗаместителями + НаименованиеФЛ + " (заместитель)" + "; ";
                    КонецЕсли;
                
                    ЕмаилАдрес = ЭлектроннаяПочта.ПрочитатьЕМайл(отв.Значение.ФизЛицо,Справочники.ВидыКонтактнойИнформации.EmailФизЛица);
                    СтрокаСписокЕмаилАдресов = СтрокаСписокЕмаилАдресов + ";" + ЕмаилАдрес;
                    
                КонецЕсли;            
                
            КонецЦикла;
            
            ДлинаСтр = СтрДлина(ОтветсвенныйСЗаместителями);
            ОтветсвенныйСЗаместителями = Лев(ОтветсвенныйСЗаместителями,ДлинаСтр-2);
            
            ТекстПисьма = ТекстПисьма + ОтветсвенныйСЗаместителями + Символы.ВК;
            ТекстПисьма = ТекстПисьма + "__________________________________________________" + Символы.ВК;
                                 
            ТекстПисьма = ТекстПисьма + "Проект: " + ПодчиненнаяСтрокаПроект.Группировка + Символы.ВК;             
            ТекстПисьма = ТекстПисьма + "________________________________________" + Символы.ВК;          
            
            Для Каждого ПодчиненнаяСтрокаВидДокумента Из ПодчиненнаяСтрокаПроект.Строки Цикл // ВидДокумента
                
                ИмяМетаданных = "Документ." + ПодчиненнаяСтрокаВидДокумента.Группировка;
                ТекстВидДокумента = Метаданные.НайтиПоПолномуИмени(ИмяМетаданных);
                
                ТекстПисьма = ТекстПисьма + ТекстВидДокумента + Символы.ВК;
                ТекстПисьма = ТекстПисьма + "_____________________________________________________________________" + Символы.ВК;
                
                Для Каждого ПодчиненнаяСтрокаДетальныеЗаписи Из ПодчиненнаяСтрокаВидДокумента.Строки Цикл // ДетальныеЗаписи
                    
                    ТекстСтатусПросрочен = "";
                    ВернулиДатуЗапрета = ВернутьДатуЗапретаРедактированияДляДокумента(ПодчиненнаяСтрокаДетальныеЗаписи.Документ);
                    Если ПодчиненнаяСтрокаДетальныеЗаписи.Документ.Дата < ВернулиДатуЗапрета Тогда
                        ТекстСтатусПросрочен = ", (просрочен, документ в закрытом периоде!)";
                    КонецЕсли;
                    
                    ТекстПисьма = Символы.ВК + ТекстПисьма + " " + Строка(ПодчиненнаяСтрокаДетальныеЗаписи.Документ) + ТекстСтатусПросрочен + ", иницатор "+Строка(ПодчиненнаяСтрокаДетальныеЗаписи.Инициатор)+", отправлен "+Строка(ПодчиненнаяСтрокаДетальныеЗаписи.ДатаВозникновения) + Символы.ВК;            
                    
                КонецЦикла;
            КонецЦикла;
        КонецЦикла;
        
        ПараметрыПочты=ЭлектроннаяПочта.ПолучитьПараметрыКлиентаПочты(); //получаем сохраненные настройки отправки
        
        Если ТестовыйРежимОтправкиПисем = Истина Тогда
            
            АдресТест=ЭлектроннаяПочта.ПрочитатьЕМайл(глЗначениеПеременной("глТекущийПользователь").ФизЛицо,Справочники.ВидыКонтактнойИнформации.EmailФизЛица);

            Если ЗначениеЗаполнено(АдресТест) = Истина Тогда
                ЭлектроннаяПочтаСервер.ОтправитьПисьмоСервер(ЭлектроннаяПочта.СформироватьСтруктуруПисьма(ПараметрыПочты.ОтправительРассылки, АдресТест, "Уведомление о документах на утверждение", ТекстПисьма, Новый Массив, ПараметрыПочты.СерверРассылки,ПараметрыПочты.ПортРассылки,ПараметрыПочты.АвторизацияРассылки,ПараметрыПочты.ПользовательРассылки,ПараметрыПочты.ПарольРассылки));
            КонецЕсли;
            
        Иначе            
            ЭлектроннаяПочтаСервер.ОтправитьПисьмоСервер(ЭлектроннаяПочта.СформироватьСтруктуруПисьма(ПараметрыПочты.ОтправительРассылки,СтрокаСписокЕмаилАдресов, "Уведомление о документах на утверждение", ТекстПисьма, Новый Массив, ПараметрыПочты.СерверРассылки,ПараметрыПочты.ПортРассылки,ПараметрыПочты.АвторизацияРассылки,ПараметрыПочты.ПользовательРассылки,ПараметрыПочты.ПарольРассылки));
            
        КонецЕсли;
1 Филиал-msk
 
10.09.17
11:38
Какая инициативная Ксения!

У тебя есть код, который добавляет Символы.ВК не в то место переменой ТекстПисьма. Находится после КонецЕсли.
2 skupidom5
 
10.09.17
12:20
т.е.:
ТекстПисьма = Символы.ВК1 + ТекстПисьма + " " + Строка(ПодчиненнаяСтрокаДетальныеЗаписи.Документ) + ТекстСтатусПросрочен + ", иницатор "+Строка(ПодчиненнаяСтрокаДетальныеЗаписи.Инициатор)+", отправлен "+Строка(ПодчиненнаяСтрокаДетальныеЗаписи.ДатаВозникновения) + Символы.ВК2;
Символы.ВК1 - убрать,
Символы.ВК2 - оставить ?
3 skupidom5
 
10.09.17
12:21
Спасибо коллеги
4 skupidom5
 
10.09.17
16:09
Коллеги, я заменил,получилось так:
ТекстПисьма = ТекстПисьма + " " + Строка(ПодчиненнаяСтрокаДетальныеЗаписи.Документ) + ТекстСтатусПросрочен + ", иницатор "+Строка(ПодчиненнаяСтрокаДетальныеЗаписи.Инициатор)+", отправлен "+Строка(ПодчиненнаяСтрокаДетальныеЗаписи.ДатаВозникновения) + Символы.ВК;
Когда мало строк документов в группировке получается все отлично,когда много строк:    

Рассылка сформирована для: Олег (ответсвенный) __________________________________________________
Проект: Проект Компания (ФОДД)
________________________________________
Заказ поставщику
_____________________________________________________________________
Заказ поставщику 00000014046 от 31.07.2017 23:59:59, иницатор Ксения, отправлен 01.08.2017 17:21:15  Заказ поставщику 00000014112 от 31.07.2017 23:59:59, иницатор Ксения, отправлен 02.08.2017 9:59:05  Заказ поставщику 00000014126 от 31.07.2017 23:59:59, иницатор Ксения, отправлен 02.08.2017 10:23:59
5 skupidom5
 
10.09.17
16:10
может есть еще предложения и решения?
6 Tateossian
 
10.09.17
18:30
(5) Формировать в html
7 skupidom5
 
10.09.17
20:24
все решено,спасибо
8 Fram
 
10.09.17
21:14
Я ж ещё в прошлой ветке в 12 посте тебе ответил отформатировать текст письма с помощью 1С 8
9 Fram
 
10.09.17
21:15
Ты свои прошлые ветки не читаешь что ли?