Отправка электронных писем

1. Geophysic 19.05.23 14:22 Сейчас в теме
Здравствуйте, писал вот такой код в событии "ПриЗаписи"
	 
       Если Не СтрНайти(Объект.Ссылка.СрочностьДо,ТекущийОбъект.Срочность) И 
       ЗначениеЗаполнено(ТекущийОбъект.Срочность) 
	   И Объект.Срочность <> Перечисления.ивсСрочностьЗаявокИТ.Средняя 
	   И Объект.Срочность <> Перечисления.ивсСрочностьЗаявокИТ.Низкая Тогда
	   ТекущийОбъект.СрочностьДо  = ?(ТекущийОбъект.СрочностьДо = "", ТекущийОбъект.СрочностьДо, ТекущийОбъект.Срочность);	 
	   Объект.ТекстПисьма = "Срочность заявки измненен на " + Объект.Срочность;
	   Объект.ТемаПисьма = "Изменение срочности в заявке №" + НомерБезЛидирующихНулей(Объект.Номер) + " на " + Объект.Дата;
	   СозданиеИОтправкаПисьма19(АдресаКоторымОтправляемПисьма);
Показать


То есть при изменении реквизита отправлялось письмо, сейчас перенес код в "ПослеЗаписи" и там ТекущийОбъект не работает, сейчас каждый раз когда захожу в документ и записываю его отправляется бесконечно письмо, при том что ничего не изменяю в нем. Подскажите пожалуйста как можно подобный алгоритм реализовать в событии "ПослеЗаписи"?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. RustamZz 19.05.23 15:04 Сейчас в теме
(1) Выполнять проверку необходимости отправки письма до записи, а уже отправлять - после.
3. Geophysic 19.05.23 15:28 Сейчас в теме
(2) Посидел я подумал, так и не понял что вызывать в "ПослеЗаписи". Проверится условие на необходимость отправки письма в событии "ПриЗаписи" или "ПередЗаписью", а что вызывать в "ПослеЗаписи"?
4. RustamZz 19.05.23 15:32 Сейчас в теме
(3)
СозданиеИОтправкаПисьма19(АдресаКоторымОтправляемПисьма);
5. Geophysic 19.05.23 15:35 Сейчас в теме
(4) То есть так?
&НаСервере
 Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи, АдресаКоторымОтправляемПисьма)       
    Если Не СтрНайти(Объект.Ссылка.СрочностьДо,ТекущийОбъект.Срочность) И 
    ЗначениеЗаполнено(ТекущийОбъект.Срочность) 
       И Объект.Срочность <> Перечисления.ивсСрочностьЗаявокИТ.Средняя 
       И Объект.Срочность <> Перечисления.ивсСрочностьЗаявокИТ.Низкая Тогда
       ТекущийОбъект.СрочностьДо  = ?(ТекущийОбъект.СрочностьДо = "", ТекущийОбъект.СрочностьДо, ТекущийОбъект.Срочность);     
       Объект.ТекстПисьма = "Срочность заявки измненен на " + Объект.Срочность;
       Объект.ТемаПисьма = "Изменение срочности в заявке №" + НомерБезЛидирующихНулей(Объект.Номер) + " на " + Объект.Дата;
КонецПроцедуры
Показать


&НаСервере                            
Процедура ПослеЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи, АдресаКоторымОтправляемПисьма)
       СозданиеИОтправкаПисьма19(АдресаКоторымОтправляемПисьма);
КонецПроцедуры
6. RustamZz 19.05.23 15:36 Сейчас в теме
7. Geophysic 19.05.23 15:37 Сейчас в теме
(6) Так?
&НаСервере
 Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи, АдресаКоторымОтправляемПисьма)       
    Если Не СтрНайти(Объект.Ссылка.СрочностьДо,ТекущийОбъект.Срочность) И 
       ЗначениеЗаполнено(ТекущийОбъект.Срочность) 
       И Объект.Срочность <> Перечисления.ивсСрочностьЗаявокИТ.Средняя 
       И Объект.Срочность <> Перечисления.ивсСрочностьЗаявокИТ.Низкая Тогда
       ТекущийОбъект.СрочностьДо  = ?(ТекущийОбъект.СрочностьДо = "", ТекущийОбъект.СрочностьДо, ТекущийОбъект.Срочность);     
       Объект.ТекстПисьма = "Срочность заявки измненен на " + Объект.Срочность;
       Объект.ТемаПисьма = "Изменение срочности в заявке №" + НомерБезЛидирующихНулей(Объект.Номер) + " на " + Объект.Дата;
       СозданиеИОтправкаПисьма19(АдресаКоторымОтправляемПисьма);
   КонецЕсли;
КонецПроцедуры
Показать


&НаСервере                            
Процедура ПослеЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи, АдресаКоторымОтправляемПисьма)
       СозданиеИОтправкаПисьма19(АдресаКоторымОтправляемПисьма);
КонецПроцедуры
8. RustamZz 19.05.23 15:38 Сейчас в теме
(7) А вот это уже ни в какие ворота
9. Geophysic 19.05.23 15:40 Сейчас в теме
(8) Блин я не понимаю, там проверяю тут отправляю, что не так то написал в первый раз? Хоть подскажите чуть-чуть
10. RustamZz 19.05.23 15:42 Сейчас в теме
(9)
&НаСервере                            
Процедура ПослеЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи, АдресаКоторымОтправляемПисьма)
    Если ПроверимУстановленЛиФлагЧтоПисьмоОтправлятьНужно() Тогда
       СозданиеИОтправкаПисьма19(АдресаКоторымОтправляемПисьма);
    КонецЕсли;
