Постановка задачи
Необходимо разработать сценарий, рассылающий уведомления ответственным за договоры о наступлении контрольной даты. Данные о договорах содержатся в справочнике Договоры. Ответственный за договор хранится в реквизите Ответственный за договор (Работник), а контрольная дата – в реквизите Контрольная дата (Дата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 |