# Создание, изменение и удаление типов КЕ

**URL:** <https://community.itop-itsm.ru/t/sozdanie-izmenenie-i-udalenie-tipov-ke/140>\
**Category:** Кастомизация\
**Created:** [25.Март.2015 17:28:36 UTC](https://community.itop-itsm.ru/t/sozdanie-izmenenie-i-udalenie-tipov-ke/140 "2015-03-25T17:28:36Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![DenRassk](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/denrassk/32/7_2.png) [@DenRassk](https://community.itop-itsm.ru/u/DenRassk)\
**Post date:** [25.Март.2015 17:28:36 UTC](https://community.itop-itsm.ru/t/sozdanie-izmenenie-i-udalenie-tipov-ke/140/1 "2015-03-25T17:28:36Z")

</div>

Есть насущьная необходимость внести изменения в список типов КЕ.  
Пока видится, что можно часть переименовать, какие-то удалить совсеми на последок создать новые.  
Хотя может гораздо проще удалить все не нужные и создать новые.  
Подскажите - есть пошаговая инструкция на русском языке каким образом удалить лишние и создать новые типы КЕ?  
Пока пытаюсь понять что именно надо делать для оздания новых типов КЕ по инструкции [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-class-sample) , но что-то плохо получается…  
Можно пошагово - хотя бы в общих чертах что и в какой последовательности делать?  
ToolKit я уже установил, но что с ним делать дальше? … или не с ним… чего-тто вечером голова не очень соображает ☹

---

<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.Март.2015 18:55:18 UTC](https://community.itop-itsm.ru/t/sozdanie-izmenenie-i-udalenie-tipov-ke/140/2 "2015-03-25T18:55:18Z")

</div>

На русском языке инструкции нет. В официальной документации есть примеры с картинками, кодом и краткими пояснениями. Например [Adding a new field to the Server class [iTop Documentation]](https://wiki.openitop.org/doku.php?id=2_1_0:customization:add-attribute-sample).  
Первым делом нужно ознакомиться с содержанием раздела Кастомизация. Некоторые вопросы уже разбирались (изменение и удаление).

> [@DenRassk](#):
>
> Можно пошагово - хотя бы в общих чертах что и в какой последовательности делать?

Смотри тут: [Собственные модули](https://community.itop-itsm.ru/t/sobstvennye-moduli/63)

> [@DenRassk](#):
>
> Пока пытаюсь понять что именно надо делать для оздания новых типов КЕ по инструкции [Creating a new class of CI: Monitor [iTop Documentation]](https://wiki.openitop.org/doku.php?id=2_1_0:customization:add-class-sample) , но что-то плохо получается…

В инструкции написано, что именно надо делать. Что не получается?

---

<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:** [27.Март.2015 12:07:44 UTC](https://community.itop-itsm.ru/t/sozdanie-izmenenie-i-udalenie-tipov-ke/140/3 "2015-03-27T12:07:44Z")

</div>

5 сообщений перенесены в новую тему: [Помогите создать свой модуль Customer](https://community.itop-itsm.ru/t/pomogite-sozdat-svoj-modul-customer/145)

---

<div class="post-metadata">

**Author:** ![DenRassk](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/denrassk/32/7_2.png) [@DenRassk](https://community.itop-itsm.ru/u/DenRassk)\
**Post date:** [26.Март.2015 16:58:06 UTC](https://community.itop-itsm.ru/t/sozdanie-izmenenie-i-udalenie-tipov-ke/140/5 "2015-03-26T16:58:06Z")

</div>

[quote=“vladimir, post:2, topic:140”]  
Что не получается?[/quote]  
Не получается понять что делать по инструкции от [сюда](https://wiki.openitop.org/doku.php?id=2_1_0:customization:start#creating_a_module)

1. Create an empty module - генерация пустого модуля, но что вносить в поля:  
Module Version - это моя нумерация версий моего модуля?  
Category - какие бывают категории и на что это влияет?  
Dependencies - какие бывают зависимости и на что это влияет?
2. Install a development instance of iTop, including your empty module in the “extensions” folder" - это что такое необходимо установить и где его взять?
3. Install the toolkit on your developement instance - тут понятно, сделано
4. Edit your extension module and validate it with the toolkit - круто - отредактируйте для себя и проверьте в toolkit, а как это сделать?
5. Apply the changes made to your extension module to the “production” environment - как это сделать?

Возможно у меня совсем тупые вопросы, но хотя бы основные шаги напишите по русски - по одному предложению со ссылкой где это читать.  
Я в этом вообще “дуб-дубом”.  
Спасибо.

---

<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:** [27.Март.2015 10:26:32 UTC](https://community.itop-itsm.ru/t/sozdanie-izmenenie-i-udalenie-tipov-ke/140/7 "2015-03-27T10:26:32Z")

</div>

> [@DenRassk](#):
>
> Не получается понять что делать по инструкции от сюда

По инструкции оттуда делать ничего не надо. Она описывает общий порядок разработки модулей. Сначала нужно сделать всё точь-в-точь по этим манам:

1. [Добавление поля в КЕ](https://wiki.openitop.org/doku.php?id=2_1_0:customization:add-attribute-sample)
2. [Добавление нового типа КЕ](https://wiki.openitop.org/doku.php?id=2_1_0:customization:add-class-sample)

Прям так, как там написано, пункт за пунктом.

> [@DenRassk](#):
>
> 1. Create an empty module - генерация пустого модуля, но что вносить в поля:Module Version - это моя нумерация версий моего модуля?Category - какие бывают категории и на что это влияет?Dependencies - какие бывают зависимости и на что это влияет?

Смотрим [сюда](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 есть другие категории, их можно посмотреть в исходниках iTop, но пока они не должны интересовать.
- Dependencies - [кастом модуль (где добавляем новое поле к Серверу) зависит от модуля iTop управления конфигурацией версии 2.0.0, в котором класс Сервер определяется](https://translate.yandex.ru/?text=Our%20customization%20module%20depends%20on%20the%20module%20iTop%20Configuration%20Management%20version%202.0.0%20in%20which%20the%20Server%20class%20is%20defined&lang=en-ru). Как написано в [зеленом блоке после таблицы](https://wiki.openitop.org/doku.php?id=2_1_0:customization:add-attribute-sample#create_your_customization_module), тут указываются модули, в которых описана изменяемая твоим модулем функциональность. Это нужно для того, чтобы iTop знал в какой последовательности подгружать модули.

> [@DenRassk](#):
>
> 1. Install a development instance of iTop, including your empty module in the “extensions” folder" - это что такое необходимо установить и где его взять?

“Установите отдельный экземпляр iTop для разработки, включающий ваш пустой модуль в папке “дополнения””. Т.е. просто ставишь еще один iTop, в папку itop/extensions relftim папку со своим модулем.

> [@DenRassk](#):
>
> 1. Edit your extension module and validate it with the toolkit - круто - отредактируйте для себя и проверьте в toolkit, а как это сделать?

Как пользоваться [ToolKit](https://wiki.openitop.org/doku.php?id=2_1_0:customization:start#using_the_toolkit). На первой вкладке проверяется правильность модели данных; изменил модуль, нажал Refresh, если есть ошибки, исправляешь, если нет, идешь на вторую вкладку. На второй вкладке нажимаешь Refresh, если отображаются необходимые изменения в БД, нажимаешь Udpate iTop Code And Database, если изменять БД не нужно, жмешь Udpate iTop Code. Всё, изменения модуля применены.  
А какие изменения в самом модуле нужны, я знать не могу.

> [@DenRassk](#):
>
> 1. Apply the changes made to your extension module to the “production” environment - как это сделать?

Кидаешь папку с модулем в экземпляр iTop, который у тебя в эксплуатации, разрешаешь редактирование config-itop.php, запускаешь [http://itop/setup](http://itop/setup) и обновляешь.

Но сначала [это](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). Иначе никак.

---

<div class="post-metadata">

**Author:** ![CheaterUA](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/cheaterua/32/354_2.png) [@CheaterUA](https://community.itop-itsm.ru/u/CheaterUA)\
**Post date:** [28.Февраль.2019 15:29:12 UTC](https://community.itop-itsm.ru/t/sozdanie-izmenenie-i-udalenie-tipov-ke/140/8 "2019-02-28T15:29:12Z")

</div>

У меня есть аналогичные потребности. Нигде не нашел, как можно переименовать существующий тип КЕ. У примеру у меня нет типа КЕ - Монитор, но есть никому ненужный Планшет с подходящим набором полей. Хочу переименовать Планшет в Монитор и поменять иконку. Есть какая-то инструкция, как это сделать? Уверен, что это будет немного проще, чем создание нового типа с нуля.

---

<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:** [06.Март.2019 16:19:22 UTC](https://community.itop-itsm.ru/t/sozdanie-izmenenie-i-udalenie-tipov-ke/140/9 "2019-03-06T16:19:22Z")

</div>

Вот же пример: [Creating a new class of CI: Monitor [iTop Documentation]](https://www.itophub.io/wiki/page?id=2_6_0%3Acustomization%3Aadd-class-sample). Там даже готовый код модуля есть, ничего создавать с нуля не нужно. Если нравится именно класс Планшет, то скопируй его код в свой новый класс Монитор.

> [@CheaterUA](#):
>
> Хочу переименовать Планшет в Монитор и поменять иконку.

А по поводу этой идеи приличных слов у меня нет…

---

<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:** [06.Март.2019 23:29:16 UTC](https://community.itop-itsm.ru/t/sozdanie-izmenenie-i-udalenie-tipov-ke/140/10 "2019-03-06T23:29:16Z")

</div>

А вот это коллеге не подойдёт?

### Rename a node

Another attribute is `_rename_from` . Use it to specify that the item (e.g. a class field) is in fact an existing item renamed from `_rename_from` to `id` .

Или это про другое?

---

<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:** [06.Март.2019 23:44:04 UTC](https://community.itop-itsm.ru/t/sozdanie-izmenenie-i-udalenie-tipov-ke/140/11 "2019-03-06T23:44:04Z")

</div>

Я бы сделал так:

1. \iTop\datamodels\2.x\itop-endusers-devices\datamodel.itop-enduser-devices.xml
2. Скопировать ветку 
3. По инструкции создайте пустой модуль (не забудьте в dependencies указать itop-endusers-devices/2.5.0. Вставьте в его xml скопированное в п.2.
4. Переименуйте lass id=“Tablet” в Monitor, пропишите имя иконки и положите её в папку images и установите модуль ToolKit-ом.

Ну а если вам планшет как соринка в глазу. Добавьте ещё строчку .

Должно вроде сработать, Владимир поправит, если где не прав. 🙂

---

<div class="post-metadata">

**Author:** ![CheaterUA](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/cheaterua/32/354_2.png) [@CheaterUA](https://community.itop-itsm.ru/u/CheaterUA)\
**Post date:** [07.Март.2019 11:10:53 UTC](https://community.itop-itsm.ru/t/sozdanie-izmenenie-i-udalenie-tipov-ke/140/12 "2019-03-07T11:10:53Z")

</div>

Уже создал отдельно новый класс, но за подсказку спасибо 🙂

---

<div class="post-metadata">

**Author:** ![CheaterUA](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/cheaterua/32/354_2.png) [@CheaterUA](https://community.itop-itsm.ru/u/CheaterUA)\
**Post date:** [12.Март.2019 12:05:16 UTC](https://community.itop-itsm.ru/t/sozdanie-izmenenie-i-udalenie-tipov-ke/140/13 "2019-03-12T12:05:16Z")

</div>

Столкнулся с еще одной проблемой:  
Тип КЕ “Monitor” создан. Я могу создавать КЕ, но(!) при создании КЕ типа “Monitor” необходимо указать Производителя и Модель. Производителей забить в базу - не проблему, а вот когда создаешь новую модель, там указывается 3 поля - Бренд, Модель и Тип КЕ, так вот в списке типов КЕ Monitorа нет.

---

<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:** [12.Март.2019 21:10:37 UTC](https://community.itop-itsm.ru/t/sozdanie-izmenenie-i-udalenie-tipov-ke/140/14 "2019-03-12T21:10:37Z")

</div>

Это “захардкоженный” справочник

 ![image](https://community.itop-itsm.ru/uploads/default/original/1X/31612009ff3a36c9a6769e87a9f37f55df170dd0.png)  
Добавьте в xml модель вашего класса

> ```
> <class id="Model">
> 
> ```

```
<fields>
         <field id="type" xsi:type="AttributeEnum">
           <values>
             <value id="Monitor">Monitor</value>
           </values>
           </field>
       </fields>

```

Должен добавиться ещё один пункт меню.

---

<div class="post-metadata">

**Author:** ![CheaterUA](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/cheaterua/32/354_2.png) [@CheaterUA](https://community.itop-itsm.ru/u/CheaterUA)\
**Post date:** [13.Март.2019 08:43:50 UTC](https://community.itop-itsm.ru/t/sozdanie-izmenenie-i-udalenie-tipov-ke/140/15 "2019-03-13T08:43:50Z")

</div>

А где именно нужно добавлять? В папке extensions или в env-production?

---

<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:32:43 UTC](https://community.itop-itsm.ru/t/sozdanie-izmenenie-i-udalenie-tipov-ke/140/16 "2019-03-14T20:32:43Z")

</div>

По идее в extantion, а потом через ToolKit внести изменения. По идеологии так, вроде, правильно. Но я тут не берусь утверждать, сам постигаю пока. 👨‍🎓

---

<div class="post-metadata">

**Author:** ![CheaterUA](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/cheaterua/32/354_2.png) [@CheaterUA](https://community.itop-itsm.ru/u/CheaterUA)\
**Post date:** [15.Март.2019 08:58:00 UTC](https://community.itop-itsm.ru/t/sozdanie-izmenenie-i-udalenie-tipov-ke/140/17 "2019-03-15T08:58:00Z")

</div>

Мне кажется это неправильно…  
Я вижу, что в /html/datamodels/2.x/itop-config-mgmt/datamodel.itop-config-mgmt.xml есть раздел \<calss id=“Model” …  
и в нем есть набор полей, которые должны подтягиваться. Может быть правильнее просто вписать туда еще одно поле?

---

<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 12:21:31 UTC](https://community.itop-itsm.ru/t/sozdanie-izmenenie-i-udalenie-tipov-ke/140/18 "2019-03-15T12:21:31Z")

</div>

Еще раз: любые правки только через собственные модули в extensions! Никаких исправлений в datamodels/2.x, а тем более в env-production делать нельзя.

---

<div class="post-metadata">

**Author:** ![CheaterUA](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/cheaterua/32/354_2.png) [@CheaterUA](https://community.itop-itsm.ru/u/CheaterUA)\
**Post date:** [15.Март.2019 12:23:30 UTC](https://community.itop-itsm.ru/t/sozdanie-izmenenie-i-udalenie-tipov-ke/140/19 "2019-03-15T12:23:30Z")

</div>

т.е. если я допишу это в модуле add-class - он просто допишет этот пункт в соответствующий файл в прод?

---

<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 13:30:19 UTC](https://community.itop-itsm.ru/t/sozdanie-izmenenie-i-udalenie-tipov-ke/140/20 "2019-03-15T13:30:19Z")

</div>

[https://www.itophub.io/wiki/page?id=2\_6\_0%3Acustomization%3Aadd-class-sample#add\_monitor\_class\_in\_modeltype](https://www.itophub.io/wiki/page?id=2_6_0%3Acustomization%3Aadd-class-sample#add_monitor_class_in_modeltype)

Хм, кажется, это уже четвертое появление этой ссылки в теме 🙄

@CheaterUA, не противься своей судьбе, перейди по ссылке))

---

<div class="post-metadata">

**Author:** ![CheaterUA](https://community.itop-itsm.ru/user_avatar/community.itop-itsm.ru/cheaterua/32/354_2.png) [@CheaterUA](https://community.itop-itsm.ru/u/CheaterUA)\
**Post date:** [15.Март.2019 13:36:27 UTC](https://community.itop-itsm.ru/t/sozdanie-izmenenie-i-udalenie-tipov-ke/140/21 "2019-03-15T13:36:27Z")

</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:** [15.Март.2019 15:53:19 UTC](https://community.itop-itsm.ru/t/sozdanie-izmenenie-i-udalenie-tipov-ke/140/22 "2019-03-15T15:53:19Z")

</div>

Логика проста. При загрузке iTop считывает кофиги модулей и формирует рабочую конфигурацию.  
Когда вы вносите изменения через extension то фактически переопоеделяете/доопределяете какие-то директивы коробочной конфигурации.  
Если вы внесёте измененич прямо в коробочный конфиг, то при выходе новой версии вам надо будет запомнить где были изменения, найти эти места в новом конфиге и вставить туда.  
А так вы просто загрузите extension после нового конфига.
