Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 сен 2023, 15:07

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

Автор User33221, 19 апр 2023, 14:03

0 Пользователей и 1 гость просматривают эту тему.

User33221

Здравствуйте, отправляю 4 электронных письма при изменении значения, мне нужно сделать так, чтобы при изменении уже заполненного реквизита, отправлялось новое письмо. Сейчас же у меня работает так что при изменении поля "Замечание" у меня отправляются все 4 письма, вместо одного по полю "Замечание", а остальные поля "Статус", "Срочность" и "Сотрудник" при изменении уже заполненного поля, письма вовсе не отправляются. Подскажите пожалуйста как можно это реализовать.
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
   
    Если Не СтрНайти(Объект.Ссылка.ЗамечаниеДо,ТекущийОбъект.Замечание) И ЗначениеЗаполнено(ТекущийОбъект.Замечание)Тогда
       ОтправитьПисьмоПоАдресам(Объект.Заказчик);
       ТекущийОбъект.ЗамечаниеДо  = ?(ТекущийОбъект.ЗамечаниеДо = "", ТекущийОбъект.Замечание, ТекущийОбъект.ЗамечаниеДо + Символы.ПС + ТекущийОбъект.Замечание);
       ТекущийОбъект.Замечание = "";
    Иначе Возврат;   
    КонецЕсли;
   
    Если Объект.Статус <> Перечисления.ивсСтатусыЗаявокКлиентов.Новый Тогда
       Объект.ТекстПисьма2 = "Статус заявки измненен на " + Объект.Статус;
       Объект.ТемаПисьма = "Изменение статуса заявки";   
       ОтправитьПисьмоПоАдресам2(Объект.Заказчик);
    Иначе Возврат;   
    КонецЕсли;
   
    Если Объект.Сотрудник <> Неопределено Тогда
       Объект.ТекстПисьма3 = "В заявке назначен новый сотрудник: " + Объект.Сотрудник;
       Объект.ТемаПисьма = "В заявке назначен новый сотрудник";
       ОтправитьПисьмоПоАдресам3(Объект.Заказчик); 
    Иначе Возврат;   
    КонецЕсли;
   
   
    Если Объект.Срочность <> Неопределено Тогда
       Объект.ТекстПисьма4 = "Срочность заявки измненен на " + Объект.Срочность;
       Объект.ТемаПисьма = "Изменение срочности заявки";   
       ОтправитьПисьмоПоАдресам4(Объект.Заказчик);
    Иначе Возврат;   
    КонецЕсли;
     
Конецпроцедуры

Kvark5d

User33221,
Если Не СтрНайти(Объект.Ссылка.ЗамечаниеДо,ТекущийОбъект.Замечание) И ЗначениеЗаполнено(ТекущийОбъект.Замечание)Тогда
//Если заполнено новое замечание и оно не совпадает со старым
// отправляется письмо
// идет проверка остальных реквизитов
Иначе
//Если нет нового замечания или оно совпадает со старым
// процедура прерывается и остальные реквизиты не проверяются
// поэтому если замечание не изменять все остальное не проверяется
Возврат;   
КонецЕсли;         

Если Объект.Сотрудник <> Неопределено Тогда
// если сотрудник что то определенное
// во первых надо проверять ЗначениеЗаполнено(Объект.Сотрудник)
// во вторых как понять что сотрудник был именно изменен? Ведь нет реквизита СотрудникДо
// это условие всегда будет выполняться.
Иначе
Возврат;   
КонецЕсли;

Если Объект.Срочность <> Неопределено Тогда
// аналогично как у сотрудника
Иначе
Возврат;   
КонецЕсли;

Необходимо:
1. Убрать все "Иначе Возврат;"
2. продумать как проверять действительно ли был изменены сотрудник и срочность

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск