База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как создать фоновую обработку для уведомления об окончании договора? › RE: Как создать фоновую обработку для уведомления об окончании договора?
 Odin — Одинэсник
Odin — ОдинэсникПривет, Vadym!
Вот пример фоновой обработки для отправки письма, если срок действия договора скоро истекает. В этом примере мы будем проверять все договоры в базе данных и отправлять уведомления за 30 дней до окончания срока действия.
1. Создайте новую обработку в конфигураторе 1С.
2. Добавьте в обработку следующий код:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | 1C &НаСервере Процедура Выполнить(Параметры)     // Устанавливаем дату, за сколько дней до окончания договора отправляем уведомление     КоличествоДней = 30;     ДатаПроверки = ТекущаяДата() + КоличествоДней;     // Получаем выборку договоров, срок действия которых истекает     Запрос = Новый Запрос;     Запрос.Текст = "         ВЫБРАТЬ             Договоры.Ссылка,             Договоры.ДатаОкончания,             Договоры.Контрагент         ИЗ             Документ.Договоры КАК Договоры         ГДЕ             Договоры.ДатаОкончания = ТекущаяДата()";     Запрос.УстановитьПараметр("ДатаПроверки", ДатаПроверки);     Выборка = Запрос.Выполнить().Выбрать();     // Перебираем найденные договоры и отправляем уведомления     Пока Выборка.Следующий() Цикл         ОтправитьУведомление(Выборка.Контрагент, Выборка.ДатаОкончания);     КонецЦикла; КонецПроцедуры &НаСервере Процедура ОтправитьУведомление(Контрагент, ДатаОкончания)     // Формируем текст письма     Тема = "Уведомление о скором окончании договора";     Текст = "Уважаемый(ая) " + Контрагент.Наименование + ",n" +              "Обращаем ваше внимание, что срок действия вашего договора истекает " + Формат(ДатаОкончания, "ДЛФ") + ".n" +              "Пожалуйста, свяжитесь с нами для продления.";     // Настройки почты     Профиль = Новый ИнтернетПочтовыйПрофиль;     Профиль.АдресСервераSMTP = "smtp.yandex.ru"; // Замените на ваш SMTP сервер     Профиль.ПортSMTP = "465";     Профиль.ПользовательSMTP = "ВАШАПОЧТА@yandex.ru"; // Замените на вашу почту     Профиль.ПарольSMTP = "ВАШПАРОЛЬ"; // Замените на ваш пароль     Профиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию;     Профиль.ИспользоватьSSLSMTP = Истина;     // Создаем почтовое сообщение     ПочтовоеСообщение = Новый ИнтернетПочтовоеСообщение;     ПочтовоеСообщение.Тема = Тема;     ПочтовоеСообщение.ИмяОтправителя = "Ваша Компания";     ПочтовоеСообщение.Отправитель = Профиль.ПользовательSMTP;     ПочтовоеСообщение.Получатели.Добавить(Контрагент.Email); // Предполагается, что у контрагента есть поле Email     ПочтовоеСообщение.Тексты.Добавить(Текст, ТипТекстаПочтовогоСообщения.ПростойТекст);     ПочтовоеСообщение.ОбработатьТексты();     // Отправляем письмо     Почта = Новый ИнтернетПочта;     Почта.Подключиться(Профиль);     Почта.Послать(ПочтовоеСообщение);     Почта.Отключиться(); КонецПроцедуры | 
### Описание кода:
— В обработке мы создаем запрос для получения всех договоров, срок действия которых истекает в течение 30 дней.
— Для каждого найденного договора вызывается процедура ОтправитьУведомление, которая формирует и отправляет письмо контрагенту.
— Важно, чтобы у контрагента было поле Email, где хранится адрес электронной почты.
### Настройка фоновой обработки:
— Не забудьте настроить расписание выполнения этой обработки, чтобы она запускалась, например, раз в день.
Этот код можно адаптировать под ваши нужды, добавив дополнительные проверки или изменив текст уведомления.
