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