Представляю вашему вниманию простеньки код для уведомления заинтересованных лиц на почту. Ничего нового и никакой политики. Просто уведомление о новой задаче в почту...
Вчера я получил такое вот письмо:
Суть этого сообщения в том, что многие из наблюдателей, указанных в задачах, очень нечасто заходят в Директум, НО на подобные запуски приказов, должны реагировать максимально быстро, так как если среагировать невовремя, то может "встать" работа кассового узла на выходных днях. Значит нам надо добавить Код на старте подобного Типового маршрута, чтобы уведомить всех наблюдателей о том, что началось новое согласование по изменению режима работы, чтобы они были максимально готовыми к его вступлению в силу:
Params = Sender.WorkFlowParams
ObserversL = Sender.Observers
TempFolder = GetTempFolder()
MessError = ""
AttachmentsListStr = ""
Email = ""
Shapka = "Добрый день!"
Theme = Sender.Subject
Body = CR & "Запущен новый приказ: " & Theme & CR
Podwal = "Данное сообщение сформировано автоматически, просьба не отвечать на него."
foreach User in ObserversL
try
Email = AddSubString(НайтиРеквизитПоФИО(User.FullName;"Email"); Email; ';')
except
MessError = MessError & "Среди наблюдателей есть Работники без e-mail: " & User.FullName & CR
endexcept
endforeach
Params.ValueByName("Примечание").Value = MessError
Attachments = Sender.GetAttachments(True)
foreach Attachment in Attachments
EDocInfo = Attachment.ObjectInfo
if EDocInfo.ComponentType = ctEDocument
EDoc = EDocInfo.Document
VersionNum = GetNumVersionEDoc(EDoc; EDOC_VERSION_ACTIVE_STAGE_CODE)
if VersionNum = -1
VersionNum = GetNumVersionEDoc(EDoc; EDOC_VERSION_DESIGN_STAGE_CODE)
if VersionNum = -1
VersionNum = GetNumVersionEDoc(EDoc; EDOC_VERSION_OBSOLETE_STAGE_CODE)
endif
endif
EDocumentVersion = EDoc.Versions.ValueByName(VersionNum)
FileName = GetFullEDocumentVersionFileName(EDocumentVersion; TempFolder)
EDoc.Export(VersionNum; FileName; FALSE)
AttachmentsListStr = AddSubString(FileName; AttachmentsListStr; ';')
endif
endforeach
if Assigned(AttachmentsListStr)
ПЧТОтправитьПисьмо(Email;;;Theme; Shapka & CR & Body & CR & Podwal;;AttachmentsListStr;)
else
ПЧТОтправитьПисьмо(Email;;;Theme; Shapka & CR & Body & CR & Podwal;;;)
endif
Описание функции "НайтиРеквизитПоФИО(User.FullName;"Email")":
FIO = ФИО // Параметр первый
Reference = References.РАБ.GetComponent
AddWhere = Reference.AddWhere(Format("%0:s.%1:s = '%2:s'"; ArrayOf(Reference.TableName; Reference.Requisites('Дополнение').FieldName; FIO)))
Reference.Open
if Вариант == "Email" // Параметр второй
Email = ''
if Reference.RecordCount > 0
Email = Reference.Requisites('Email').AsString
endif
Reference.Close
Reference.DelWhere(AddWhere)
Reference = nil
Result = Email
endif
Совсем несложно, но для оперативной работы - весьма полезно.
Опять сомнительная функция НайтиРеквизитПоФИО. Как с полным совпадением ФИО у разных людей она справляться будет? У нас в организации всего около тысячи сотрудников и то имеется не одно такое совпадение.
Уточнение конечно стоит сделать, но у нас полных тезок пока нет, так что я и не заморачивался над этим.
Авторизуйтесь, чтобы написать комментарий