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

**URL:** <https://community.itop-itsm.ru/t/dobavit-v-spisok-personalnyj-kompyuter-stolbecz-kontakty/1314>\
**Category:** Кастомизация\
**Created:** [14.Март.2019 09:23:07 UTC](https://community.itop-itsm.ru/t/dobavit-v-spisok-personalnyj-kompyuter-stolbecz-kontakty/1314 "2019-03-14T09:23:07Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![agniko](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/agniko/32/341_2.png) [@agniko](https://community.itop-itsm.ru/u/agniko)\
**Post date:** [14.Март.2019 09:23:07 UTC](https://community.itop-itsm.ru/t/dobavit-v-spisok-personalnyj-kompyuter-stolbecz-kontakty/1314/1 "2019-03-14T09:23:07Z")

</div>

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

Спасибо,

---

<div class="post-metadata">

**Author:** ![Pavel\_Solopov](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/pavel_solopov/32/287_2.png) [@Pavel\_Solopov](https://community.itop-itsm.ru/u/Pavel_Solopov)\
**Post date:** [14.Март.2019 20:54:13 UTC](https://community.itop-itsm.ru/t/dobavit-v-spisok-personalnyj-kompyuter-stolbecz-kontakty/1314/2 "2019-03-14T20:54:13Z")

</div>

По идее создать новый модуль. В 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. Не факт, что всё написано синтаксически верно. Это, примерный ход мысли…

---

<div class="post-metadata">

**Author:** ![agniko](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/agniko/32/341_2.png) [@agniko](https://community.itop-itsm.ru/u/agniko)\
**Post date:** [15.Март.2019 08:48:10 UTC](https://community.itop-itsm.ru/t/dobavit-v-spisok-personalnyj-kompyuter-stolbecz-kontakty/1314/4 "2019-03-15T08:48:10Z")

</div>

Поправил 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”:

 ![image](https://community.itop-itsm.ru/uploads/default/original/1X/7eb334f9f15f0eb64c938170147038188fe861b1.png)

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

---

<div class="post-metadata">

**Author:** ![Pavel\_Solopov](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/pavel_solopov/32/287_2.png) [@Pavel\_Solopov](https://community.itop-itsm.ru/u/Pavel_Solopov)\
**Post date:** [15.Март.2019 16:04:54 UTC](https://community.itop-itsm.ru/t/dobavit-v-spisok-personalnyj-kompyuter-stolbecz-kontakty/1314/5 "2019-03-15T16:04:54Z")

</div>

User-Device ещё.

---

<div class="post-metadata">

**Author:** ![vladimir](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/vladimir/32/687_2.png) [@vladimir](https://community.itop-itsm.ru/u/vladimir)\
**Post date:** [15.Март.2019 19:47:12 UTC](https://community.itop-itsm.ru/t/dobavit-v-spisok-personalnyj-kompyuter-stolbecz-kontakty/1314/6 "2019-03-15T19:47:12Z")

</div>

> [@agniko](#):
>
> Может быть при генерации пустого модуля, необходимо было указать зависимости?

Да.

> [@agniko](#):
>
> то я правильно ли понимаю что мне нужны вот эти зависимости: FunctionalCI; PhysicalDevice; ConnectableCI

Нет.

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

> [@Создание, изменение и удаление типов КЕ](https://community.itop-itsm.ru/t/sozdanie-izmenenie-i-udalenie-tipov-ke/140/7):
>
> По инструкции оттуда делать ничего не надо. Она описывает общий порядок разработки модулей. Сначала нужно сделать всё точь-в-точь по этим манам: [Добавление поля в КЕ](https://wiki.openitop.org/doku.php?id=2_1_0:customization:add-attribute-sample)[Добавление нового типа КЕ](https://wiki.openitop.org/doku.php?id=2_1_0:customization:add-class-sample) Прям так, как там написано, пункт за пунктом. Смотрим [сюда](https://wiki.openitop.org/doku.php?id=2_1_0:customization:add-attribute-sample#create_your_customization_module): Module Version - три цифры через точку, версия твоего модуля (подробнее см. [semver](http://semver.org/lang/ru/)). Category - [модули, которые обеспечивают изменения в модели данных должны быть в категории ‘бизнес’](https://translate.yandex.ru/?text=Modules%20that%20provide%20modifications%20to%20the%20data%20model%20should%20be%20in%20the%20category%20%27business%27&lang=en-ru). Кроме business есть другие категории, их можно посмотре…

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

---

<div class="post-metadata">

**Author:** ![vladimir](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/vladimir/32/687_2.png) [@vladimir](https://community.itop-itsm.ru/u/vladimir)\
**Post date:** [15.Март.2019 20:00:27 UTC](https://community.itop-itsm.ru/t/dobavit-v-spisok-personalnyj-kompyuter-stolbecz-kontakty/1314/7 "2019-03-15T20:00:27Z")

</div>

> [@Создание нового модуля. Dependencies](https://community.itop-itsm.ru/t/sozdanie-novogo-modulya-dependencies/1169):
>
> Рубрика “Чайник у микрофона” slight_smile Экспериментирую с добавлением новых модулей. Затык возник уже на генераторе пустого модуля. В Dependencie надо указать модули от которых будет зависить создаваемый, у меня сразу вопросы: Что значит зависит? Где найти наименования этих модулей и понять, что в них входит? Можно ли будет позже прописать эти зависимости?

---

<div class="post-metadata">

**Author:** ![agniko](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/agniko/32/341_2.png) [@agniko](https://community.itop-itsm.ru/u/agniko)\
**Post date:** [18.Март.2019 14:28:19 UTC](https://community.itop-itsm.ru/t/dobavit-v-spisok-personalnyj-kompyuter-stolbecz-kontakty/1314/8 "2019-03-18T14:28:19Z")

</div>

При создании нового модуля указал зависимость: itop-endusers-devices/2.5.0  
Установил пустой модуль, далее изменил XML (вставил код который я привёл выше), при проверке toolkit ошибка:

 ![image](https://community.itop-itsm.ru/uploads/default/original/1X/5c1652bbeb73fb289caeb6d368e371321b299f3a.png)

---

<div class="post-metadata">

**Author:** ![agniko](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/agniko/32/341_2.png) [@agniko](https://community.itop-itsm.ru/u/agniko)\
**Post date:** [18.Март.2019 14:42:40 UTC](https://community.itop-itsm.ru/t/dobavit-v-spisok-personalnyj-kompyuter-stolbecz-kontakty/1314/10 "2019-03-18T14:42:40Z")

</div>

Ошибку устранил добавлением \_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>

```

Появилось поле Фамилия, которое можно включить в настройках списка, однако при включении поле остается пустым, фамилии Персоны не отображаются.

---

<div class="post-metadata">

**Author:** ![agniko](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/agniko/32/341_2.png) [@agniko](https://community.itop-itsm.ru/u/agniko)\
**Post date:** [19.Март.2019 13:30:26 UTC](https://community.itop-itsm.ru/t/dobavit-v-spisok-personalnyj-kompyuter-stolbecz-kontakty/1314/11 "2019-03-19T13:30:26Z")

</div>

Добавил зависимость itop-config-mgmt/2.2.0, добавил в строчку SELECT Person в секцию field

Так и не отображается фамилия, такое ощущение что связи нет с нужным полем, не могу понять что не так.

---

<div class="post-metadata">

**Author:** ![Pavel\_Solopov](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/pavel_solopov/32/287_2.png) [@Pavel\_Solopov](https://community.itop-itsm.ru/u/Pavel_Solopov)\
**Post date:** [22.Март.2019 15:41:48 UTC](https://community.itop-itsm.ru/t/dobavit-v-spisok-personalnyj-kompyuter-stolbecz-kontakty/1314/12 "2019-03-22T15:41:48Z")

</div>

А зачем SELECT добавили? Вы как-то вычислить значение пытаетесь что ли?

---

<div class="post-metadata">

**Author:** ![agniko](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/agniko/32/341_2.png) [@agniko](https://community.itop-itsm.ru/u/agniko)\
**Post date:** [25.Март.2019 06:59:16 UTC](https://community.itop-itsm.ru/t/dobavit-v-spisok-personalnyj-kompyuter-stolbecz-kontakty/1314/14 "2019-03-25T06:59:16Z")

</div>

Без SELECT так же не отображаются фамилии.

---

<div class="post-metadata">

**Author:** ![agniko](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/agniko/32/341_2.png) [@agniko](https://community.itop-itsm.ru/u/agniko)\
**Post date:** [25.Март.2019 06:59:59 UTC](https://community.itop-itsm.ru/t/dobavit-v-spisok-personalnyj-kompyuter-stolbecz-kontakty/1314/15 "2019-03-25T06:59:59Z")

</div>

Нет, решил добавить SELECT после прочтения темы: [Создание связей между объектами cmdb](https://community.itop-itsm.ru/t/sozdanie-svyazej-mezhdu-obektami-cmdb/35/20)

---

<div class="post-metadata">

**Author:** ![Pavel\_Solopov](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/pavel_solopov/32/287_2.png) [@Pavel\_Solopov](https://community.itop-itsm.ru/u/Pavel_Solopov)\
**Post date:** [25.Март.2019 07:57:16 UTC](https://community.itop-itsm.ru/t/dobavit-v-spisok-personalnyj-kompyuter-stolbecz-kontakty/1314/16 "2019-03-25T07:57:16Z")

</div>

Я так понял, что SELECT используется для того, чтобы ограничить список доступных для выбора значений. Т.е. дропдаун лист ограничить.

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

---

<div class="post-metadata">

**Author:** ![agniko](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/agniko/32/341_2.png) [@agniko](https://community.itop-itsm.ru/u/agniko)\
**Post date:** [25.Март.2019 08:22:05 UTC](https://community.itop-itsm.ru/t/dobavit-v-spisok-personalnyj-kompyuter-stolbecz-kontakty/1314/18 "2019-03-25T08:22:05Z")

</div>

Да, конечно) каждая КЕ “Персональный компьютер” имеет связанный контакт.  
Мой код выглядит так (фамилия контакта по прежнему не хочет отображаться):

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

---

<div class="post-metadata">

**Author:** ![Pavel\_Solopov](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/pavel_solopov/32/287_2.png) [@Pavel\_Solopov](https://community.itop-itsm.ru/u/Pavel_Solopov)\
**Post date:** [25.Март.2019 10:17:54 UTC](https://community.itop-itsm.ru/t/dobavit-v-spisok-personalnyj-kompyuter-stolbecz-kontakty/1314/19 "2019-03-25T10:17:54Z")

</div>

А вы на форму добавляли аттрибут main\_user\_id?  
Вы связь-то с человеком как задаёте?

---

<div class="post-metadata">

**Author:** ![vladimir](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/vladimir/32/687_2.png) [@vladimir](https://community.itop-itsm.ru/u/vladimir)\
**Post date:** [25.Март.2019 10:40:27 UTC](https://community.itop-itsm.ru/t/dobavit-v-spisok-personalnyj-kompyuter-stolbecz-kontakty/1314/20 "2019-03-25T10:40:27Z")

</div>

> [@Pavel\_Solopov](#):
>
> А вы на форму добавляли аттрибут main\_user\_id?

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

> [@agniko](#):
>
> каждая КЕ “Персональный компьютер” имеет связанный контакт.

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

---

<div class="post-metadata">

**Author:** ![agniko](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/agniko/32/341_2.png) [@agniko](https://community.itop-itsm.ru/u/agniko)\
**Post date:** [25.Март.2019 13:14:59 UTC](https://community.itop-itsm.ru/t/dobavit-v-spisok-personalnyj-kompyuter-stolbecz-kontakty/1314/21 "2019-03-25T13:14:59Z")

</div>

Делаю так:

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

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

3. Выбираю настроить список  
 ![image](https://community.itop-itsm.ru/uploads/default/original/1X/45f5713fe57d47ae77a147f1989828bcf75f43af.png)

4. Ставлю отмечаю параметр “Фамилия”  
 ![image](https://community.itop-itsm.ru/uploads/default/original/1X/6c6bc44680280a009866215277f019b9fded5f1f.png)

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

---

<div class="post-metadata">

**Author:** ![Pavel\_Solopov](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/pavel_solopov/32/287_2.png) [@Pavel\_Solopov](https://community.itop-itsm.ru/u/Pavel_Solopov)\
**Post date:** [25.Март.2019 13:45:31 UTC](https://community.itop-itsm.ru/t/dobavit-v-spisok-personalnyj-kompyuter-stolbecz-kontakty/1314/22 "2019-03-25T13:45:31Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![agniko](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/agniko/32/341_2.png) [@agniko](https://community.itop-itsm.ru/u/agniko)\
**Post date:** [25.Март.2019 13:56:47 UTC](https://community.itop-itsm.ru/t/dobavit-v-spisok-personalnyj-kompyuter-stolbecz-kontakty/1314/24 "2019-03-25T13:56:47Z")

</div>

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

Спасибо,

---

<div class="post-metadata">

**Author:** ![Pavel\_Solopov](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/pavel_solopov/32/287_2.png) [@Pavel\_Solopov](https://community.itop-itsm.ru/u/Pavel_Solopov)\
**Post date:** [25.Март.2019 14:01:05 UTC](https://community.itop-itsm.ru/t/dobavit-v-spisok-personalnyj-kompyuter-stolbecz-kontakty/1314/25 "2019-03-25T14:01:05Z")

</div>

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

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

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

[Следующая страница](https://community.itop-itsm.ru/t/dobavit-v-spisok-personalnyj-kompyuter-stolbecz-kontakty/1314.md?page=2)
