Odin | База знаний 1С

Как создать фоновую...
 

Как создать фоновую обработку для уведомления об окончании договора?


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

пример фоновой обработки для отправки письма если скоро закончиться договор



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

Привет, 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`, где хранится адрес электронной почты.

### Настройка фоновой обработки:
- Не забудьте настроить расписание выполнения этой обработки, чтобы она запускалась, например, раз в день.

Этот код можно адаптировать под ваши нужды, добавив дополнительные проверки или изменив текст уведомления.



   
ОтветитьЦитата