Я был очень рад, когда купили DIRECTUM JAZZ. И затем очень удивлён отсутствием прозрачного отслеживания используемости, хотя все нужные данные есть, причём в таблицах SQL, а не в текстовых логах. В итоге, сделали для себя обложку с наглядным отображением информации по пользователям NOMAD.
Теперь за счёт визуальной подсветки видно, кому забыли удалённо данные на устройстве удалить при увольнении, кому недонастроили внешний вид, кто не обновил приложение или упорно просил дать ему доступ и не пользуется.
Чтобы сделать подобное вам понадобится работающий буфер обмена и минут 15 времени. Итак, по шагам:
1) Создаём сценарий. В нашем случае (используется в прикреплённом файле-обложке) имя INT_CoverNOMADDevices, заголовок "Сценарий для обложки Пользователи и устройства NOMAD", отнесён к модулю Утилиты администратора. Текст:
TextHTML = ""
CLOSED_USER_SOST_TEXT = 'Закрыт'
NO_NOMAD_USER_TEXT = 'Нет'
VALID_DEVICE_STATUS_TEXT = 'Разрешено'
INVALID_DEVICE_STATUS_TEXT = 'Удалено'
// -------------------------- Информация по пользователям NOMAD и их устройствам
Query = CreateQuery()
Query.CommandText = "-- Информация по пользователям NOMAD и их устройствам
SELECT DISTINCT
usr.NameAn AS UserFIO
, CASE usr.Sost
WHEN 'Д' THEN 'Действующий'
ELSE '" & CLOSED_USER_SOST_TEXT & "'
END AS UserSost
, CASE nomad_dev.Status
WHEN 1 THEN '" & VALID_DEVICE_STATUS_TEXT & "'
ELSE '" & INVALID_DEVICE_STATUS_TEXT & "'
END AS DeviceStatus
, usr_comp.UserLogin AS UserLogin
, CASE
WHEN nomad_usr.Analit IS NULL THEN '" & NO_NOMAD_USER_TEXT & "'
ELSE 'Есть'
END AS HaveNOMADUser
, nomad_dev.CDID AS CDID
, nomad_dev.AppVersion AS JazzVersion
, nomad_dev.OSVersion AS OSVersion
, nomad_dev.Name AS DeviceName
, nomad_sessions.LastAccessTime AS LastAccessTime
, CASE
WHEN nomad_sessions.LastAccessTime IS NULL THEN '1'
WHEN DATEDIFF(day, nomad_sessions.LastAccessTime, GETDATE()) > 30 THEN '1'
ELSE '0'
END AS UserActivity
FROM
dbo.NOMADUserDevices nomad_dev
LEFT OUTER JOIN dbo.MBAnalit usr
ON usr.Analit = nomad_dev.UserID
LEFT OUTER JOIN dbo.MBUser usr_comp
ON usr.Dop = usr_comp.UserKod
LEFT OUTER JOIN dbo.MBAnalit nomad_usr
ON nomad_usr.Vid = " & ИДТипСпр('NOMADUsers') & " AND usr.Analit = nomad_usr.Polzovatel
LEFT OUTER JOIN dbo.NOMADSeance nomad_sessions
ON nomad_sessions.UserID = nomad_dev.UserID AND nomad_sessions.CDID = nomad_dev.CDID
ORDER BY
2 ASC, 1 ASC, 4 ASC, 3 ASC, 9 ASC"
TextHTML = TextHTML & CR &
" <h4 nowrap='nowrap'>Информация по пользователям NOMAD и их устройствам</h4>
<table border=1>
<thead>
<tr>
<th>ФИО пользователя</th>
<th>Состояние</th>
<th>Статус устройства</th>
<th>Логин пользователя</th>
<th>Запись в справочнике Пользователи NOMAD</th>
<th>CDID</th>
<th>Версия ПО</th>
<th>Версия ОС устройства</th>
<th>Наименование устройства</th>
<th>Дата последнего подключения устройства</th>
</tr>
</thead>
<tbody>"
Query.Open
Query.First
while not Query.EOF
UserFIO = Query.Fields("UserFIO").AsString
UserSost = Query.Fields("UserSost").AsString
DeviceStatus = Query.Fields("DeviceStatus").AsString
UserLogin = Query.Fields("UserLogin").AsString
HaveNOMADUser = Query.Fields("HaveNOMADUser").AsString
CDID = Query.Fields("CDID").AsString
JazzVersion = Query.Fields("JazzVersion").AsString
OSVersion = Query.Fields("OSVersion").AsString
DeviceName = Query.Fields("DeviceName").AsString
LastAccessTime = Query.Fields("LastAccessTime").AsString
UserActivity = Query.Fields("UserActivity").AsString
if DeviceStatus == VALID_DEVICE_STATUS_TEXT
if UserActivity == '0'
LastAccessTime = '<td bgcolor = "yellowgreen" nowrap="nowrap">' & LastAccessTime & '</td>'
else
LastAccessTime = '<td bgcolor = "salmon" nowrap="nowrap">' & LastAccessTime & '</td>'
endif
else
LastAccessTime = '<td nowrap="nowrap">' & LastAccessTime & '</td>'
endif
if UserSost == CLOSED_USER_SOST_TEXT
if DeviceStatus == VALID_DEVICE_STATUS_TEXT
DeviceStatus = '<font color = "red">' & UpperCase(DeviceStatus) & '</font>'
UserSost = '<font color = "red">' & UpperCase(UserSost) & '</font>'
UserFIO = '<font color = "red">' & UserFIO & '</font>'
UserLogin = '<font color = "red">' & UserLogin & '</font>'
CDID = '<font color = "red">' & CDID & '</font>'
JazzVersion = '<font color = "red">' & JazzVersion & '</font>'
OSVersion = '<font color = "red">' & OSVersion & '</font>'
DeviceName = '<font color = "red">' & DeviceName & '</font>'
endif
if DeviceStatus == INVALID_DEVICE_STATUS_TEXT
DeviceStatus = '<font color = "maroon">' & DeviceStatus & '</font>'
UserSost = '<font color = "maroon">' & UserSost & '</font>'
endif
else
if DeviceStatus == VALID_DEVICE_STATUS_TEXT
DeviceStatus = '<font color = "green">' & DeviceStatus & '</font>'
UserSost = '<font color = "green">' & UserSost & '</font>'
UserFIO = '<font color = "green">' & UserFIO & '</font>'
UserLogin = '<font color = "green">' & UserLogin & '</font>'
CDID = '<font color = "green">' & CDID & '</font>'
JazzVersion = '<font color = "green">' & JazzVersion & '</font>'
OSVersion = '<font color = "green">' & OSVersion & '</font>'
DeviceName = '<font color = "green">' & DeviceName & '</font>'
endif
if DeviceStatus == INVALID_DEVICE_STATUS_TEXT
DeviceStatus = '<font color = "maroon">' & DeviceStatus & '</font>'
endif
endif
if HaveNOMADUser == NO_NOMAD_USER_TEXT
HaveNOMADUser = '<font color = "red">' & UpperCase(HaveNOMADUser) & '</font>'
endif
TextHTML = TextHTML & cr &
"<tr>
<td nowrap='nowrap'>" & UserFIO & "</td>
<td nowrap='nowrap'>" & UserSost & "</td>
<td nowrap='nowrap'>" & DeviceStatus & "</td>
<td nowrap='nowrap'>" & UserLogin & "</td>
<td nowrap='nowrap'>" & HaveNOMADUser & "</td>
<td nowrap='nowrap'>" & CDID & "</td>
<td nowrap='nowrap'>" & JazzVersion & "</td>
<td nowrap='nowrap'>" & OSVersion & "</td>
<td nowrap='nowrap'>" & DeviceName & "</td>
" & LastAccessTime & "
</tr>"
Query.Next
endwhile
TextHTML = TextHTML & CR &
" </tbody>
</table>
<br/>"
Query.Close
Query = nil
// -----------------------------------------------------------------------------
Result = TextHTML
Кому давать права на этот сценарий и просмотр содержимого обложки, на ваше усмотрение.
2) Импортировать файл с обложкой в систему Обложка Пользователи и устройства NOMAD.zip
(опять-таки не забываем про права доступа). Если называли свой сценарий в п.1 иначе, предварительно подправьте информацию в index.htm.
3) Создать новую папку, указав импортированный файл в качестве обложки; отображать можно только обложку.
Пользуйтесь на здоровье! Желаю компании-разработчику "расширить и углубить" идею аудита в рамках коробочной поставки NOMAD.
Желающие добавить вместе с/вместо визуального оформления фильтры в таблицу, не стесняйтесь делиться в комментариях плодами успешных доработок (у нас меньше 50 пользователей JAZZ, цветовой визуализации пока хватает).
Дополнительно, рекомендую создать в системе ещё 1 папку с документацией, указав в качестве обложки https://club.directum.ru/home/mobile#nomad
Авторизуйтесь, чтобы написать комментарий