# Выгрузыка данных из itop в таблицу excel

**URL:** <https://community.itop-itsm.ru/t/vygruzyka-dannyh-iz-itop-v-tabliczu-excel/540>\
**Category:** Использование\
**Created:** [30.Ноябрь.2016 10:00:39 UTC](https://community.itop-itsm.ru/t/vygruzyka-dannyh-iz-itop-v-tabliczu-excel/540 "2016-11-30T10:00:39Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![infalex](https://community.itop-itsm.ru/letter_avatar_proxy/v4/letter/i/4af34b/32.png) [@infalex](https://community.itop-itsm.ru/u/infalex)\
**Post date:** [30.Ноябрь.2016 10:00:39 UTC](https://community.itop-itsm.ru/t/vygruzyka-dannyh-iz-itop-v-tabliczu-excel/540/1 "2016-11-30T10:00:39Z")

</div>

Добрый день.  
Придумал для себя следующую задачу:  
пока что в itop я активно использую cmdb и, выполняя перемещение КЕ с одного пользователя на другого, вынужден постоянно печатать требование-накладную и подписывать ее у этих пользователей.

Так вот, в идеале, хотелось бы нажатием кнопки, ну или хотя бы скриптом, выгружать определенные значения из itop и помещать их в таблицу excel в определенные ячейки, чтобы мне не приходилось ничего заполнять руками, а оставалось бы только распечатать.

Т.е. действия такие: я открываю какой-нибудь КЕ, например, компьютер, меняю ему контакт (таким образом перемещаю на другого), меняю некоторые поля: расположение и т.д., затем, допустим, жму кнопку, и мне выгружается excel-файл требования-накладная, где уже заполнены нужные мне поля: модель, инв.номер этого компьютера, человек, который принял и т.д…

В oql запросах и в php я слаб, поэтому прошу советов, где и что погуглить)

Для начала, я думаю, мне нужно сформировать правильный oql запрос, подскажите запросом:  
мне нужно выгрузить следующие поля: physicaldevice, name, status, business criticity, brand, model, и самое главное person, и organization этого person.

---

<div class="post-metadata">

**Author:** ![infalex](https://community.itop-itsm.ru/letter_avatar_proxy/v4/letter/i/4af34b/32.png) [@infalex](https://community.itop-itsm.ru/u/infalex)\
**Post date:** [30.Ноябрь.2016 14:49:54 UTC](https://community.itop-itsm.ru/t/vygruzyka-dannyh-iz-itop-v-tabliczu-excel/540/2 "2016-11-30T14:49:54Z")

</div>

Например, выполняю oql запрос:  
`SELECT p, l FROM PhysicalDevice AS p JOIN lnkContactToFunctionalCI AS l ON l.functionalci_id = p.id WHERE p.name LIKE '00001033'`

Получаю ФИО владельца (из таблицы lnkContactToFunctionalCI) и его КЕ с именем 00001033 (из таблицы PhysicalDevice), но как провалиться дальше в таблицу Contact, чтобы взять оттуда кроме ФИО еще организацию сотрудника и его должность???

---

<div class="post-metadata">

**Author:** ![infalex](https://community.itop-itsm.ru/letter_avatar_proxy/v4/letter/i/4af34b/32.png) [@infalex](https://community.itop-itsm.ru/u/infalex)\
**Post date:** [30.Ноябрь.2016 17:43:54 UTC](https://community.itop-itsm.ru/t/vygruzyka-dannyh-iz-itop-v-tabliczu-excel/540/3 "2016-11-30T17:43:54Z")

</div>

Отвечаю сам себе:

`SELECT d, p FROM Person AS p JOIN lnkContactToFunctionalCI AS l ON l.contact_id = p.id JOIN PhysicalDevice AS d ON l.functionalci_id = d.id WHERE d.name LIKE '00001033'`

Одна часть есть, надо думать над следующим этапом.

---

<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:** [30.Ноябрь.2016 19:29:24 UTC](https://community.itop-itsm.ru/t/vygruzyka-dannyh-iz-itop-v-tabliczu-excel/540/4 "2016-11-30T19:29:24Z")

</div>

Если накладная в excel, то сделать очень просто. Сохраняем запрос в книге запросов, номер КЕ передаём в запрос как параметр. Дальше в excel на отдельном листе добавляем нашу ссылку из книги запросов в качестве источника данных. На этом же листе указываем ячейку для задания параметра (ексель сам спросит, если ссылка будет с параметром). В накладной на первом листе в нужные ячейки настраиваем передачу значений из результата запроса со второго листа. Меняя номер КЕ в ячейке, получаем новую накладную.

[https://wiki.openitop.org/doku.php?id=2\_3\_0:admin:phrasebook](https://wiki.openitop.org/doku.php?id=2_3_0:admin:phrasebook)  
[https://wiki.openitop.org/doku.php?id=2\_3\_0:user:excel\_report](https://wiki.openitop.org/doku.php?id=2_3_0:user:excel_report)

---

<div class="post-metadata">

**Author:** ![infalex](https://community.itop-itsm.ru/letter_avatar_proxy/v4/letter/i/4af34b/32.png) [@infalex](https://community.itop-itsm.ru/u/infalex)\
**Post date:** [01.Декабрь.2016 14:43:59 UTC](https://community.itop-itsm.ru/t/vygruzyka-dannyh-iz-itop-v-tabliczu-excel/540/5 "2016-12-01T14:43:59Z")

</div>

Наверное, да, это наиболее реальный вариант сейчас.  
Настроил под себя, как мне нужно, единственный момент, который не могу побороть:

В книге запросов у меня сохранен запрос:  
`SELECT p FROM Person AS p WHERE p.friendlyname LIKE :this->name`

я использую ссылку с этого запроса в ячейке excel и при обновлении, excel просит ввести имя person (this-\>name), я ввожу, например, ‘Иванов Иван Иванович’, ну или ‘Иванов Ив%’ и ничего не получаю, потому что excel в itop шлет кириллицу, которую itop не понимает или это mysql не понимает, мне тут трудно понять.

при таком запросе:  
`SELECT p FROM Person AS p WHERE p.email LIKE :this->email`  
все работает, т.к. адрес я передаю на латинице, но это не удобно, вводить почту .  
Хотелось бы вводить ФИО на русском, как быть?)

---

<div class="post-metadata">

**Author:** ![infalex](https://community.itop-itsm.ru/letter_avatar_proxy/v4/letter/i/4af34b/32.png) [@infalex](https://community.itop-itsm.ru/u/infalex)\
**Post date:** [01.Декабрь.2016 15:09:20 UTC](https://community.itop-itsm.ru/t/vygruzyka-dannyh-iz-itop-v-tabliczu-excel/540/6 "2016-12-01T15:09:20Z")

</div>

Хм… помогла галочка в iexplore "Отправлять строки запросов UTF-8 для URL-адресов интрасети"  
Так что теперь все работает.

---

<div class="post-metadata">

**Author:** ![infalex](https://community.itop-itsm.ru/letter_avatar_proxy/v4/letter/i/4af34b/32.png) [@infalex](https://community.itop-itsm.ru/u/infalex)\
**Post date:** [25.Май.2018 11:40:34 UTC](https://community.itop-itsm.ru/t/vygruzyka-dannyh-iz-itop-v-tabliczu-excel/540/7 "2018-05-25T11:40:34Z")

</div>

> [@infalex](#):
>
> SELECT p FROM Person AS p WHERE p.friendlyname LIKE :this-\>name

Добрый день.  
Могу ли я в таком запросе (:this-\>name) указать несколько значений? Например: ‘%Иванов%’ or ‘%Сидоров’  
Попробовал разные варианты.  
Я понимаю, что запрос можно написать так: SELECT p FROM Person AS p WHERE p.friendlyname LIKE ‘%Иванов%’ OR p.friendlyname LIKE ‘%Сидоров’

Но мне нужен именно первый вариант, потому что я использую этот запрос в excel из query book и там ввожу нужное значение.

Спасибо.

---

<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:** [29.Май.2018 14:21:37 UTC](https://community.itop-itsm.ru/t/vygruzyka-dannyh-iz-itop-v-tabliczu-excel/540/8 "2018-05-29T14:21:37Z")

</div>

Может LIKE поменять на REGEXP?  
Внизу таблицы [https://www.itophub.io/wiki/page?id=2\_4\_0%3Aoql%3Aoql\_syntax#binary\_operators](https://www.itophub.io/wiki/page?id=2_4_0%3Aoql%3Aoql_syntax#binary_operators).
