Автоматическое удаление данных из РегистраСведений после успешной отправки письма!

1. user1299931 29.10.19 09:46 Сейчас в теме
Добрый день!
1С 8.2; УПП 1.3; Режим:серверный.
Есть документ с вкладкой согласования, после согласования(сохранения или записи документа) данные поступают в РегистрСведений, из регистра происходит отправка письма на почту следующему согласованту.
От меня требуют автоматически удалять или очищать данные из регистра после успешной отправки письма.
Подскажите как это прописать в коде?
p.s. Ниже представлен код из модуля объекта документа и изображение регистра.

 Процедура ОбработкаПроведения (Отказ,РежимПроведения)
    			
 	МенеджерЗаписи = РегистрыСведений.ОтправкаУведомлений.СоздатьМенеджерЗаписи();	 
 	МенеджерЗаписи.Период = ТекущаяДата();
 	МенеджерЗаписи.Почта = ТекущийСогласовант;
 	МенеджерЗаписи.ТемаПисьма = "Согласование ""Акта простоя оборудования""";
 	МенеджерЗаписи.ТекстПисьма = "Вам назначено согласование документа ""Акт простоя оборудования""";
    	  
 	МенеджерЗаписи.Записать(Ложь);
 		 
 	Сообщить("Я добавил новое значение в регистр");	 
    
 КонецПроцедуры;

Показать
Прикрепленные файлы:
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. nomad_irk 76 29.10.19 09:54 Сейчас в теме
(1)Для чего код фиксации сформированного уведомления? Ищите код отправки сообщения и там добавляйте удаление данных из регистра ОтправкаУведомлений.
4. user1299931 29.10.19 10:06 Сейчас в теме
(3) Отправка писем происходить через ОбщийМодуль ОтправкаПочты, а именно ОтправкаПочты.ОтправкаПисьма. Вот что в нем хранится, здесь нужно прописывать на удаление после отправки из регистра или нет?

 Функция РазбитьСтроку(ИсходнаяСтрока,Разделитель)   //Переводит строку в массив по разделителю
	Рез = Новый Массив;
	Строки = СтрЗаменить(ИсходнаяСтрока,Разделитель,Символы.ПС);
	Для Ном = 1 По СтрЧислоСтрок(Строки) Цикл
		Рез.Добавить(СокрЛП(СтрПолучитьСтроку(Строки,Ном)));
	КонецЦикла;
	Возврат Рез;
КонецФункции
[1C-CODE]

[1C-CODE]
Процедура ОтправкаПисьма(Строка,Почты, Тема, Вложение) Экспорт 
	
	Почта = Новый ИнтернетПочта;
	Попытка
		Почта.Подключиться(ПолучитьПрофиль());
	Исключение
		Сообщить(ОписаниеОшибки()); 
		Возврат;
	КонецПопытки;
	МойАдрес 		= "1crobot@damar.com";   // адрес отправителя

	Сообщение = Новый ИнтернетПочтовоеСообщение;
	Сообщение.Отправитель = МойАдрес;
	Сообщение.ИмяОтправителя = "АвтоПисьмо";
	ПочтовыеАдреса = Сообщение.Получатели;
	ПочтовыйАдрес = ПочтовыеАдреса.Добавить();
	Сообщение.Тема = Тема;
	МассивАдресов=РазбитьСтроку(Почты,",");
	
	ИнтернетТекстПочтовогоСообщения = Сообщение.Тексты.Добавить();
	ИнтернетТекстПочтовогоСообщения.Текст = Строка;
	ИнтернетТекстПочтовогоСообщения.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст;
	
	Для каждого Элемент из МассивАдресов цикл
		ПочтовыйАдрес.Адрес =Элемент;
		
		Попытка
			// Пытаемся послать письмо
			Почта.Послать(Сообщение);
			Сообщить("Письмо отправлено на почту: "+Элемент);
		Исключение
			Сообщить("Письмо на почту с адресом """ +Элемент+""" не отправлено по причине:");
			Сообщить(ОписаниеОшибки()); 
			Возврат;
		КонецПопытки;
	КонецЦикла;
	// отключение
	Почта.Отключиться();
		
КонецПроцедуры
[1C-CODE]

[1C-CODE]
Функция ПолучитьПрофиль()
	МойАдрес 		= "1crobot@damar.com";   // адрес отправителя
	
	// Время ожидания выполнения операции в секундах
	Профиль = Новый ИнтернетПочтовыйПрофиль;
                Профиль.АдресСервераSMTP = "mail.damar.ru";
                Профиль.Пользователь = МойАдрес;
                Профиль.ИспользоватьSSLIMAP = Истина;
                
	Профиль.ВремяОжидания = 50; 
	Возврат Профиль;
	
КонецФункции

Показать
5. nomad_irk 76 29.10.19 10:22 Сейчас в теме
6. user1299931 29.10.19 10:32 Сейчас в теме
(5) А где нужно прописать в процедуре ОтправкаПисьма или нужно создать новую процедуру/функцию. И я так поняла нужно прописать вот это или нет?
Пока Выборка.Следующий() Цикл
	
	МенеджерЗаписи = Выборка.ПолучитьМенеджерЗаписи();
	МенеджерЗаписи.Прочитать();
	
	МенеджерЗаписи.Период = ТекущаяДата();
	МенеджерЗаписи.Почта = ТекущийСогласовант;
	МенеджерЗаписи.ТемаПисьма = "Согласование ""Акта простоя оборудования""";
	МенеджерЗаписи.ТекстПисьма = "Вам назначенно согласование документа ""Акт простоя обрудования""";
	
	МенеджерЗаписи.Записать();
	
	МенеджерЗаписи.Удалить();
	
КонецЦикла;

Показать
2. AlexandrSmith 69 29.10.19 09:52 Сейчас в теме
http://1clenta.ru/pattern/52

Валюта = Справочники.Валюты.НайтиПоНаименованию("EUR");
Отбор = Новый Структура("Валюта");
Отбор.Валюта = Валюта;	
Выборка = РегистрыСведений.КурсыВалют.Выбрать(,,Отбор);

Пока Выборка.Следующий() Цикл

	МенеджерЗаписи = Выборка.ПолучитьМенеджерЗаписи();
	МенеджерЗаписи.Прочитать();
	
	//Изменить существующую запись
	МенеджерЗаписи.Валюта = Валюта;	
	МенеджерЗаписи.Период = ТекущаяДата();
	МенеджерЗаписи.Курс = 10.00;
	МенеджерЗаписи.Записать();
	
	//Удалить существующую запись
	МенеджерЗаписи.Удалить();

КонецЦикла; 
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот