При создании нового модуля указал зависимость: itop-endusers-devices/2.5.0
Установил пустой модуль, далее изменил XML (вставил код который я привёл выше), при проверке toolkit ошибка:
Ошибку устранил добавлением _delta=“define”, в результате получился следующий код:
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
<constants>
</constants>
<classes>
<class id="PC">
<fields>
<field id="main_user_id" xsi:type="AttributeExternalKey" _delta="define">
<sql>main_user_id</sql>
<target_class>Person</target_class>
<is_null_allowed>true</is_null_allowed>
<on_target_delete>DEL_MANUAL</on_target_delete>
</field>
<field id="main_user_name" xsi:type="AttributeExternalField" _delta="define">
<extkey_attcode>main_user_id</extkey_attcode>
<target_attcode>name</target_attcode>
</field>
</fields>
<presentation>
<list>
<items>
<item id="main_user_id">
<rank>100500</rank>
</item>
</items>
</list>
</presentation>
</class>
</classes>
<menus>
</menus>
<user_rights>
<groups>
</groups>
<profiles>
</profiles>
</user_rights>
</itop_design>
Появилось поле Фамилия, которое можно включить в настройках списка, однако при включении поле остается пустым, фамилии Персоны не отображаются.
Добавил зависимость itop-config-mgmt/2.2.0, добавил в строчку SELECT Person в секцию field
Так и не отображается фамилия, такое ощущение что связи нет с нужным полем, не могу понять что не так.
А зачем SELECT добавили? Вы как-то вычислить значение пытаетесь что ли?
Без SELECT так же не отображаются фамилии.
Я так понял, что SELECT используется для того, чтобы ограничить список доступных для выбора значений. Т.е. дропдаун лист ограничить.
Извините за глупый вопрос из разряда “проверьте включен ли прибор в розетку”. А вы PC с пользователем связали? Т.е. в карточке самого компа пользователь отображается?
Да, конечно) каждая КЕ “Персональный компьютер” имеет связанный контакт.
Мой код выглядит так (фамилия контакта по прежнему не хочет отображаться):
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
<constants>
</constants>
<classes>
<class id="PC">
<fields>
<field id="main_user_id" xsi:type="AttributeExternalKey" _delta="define">
<sql>main_user_id</sql>
<target_class>Person</target_class>
<is_null_allowed>true</is_null_allowed>
<on_target_delete>DEL_MANUAL</on_target_delete>
</field>
<field id="main_user_name" xsi:type="AttributeExternalField" _delta="define">
<extkey_attcode>main_user_id</extkey_attcode>
<target_attcode>name</target_attcode>
</field>
</fields>
<presentation>
<list>
<items>
<item id="main_user_id">
<rank>100500</rank>
</item>
</items>
</list>
</presentation>
</class>
</classes>
<menus>
</menus>
<user_rights>
<groups>
</groups>
<profiles>
</profiles>
</user_rights>
</itop_design>
А вы на форму добавляли аттрибут main_user_id?
Вы связь-то с человеком как задаёте?
тот же вопрос)
как это выглядит в интерфейсе?
Делаю так:
-
Захожу в управление конфигурациями
-
Выбираю КЕ “Персональный компьютер”
-
Выбираю настроить список
-
Ставлю отмечаю параметр “Фамилия”
-
Появляется столбец “Фамилия”, в котором ничего не отображается.
Это понятно. В самой карточке-то у вас есть поле Person? В конфиге его нет. Поэтому возникает вопрос каким образом вы связываете Компьютер с человеком.
Ввиду того что я понимаю что мной упущена важная составляющая настройки, но сам определить я не могу в чём конкретно проблема, давайте идти от обратного пожалуйста уточните как должно быть? Как правильно связать компьютер с человеком для моего списка?
Спасибо,
Добавьте в конфиг класса PC
<presentation> <details> <items> <item id="main_user_id"> <rank>100500</rank> </item>
У вас на форме появится поле в котором надо будет указывать человека.
Спасибо, но мне не нужно добавлять новое поле на форму. Мне необходимо вывести столбец с ФИО контакта при формировании отчета и только, то есть нет необходимости на постоянной основе добавлять новое поле в класс.
Насколько мне известно, чтобы вывести какое-то значение из БД, нужно, чтобы это значение там хранилось, чтобы оно там хранилось, его нужно туда как-то записать.
Если у вас нет аттрибута на форме, то как вы его записываете в БД?
Импортом?
Начинаем викторину! Мой вариант ответа: через вкладку “Контакты” в КЕ.
В этом случае, в ячейке Пользователь должна быть вложенная таблица, ведь контактов у нас может быть много… Или iTop умеет делать конкатенацию налету?
Коллеги, изначально постановка задачи звучала так:
“Подскажите пожалуйста как отобразить в списке “Персональный компьютер” столбец с назначенным контактом? Нужно для того что бы при создании отчета было понятно кто работает за компьютером.”
То есть мне нужно добавить в отчет столбец main_user_id, который был бы связан с контактом в КЕ. Как я уже говорил, контакты для каждой КЕ “Персональный компьютер” назначены.
Видимо, мы никогда не узнаем, как именно они оказались “назначены”)
Чтобы отобразить столбец с “назначенным” контактом, этот столбец нужно создать в XML (новое поле) и заполнить в интерфейсе. Добавление связанных контактов через вкладку Контакты ничего общего с этим не имеет. Контакты из вкладки нельзя вывести в столбец списка объектов. Айтоп это не инструмент для построения отчетов. Для этой задачи лучше воспользоваться более специализированными средствами.