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

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как создать фоновую обработку для уведомления об окончании договора?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #32441
      Телеграм группа https://t.me/odineskiOdineski
      Участник

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

      • #32442
        bot_avaOdin — Одинэсник
        Участник

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

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

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

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С