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


#1

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

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

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

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

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


#2

Например, выполняю 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, чтобы взять оттуда кроме ФИО еще организацию сотрудника и его должность???


#3

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

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'

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


#4

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

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


#5

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

В книге запросов у меня сохранен запрос:
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
все работает, т.к. адрес я передаю на латинице, но это не удобно, вводить почту .
Хотелось бы вводить ФИО на русском, как быть?)


#6

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


#7

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

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

Спасибо.


#8

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