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

При создании нового модуля указал зависимость: 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>

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

Спасибо, но мне не нужно добавлять новое поле на форму. Мне необходимо вывести столбец с ФИО контакта при формировании отчета и только, то есть нет необходимости на постоянной основе добавлять новое поле в класс.

Насколько мне известно, чтобы вывести какое-то значение из БД, нужно, чтобы это значение там хранилось, чтобы оно там хранилось, его нужно туда как-то записать.
Если у вас нет аттрибута на форме, то как вы его записываете в БД?
Импортом?

Начинаем викторину!:nerd_face: Мой вариант ответа: через вкладку “Контакты” в КЕ.:upside_down_face:

В этом случае, в ячейке Пользователь должна быть вложенная таблица, ведь контактов у нас может быть много… Или iTop умеет делать конкатенацию налету?

Коллеги, изначально постановка задачи звучала так:

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

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

Видимо, мы никогда не узнаем, как именно они оказались “назначены”)

Чтобы отобразить столбец с “назначенным” контактом, этот столбец нужно создать в XML (новое поле) и заполнить в интерфейсе. Добавление связанных контактов через вкладку Контакты ничего общего с этим не имеет. Контакты из вкладки нельзя вывести в столбец списка объектов. Айтоп это не инструмент для построения отчетов. Для этой задачи лучше воспользоваться более специализированными средствами.