APIUpdateListXML |
|
Обновляет один или несколько элементов списка.
APIUpdateListXML(List, xml)
Аргументы
List
Числовое значение определяющее номер списка, см. перечисление Типы списков.
xml
Данные, содержащие один элемент, или список элементов. Имена элементов для разных списков описаны в разделе Типы списков. Формат XML данных описан в файле XML схемы schema.xsd. В процессе обновления данные проходят проверку на соответствие этой схеме, при этом может быть возвращена ошибка (исключение).
Замечание
Данные при обновлении объекта, как правило, переписываются полностью. Т.е. должны быть заданы все XML атрибуты.
Пример использования
Скрипт добавляет (либо меняет Имя) дополнительный атрибут клиента - в случае отсутствия. Если существует атрибут с заданным именем, но с другим GUID - такой атрибут удаляется.
Set Srv = CreateObject("TrafInsp.TrafInspAdmin")
APIPass = "123456" 'Пароль для доступа через API
Srv.APILogon(APIPass)
'Дополнительный атрибут клиента Сотовый телефон
AttrGUID = "{9B843411-1165-4562-8F98-77F0FC9FC894}"
AttrName = "Сотовый телефон"
AttrNote = "Сотовый"
Set Dom = WScript.CreateObject("Msxml2.DOMDocument.4.0")
Set DomX1 = WScript.CreateObject("Msxml2.DOMDocument.4.0")
Set DomX2 = WScript.CreateObject("Msxml2.DOMDocument.4.0")
'Вытаскиваем в XML список всех атрибутов абонентов
itUserAdvAttr = 17
Dom.LoadXML Srv.APIGetListXML(itUserAdvAttr, , , 2)
Set DocEl = Dom.DocumentElement
objPuth = "UserAttrItem[@GUID = '" & AttrGUID & "']"
Set currNode1 = DocEl.SelectSingleNode(objPuth)
'Проверка наличия заданного GUID атрибута
If currNode1 IS Nothing Then
'Проверка наличия заданного имени атрибута
objPuth = "UserAttrItem[@DisplayName = '" & AttrName & "']"
Set currNode2 = DocEl.SelectSingleNode(objPuth)
If currNode2 Is Nothing Then
'Добавление элемента - если не найдено
DomX1.LoadXML "<UserAttrList/>"
Set Root = DomX1.DocumentElement
With Root.AppendChild(DomX1.CreateElement("UserAttrItem"))
.setAttribute "GUID", AttrGUID
.setAttribute "DisplayName", AttrName
.setAttribute "VisInList", -1
.setAttribute "Note", AttrNote
.setAttribute "ChangeLogging", -1
.setAttribute "VisInMonitor", 0
End With
'Добавляем атрибут для клиента
Srv.APIInsertListXML itUserAdvAttr, "", DomX1.xml
WScript.Echo "Добавлен атрибут " & AttrName
Else
'Удаление существующего элемента с таким же именем
DomX1.LoadXML "<UserAttrList/>"
Set Root = DomX1.DocumentElement
Root.AppendChild(DomX1.CreateElement("UserAttrItem")).setAttribute "GUID", currNode2.getAttribute("GUID")
Srv.APIDeleteListXML itUserAdvAttr, DomX1.xml
WScript.Echo "Неправильный GUID у атрибута " & AttrName & "! Атрибут удален!"
'Добавление элемента
DomX1.LoadXML "<UserAttrList/>"
Set Root = DomX1.DocumentElement
With Root.AppendChild(DomX1.CreateElement("UserAttrItem"))
.setAttribute "GUID", AttrGUID
.setAttribute "DisplayName", AttrName
.setAttribute "VisInList", -1
.setAttribute "Note", AttrNote
.setAttribute "ChangeLogging", -1
.setAttribute "VisInMonitor", 0
End With
'Добавляем атрибут для клиента
Srv.APIInsertListXML itUserAdvAttr, "", DomX1.xml
WScript.Echo " Добавлен атрибут " & AttrGUID & " " & AttrName
End If
Else
'Проверка соответствия имени найденного элемента
If currNode1.getAttribute("DisplayName") <> AttrName Then
'Изменение имени существующего элемента
NameTCh = currNode1.getAttribute("DisplayName")
WScript.Echo "Неправильное имя у атрибута " & AttrGUID & "!"
DomX1.LoadXML Srv.APIGetListXML(itUserAdvAttr, , , 0)
Set DocEl = DomX1.DocumentElement
objPuth = "UserAttrItem[@GUID = '" & AttrGUID & "']"
Set currNode2 = DocEl.SelectSingleNode(objPuth)
currNode2.setAttribute "DisplayName", AttrName
DomX2.LoadXML "<UserAttrList/>"
Set DocEl = DomX2.DocumentElement
DocEl.appendChild currNode2
DomX2.Save "tattr2.xml"
'Меняем имя
Srv.APIUpdateListXML itUserAdvAttr, DomX2.xml
WScript.Echo " Изменено имя атрибута с " & NameTCh & " на " & AttrName
Else
WScript.Echo "Атрибут " & AttrGUID & " " & AttrName & " уже есть"
End If
End If
Текущая страница справки: help.smart-soft.ru/index.html?apiupdatelistxml.htm