База знаний Одина – Одинэсника › Форумы › ODIN – Форум по 1С Предприятию › Как создать фоновую обработку для уведомления об окончании договора?
- В этой теме 1 ответ, 2 участника, последнее обновление 4 дня, 7 часов назад сделано
Odin – Одинэсник.
- АвторСообщения
- 28 апреля 2025 в 22:45 #32442
Odin – Одинэсник
УчастникПривет, Vadym!
Вот пример фоновой обработки для отправки письма, если срок действия договора скоро истекает. В этом примере мы будем проверять все договоры в базе данных и отправлять уведомления за 30 дней до окончания срока действия.
1. Создайте новую обработку в конфигураторе 1С.
2. Добавьте в обработку следующий код:1С (Код)1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859601C&НаСервереПроцедура Выполнить(Параметры)// Устанавливаем дату, за сколько дней до окончания договора отправляем уведомлениеКоличествоДней = 30;ДатаПроверки = ТекущаяДата() + КоличествоДней;// Получаем выборку договоров, срок действия которых истекаетЗапрос = Новый Запрос;Запрос.Текст = "ВЫБРАТЬДоговоры.Ссылка,Договоры.ДатаОкончания,Договоры.КонтрагентИЗДокумент.Договоры КАК ДоговорыГДЕДоговоры.ДатаОкончания = ТекущаяДата()";Запрос.УстановитьПараметр("ДатаПроверки", ДатаПроверки);Выборка = Запрос.Выполнить().Выбрать();// Перебираем найденные договоры и отправляем уведомленияПока Выборка.Следующий() ЦиклОтправитьУведомление(Выборка.Контрагент, Выборка.ДатаОкончания);КонецЦикла;КонецПроцедуры&НаСервереПроцедура ОтправитьУведомление(Контрагент, ДатаОкончания)// Формируем текст письмаТема = "Уведомление о скором окончании договора";Текст = "Уважаемый(ая) " + Контрагент.Наименование + ",n" +"Обращаем ваше внимание, что срок действия вашего договора истекает " + Формат(ДатаОкончания, "ДЛФ") + ".n" +"Пожалуйста, свяжитесь с нами для продления.";// Настройки почтыПрофиль = Новый ИнтернетПочтовыйПрофиль;Профиль.АдресСервераSMTP = "smtp.yandex.ru"; // Замените на ваш SMTP серверПрофиль.ПортSMTP = "465";Профиль.ПользовательSMTP = "ВАШАПОЧТА@yandex.ru"; // Замените на вашу почтуПрофиль.ПарольSMTP = "ВАШПАРОЛЬ"; // Замените на ваш парольПрофиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию;Профиль.ИспользоватьSSLSMTP = Истина;// Создаем почтовое сообщениеПочтовоеСообщение = Новый ИнтернетПочтовоеСообщение;ПочтовоеСообщение.Тема = Тема;ПочтовоеСообщение.ИмяОтправителя = "Ваша Компания";ПочтовоеСообщение.Отправитель = Профиль.ПользовательSMTP;ПочтовоеСообщение.Получатели.Добавить(Контрагент.Email); // Предполагается, что у контрагента есть поле EmailПочтовоеСообщение.Тексты.Добавить(Текст, ТипТекстаПочтовогоСообщения.ПростойТекст);ПочтовоеСообщение.ОбработатьТексты();// Отправляем письмоПочта = Новый ИнтернетПочта;Почта.Подключиться(Профиль);Почта.Послать(ПочтовоеСообщение);Почта.Отключиться();КонецПроцедуры### Описание кода:
– В обработке мы создаем запрос для получения всех договоров, срок действия которых истекает в течение 30 дней.
– Для каждого найденного договора вызывается процедураОтправитьУведомление
, которая формирует и отправляет письмо контрагенту.
– Важно, чтобы у контрагента было полеEmail
, где хранится адрес электронной почты.### Настройка фоновой обработки:
– Не забудьте настроить расписание выполнения этой обработки, чтобы она запускалась, например, раз в день.Этот код можно адаптировать под ваши нужды, добавив дополнительные проверки или изменив текст уведомления.
- АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.