Копировать ссылку на страницу Перейти в предыдущий раздел Перейти в следующий раздел

Постановка задачи

Необходимо разработать сценарий, рассылающий уведомления ответственным за договоры о наступлении контрольной даты. Данные о договорах содержатся в справочнике Договоры. Ответственный за договор хранится в реквизите Ответственный за договор (Работник), а контрольная дата – в реквизите Контрольная дата (Дата3).

Уведомления рассылаются в день контрольной даты. Сценарий нужно запускать каждый день по расписанию.

Текст сценария

 

  // Открыть справочник Договоры с записями, 

  // у которых контрольная дата сегодня.

  Contracts = CreateReference("ДГВ"; ArrayOf("Дата3"; "Работник"))

  AddWhereID = Contracts.AddWhere(Format("

    -- контрольная дата сегодня

    %0:s.%1:s = '%2:s' and

    -- у договора определен ответственный

    %0:s.%3:s is not null and

    -- только действующие

    %0:s.%4:s = 'Д' and 

    -- только утвержденные

    %0:s.%5:s = '+'"; 

    ArrayOf(Contracts.TableName;

      Contracts.Requisites("Дата3").SQLFieldName; Today();

    Contracts. Requisites("Работник").SQLFieldName;

    Contracts. Requisites(SYSREQ_STATE).SQLFieldName;

    Contracts. Requisites(SYSREQ_RECORD_STATUS).SQLFieldName)))

  Contracts. Open

  for each Contract in Contracts

 

    // Получить Контрольную дату.

    Control Date = Contract.Дата3

    if not VarIsNull(Control Date)

 

      // Получить наименование договора.

      Contract Name = Contract.SYSREQ_NAME 

      ReferenceRecordInfo = Contract.Info                      

 

      // Получить ответственного.

      Curator Code = Contract. Работник

      User = GetUserByEmployeeCode(Curator Code)

      if User <<>> ''

 

        // Сформировать тему уведомления "%s контрольная дата %s"

        Task Subject = LoadStringFmt

          ("DIR1E1D696D_2200_4D22_A674_BB771F1CC074";

           "CM"; Array Of(Today(); Contract Name))

 

        // Сформировать список вложений.

        Attachment List = Create List()

 

        // Добавить во вложение запись справочника "Договоры"

        Attachment List. Add(ReferenceRecordInfo. Name; ReferenceRecordInfo)

 

        // Получить главные связанные документы

        // записи справочника "Договоры"

        // и добавить их во вложение.

        BoundMainEDocuments = GetMainFromBoundContractEDocuments(Contract) 

        for each MainEDocumentInfo in BoundMainEDocuments

          Attachment List. Add(MainEDocumentInfo. Name; MainEDocumentInfo)

        endforeach                

 

        // Отправить уведомление.

        User List = Create List()

        User List. Add(User. Name; User)

        if Task Subject <<>> ""

          SendNoticeByUserList(Task Subject; User List; Attachment List)   

        end if

      end if  

    end if

  endforeach  

  Contracts. Close

  Contracts.DelWhere(AddWhereID)

© Компания Directum, 2020 Сообщество пользователей Directum
.navbar > a:hover { background: #FFD73B; }