КонецПроцедуры
11. Geophysic 19.05.23 15:56 Сейчас в теме
(10) Фигня?
&НаСервере
 Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи, АдресаКоторымОтправляемПисьма, ПроверимУстановленЛиФлагЧтоПисьмоОтправлятьНужно)       
    Если Не СтрНайти(Объект.Ссылка.СрочностьДо,ТекущийОбъект.Срочность) И 
       ЗначениеЗаполнено(ТекущийОбъект.Срочность) 
       И Объект.Срочность <> Перечисления.ивсСрочностьЗаявокИТ.Средняя 
       И Объект.Срочность <> Перечисления.ивсСрочностьЗаявокИТ.Низкая Тогда
       ТекущийОбъект.СрочностьДо  = ?(ТекущийОбъект.СрочностьДо = "", ТекущийОбъект.СрочностьДо, ТекущийОбъект.Срочность);     
       Объект.ТекстПисьма = "Срочность заявки измненен на " + Объект.Срочность;
       Объект.ТемаПисьма = "Изменение срочности в заявке №" + НомерБезЛидирующихНулей(Объект.Номер) + " на " + Объект.Дата;
       ПроверимУстановленЛиФлагЧтоПисьмоОтправлятьНужно();
   КонецЕсли;
КонецПроцедуры
Показать


&НаСервере                            
Процедура ПослеЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи, АдресаКоторымОтправляемПисьма)
    Если ПроверимУстановленЛиФлагЧтоПисьмоОтправлятьНужно() Тогда
       СозданиеИОтправкаПисьма19(АдресаКоторымОтправляемПисьма);
    КонецЕсли;
КонецПроцедуры


Функция ПроверимУстановленЛиФлагЧтоПисьмоОтправлятьНужно()
	 Объект.Флаг = Истина;
КонецФункции
12. RustamZz 19.05.23 16:04 Сейчас в теме
13. Geophysic 19.05.23 16:19 Сейчас в теме
(12) Придумал так, но получается тоже самое так как "ТекущийОбъект" тоже не работает в функции. Не могу пока догнать до того как вы это видите
&НаСервере
 Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи, АдресаКоторымОтправляемПисьма, ПроверимУстановленЛиФлагЧтоПисьмоОтправлятьНужно)
     Если Не СтрНайти(Объект.Ссылка.ТипыРешенийДо,ТекущийОбъект.ТипыРешений) И ЗначениеЗаполнено(ТекущийОбъект.ТипыРешений) 
	   И Объект.ТипыРешений = Перечисления.ивсТипыРешений.Выполнено 
	   И Объект.Срочность <> Перечисления.ивсСрочностьЗаявокИТ.ОченьВысокая 
	   И Объект.Срочность <> Перечисления.ивсСрочностьЗаявокИТ.Высокая Тогда
	   ТекущийОбъект.ТипыРешенийДо  = ?(ТекущийОбъект.ТипыРешенийДо = "", ТекущийОбъект.ТипыРешенийДо, ТекущийОбъект.ТипыРешений);
	   Объект.ТекстПисьма = "Обработка вашей заявки " + ТекущийОбъект.Тема + " была завершена";
	   Объект.ТемаПисьма = "Обработка вашей заявки " + "“" + ТекущийОбъект.Тема + "”" + " была завершена со статусом " + "“" + ТекущийОбъект.ТипыРешений + "”";
       ПроверимУстановленЛиФлагЧтоПисьмоОтправлятьНужно(ТекущийОбъект);	   
Показать


&НаСервере                            
Процедура ПослеЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи, АдресаКоторымОтправляемПисьма)
    Если ПроверимУстановленЛиФлагЧтоПисьмоОтправлятьНужно() Тогда
       СозданиеИОтправкаПисьма19(АдресаКоторымОтправляемПисьма);
    КонецЕсли;
КонецПроцедуры


Функция ПроверимУстановленЛиФлагЧтоПисьмоОтправлятьНужно()
     	 Если Не СтрНайти(Объект.Ссылка.ТипыРешенийДо,Объект.ТипыРешений) И ЗначениеЗаполнено(Объект.ТипыРешений) 
	   И Объект.ТипыРешений = Перечисления.ивсТипыРешений.Выполнено 
	   И Объект.Срочность <> Перечисления.ивсСрочностьЗаявокИТ.ОченьВысокая 
	   И Объект.Срочность <> Перечисления.ивсСрочностьЗаявокИТ.Высокая Тогда
	   Объект.ТипыРешенийДо  = ?(Объект.ТипыРешенийДо = "", Объект.ТипыРешенийДо, Объект.ТипыРешений);
	   Объект.ТекстПисьма = "Обработка вашей заявки " + Объект.Тема + " была завершена";
	   Объект.ТемаПисьма = "Обработка вашей заявки " + "“" + Объект.Тема + "”" + " была завершена со статусом " + "“" + Объект.ТипыРешений + "”";
	   Объект.Флаг = Истина;
	 КонецЕсли; 
КонецФункции
Показать
Оставьте свое сообщение

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