Добавить в список "Персональный компьютер" столбец Контакты

Коллеги,
Подскажите пожалуйста как отобразить в списке “Персональный компьютер” столбец с назначенным контактом? Нужно для того что бы при создании отчета было понятно кто работает за компьютером.

Спасибо,

По идее создать новый модуль. В XML написать:

<class id="PC">
      <fields>
        <field id="main_user_id" xsi:type="AttributeExternalKey">
          <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">
          <extkey_attcode>main_user_id</extkey_attcode>
          <target_attcode>name</target_attcode>
        </field>
<presentation>
  <list>
          <items>
            <item id="main_user_id">
              <rank>100500</rank>
            </item>
</items>
  </list>
   </presentation>       

P.S. Не факт, что всё написано синтаксически верно. Это, примерный ход мысли…

Поправил XML и привел к следующему виду:

<?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">
          <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">
          <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>

Когда запускаю toolkit то, как я понимаю, не находится класс “PC”:

Может быть при генерации пустого модуля, необходимо было указать зависимости? Если нужно, то я правильно ли понимаю что мне нужны вот эти зависимости: FunctionalCI; PhysicalDevice; ConnectableCI и как синтаксически верно их указать при генерации нового модуля?

User-Device ещё.

Да.

Нет.

Ты вносишь изменения в класс PC, значит твой модуль должен зависеть от того модуля, в модели данных которого этот класс был объявлен. Вот тут про зависимости говорили:

И еще, плохое имя модуля у тебя. Имя должно совпадать с именем директории, и советую использовать нижний регистр.

При создании нового модуля указал зависимость: 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 после прочтения темы: Создание связей между объектами cmdb

Я так понял, что 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?
Вы связь-то с человеком как задаёте?

тот же вопрос)

как это выглядит в интерфейсе?

Делаю так:

  1. Захожу в управление конфигурациями

  2. Выбираю КЕ “Персональный компьютер”

  3. Выбираю настроить список
    image

  4. Ставлю отмечаю параметр “Фамилия”
    image

  5. Появляется столбец “Фамилия”, в котором ничего не отображается.

Это понятно. В самой карточке-то у вас есть поле Person? В конфиге его нет. Поэтому возникает вопрос каким образом вы связываете Компьютер с человеком.

1 лайк

Ввиду того что я понимаю что мной упущена важная составляющая настройки, но сам определить я не могу в чём конкретно проблема, давайте идти от обратного :slight_smile: пожалуйста уточните как должно быть? Как правильно связать компьютер с человеком для моего списка?

Спасибо,

Добавьте в конфиг класса PC

<presentation>
        <details>
          <items>
            <item id="main_user_id">
              <rank>100500</rank>
            </item>

У вас на форме появится поле в котором надо будет указывать человека.