<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>API - Qlik Sense - Обучение, учебник, онлайн курс</title>
	<atom:link href="https://qliksense.ivan-shamaev.ru/tag/api/feed/" rel="self" type="application/rss+xml" />
	<link>https://qliksense.ivan-shamaev.ru/tag/api/</link>
	<description>Qlik Sense на русском языке. Пошаговые уроки для изучения Клик Сенс</description>
	<lastBuildDate>Mon, 14 Feb 2022 07:46:22 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.1</generator>

<image>
	<url>https://qliksense.ivan-shamaev.ru/wp-content/uploads/2018/07/QlikSense_ICON2-150x150.png</url>
	<title>API - Qlik Sense - Обучение, учебник, онлайн курс</title>
	<link>https://qliksense.ivan-shamaev.ru/tag/api/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Руководство разработчика API &#8211; Справочник по Qlik Sense API</title>
		<link>https://qliksense.ivan-shamaev.ru/api-reference-qlik-sense-qliksense/</link>
					<comments>https://qliksense.ivan-shamaev.ru/api-reference-qlik-sense-qliksense/#respond</comments>
		
		<dc:creator><![CDATA[qliksense-expert]]></dc:creator>
		<pubDate>Fri, 09 Aug 2019 12:40:45 +0000</pubDate>
				<category><![CDATA[Уровень 2]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[API Qlik Engine]]></category>
		<category><![CDATA[PowerShell & Qlik Sense Engine API]]></category>
		<category><![CDATA[Python Connection Qlik API]]></category>
		<category><![CDATA[Qlik]]></category>
		<category><![CDATA[qlik sense]]></category>
		<category><![CDATA[qlik sense api]]></category>
		<category><![CDATA[Qlik Sense API & Python]]></category>
		<category><![CDATA[qlik sense method api]]></category>
		<category><![CDATA[методы api]]></category>
		<category><![CDATA[подключение к qlik sense api]]></category>
		<category><![CDATA[подключение к qlik sense desktop api]]></category>
		<guid isPermaLink="false">https://qliksense.ivan-shamaev.ru/?p=1397</guid>

					<description><![CDATA[<p>Введение в Qlik Sense API. Руководство для разработчика Engine JSON API Qlik Engine JSON API представляет собой протокол WebSocket, который использует JSON для передачи информации между Qlik Sense Engine и клиентами. Qlik Engine JSON API состоит из набора объектов , представляющих приложения, списки и так далее. Эти объекты организованы в<a class="moretag" href="https://qliksense.ivan-shamaev.ru/api-reference-qlik-sense-qliksense/"> Читать дальше&#8230;</a></p>
<p>Сообщение <a href="https://qliksense.ivan-shamaev.ru/api-reference-qlik-sense-qliksense/">Руководство разработчика API &#8211; Справочник по Qlik Sense API</a> появились сначала на <a href="https://qliksense.ivan-shamaev.ru">Qlik Sense - Обучение, учебник, онлайн курс</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2>Введение в Qlik Sense API. Руководство для разработчика</h2>
<h2>Engine JSON API</h2>
<p><strong>Qlik Engine JSON API</strong> представляет собой протокол WebSocket, который использует JSON для передачи информации между Qlik Sense Engine и клиентами. Qlik Engine JSON API состоит из набора объектов , представляющих приложения, списки и так далее. Эти объекты организованы в иерархическую структуру. Когда вы отправляете запросы в API, вы выполняете действия над этими объектами.</p>
<p><strong>Qlik Engine JSON API может быть использован для:</strong></p>
<ul>
<li>создания приложений и загрузки данных</li>
<li>создания историй (data stories)</li>
<li>получение системной информации</li>
</ul>
<p><strong>Типичные ситуации, в которых вы бы использовали JSON API Qlik Engine:</strong></p>
<ul>
<li>создание специализированного клиента в качестве</li>
<li>автономного или веб-приложения</li>
<li>автоматизация повторяющихся или сложных</li>
<li>обновлений или изменений в приложениях</li>
</ul>
<h2>Extension API</h2>
<p>API расширения (Extension API) состоит из методов и свойств, используемых для создания пользовательских расширений визуализации (custom visualization extensions).</p>
<h2>Backend API</h2>
<p>Backend API состоит из нескольких методов и используется для связи с ассоциативным механизмом Qlik. Он предоставляет вспомогательные функции для вызовов ассоциативного механизма Qlik и доступ к данным ассоциативного механизма Qlik. Вкратце, Backend API &#8211; это оболочка для выбранных методов Qlik Engine JSON API, но с той разницей, что Backend API знает о контексте, то есть текущем соединении WebSocket и приложении Qlik Sense.</p>
<h2>Capability APIs</h2>
<p><strong>API-интерфейсы Capability</strong> представляют собой набор API-интерфейсов JavaScript, которые позволяют легко встраивать контент Qlik Sense в веб-страницу. С помощью всего лишь нескольких строк кода можно создать визуализацию, использующую библиотеку визуализации Qlik Sense.</p>
<p>API-интерфейсы Capability зависят от AngularJS и RequireJS, поэтому вам необходимо принять это во внимание при интеграции API-возможностей Capability в существующий проект, в котором также используются эти библиотеки.</p>
<p><strong>Термин «API-интерфейс Capability»</strong> был введен в Qlik Sense 2.1. Некоторые из API-интерфейсов Capability были доступны до этой версии, опубликованной под названием Mashup API.</p>
<table width="286" style="width: 100%; height: 324px;">
<tbody>
<tr style="height: 27px;">
<td width="115" style="height: 27px;"><span style="color: #003300;"><strong>Capability API</strong></span></td>
<td width="171" style="height: 27px;"><span style="color: #003300;"><strong>Namespace</strong></span></td>
</tr>
<tr style="height: 27px;">
<td width="115" style="height: 27px;"><strong>Root API</strong></td>
<td width="171" style="height: 27px;"><em>qlik</em></td>
</tr>
<tr style="height: 27px;">
<td width="115" style="height: 27px;"><strong>App API</strong></td>
<td width="171" style="height: 27px;"><em>qlik.app</em></td>
</tr>
<tr style="height: 27px;">
<td width="115" style="height: 27px;"><strong>Bookmark API</strong></td>
<td width="171" style="height: 27px;"><em>qlik.app.bookmark</em></td>
</tr>
<tr style="height: 27px;">
<td width="115" style="height: 27px;"><strong>Field API</strong></td>
<td width="171" style="height: 27px;"><em>qlik.app.field</em></td>
</tr>
<tr style="height: 27px;">
<td width="115" style="height: 27px;"><strong>Selection API</strong></td>
<td width="171" style="height: 27px;"><em>qlik.app.selectionState</em></td>
</tr>
<tr style="height: 27px;">
<td width="115" style="height: 27px;"><strong>Variable API</strong></td>
<td width="171" style="height: 27px;"><em>qlik.app.variable</em></td>
</tr>
<tr style="height: 27px;">
<td width="115" style="height: 27px;"><strong>Visualization API</strong></td>
<td width="171" style="height: 27px;"><em>qlik.app.visualization</em></td>
</tr>
<tr style="height: 27px;">
<td width="115" style="height: 27px;"><strong>Global API</strong></td>
<td width="171" style="height: 27px;"><em>qlik.global</em></td>
</tr>
<tr style="height: 27px;">
<td width="115" style="height: 27px;"><strong>Navigation API</strong></td>
<td width="171" style="height: 27px;"><em>qlik.navigation</em></td>
</tr>
<tr style="height: 27px;">
<td width="115" style="height: 27px;"><strong>Table API</strong></td>
<td width="171" style="height: 27px;"><em>qlik.table</em></td>
</tr>
<tr style="height: 27px;">
<td width="115" style="height: 27px;"><strong>Theme API</strong></td>
<td width="171" style="height: 27px;"><em>qlik.theme</em></td>
</tr>
</tbody>
</table>
<h3>Root API</h3>
<p>Root API является внешним интерфейсом Qlik Sense и доступен в виде пространства имен qlik. Он предоставляет методы открытия приложений, получения ссылки на текущее приложение, установки определенного языка и регистрации обратных вызовов для обработки ошибок. Корневой API также содержит методы для перечисления доступных приложений и расширений, а также для регистрации расширений (extensions), которые вы создаете на лету (используя API визуализации &#8211; Visualization API).</p>
<h3>App API</h3>
<p>Метод qlik.openApp является точкой входа в API приложения и возвращает объекты JavaScript приложения с методами для работы с приложением Qlik Sense, к которому вы подключены.</p>
<h3>Bookmark API</h3>
<p>Bookmark API содержит методы для работы с закладками в приложении Qlik Sense, к которому вы подключены.</p>
<h3>Field API</h3>
<p>Метод qlik.app.field является точкой входа в Field API. Он возвращает объект QField с методами и свойствами, которые можно использовать для управления полем.</p>
<h3>Global API</h3>
<p>Метод qlik.global является точкой входа в Global API. Возвращает объект JavaScript с глобальными методами.</p>
<h3>Navigation API</h3>
<p>Navigation API (API навигации) позволяет вам перемещаться в приложении Qlik Sense и предназначен для использования в виджетах и ​​расширениях визуализации, и не будет работать в сценариях Mashup.</p>
<h3>Selection API</h3>
<p>Selection API является внешним интерфейсом для изменения выборки по модели данных Qlik Sense (фильтрация данных) и позволяет разработчикам работать с ассоциативной моделью.</p>
<h3>Table API</h3>
<p>Table API (API таблиц) позволяет разработчикам работать с табличными данными, возвращаемыми из ассоциативного механизма Qlik, не имея глубоких знаний о внутренних конструкциях, таких как, например, Гиперкуб (Hypercube).</p>
<h3>Theme API</h3>
<p>Theme API &#8211; это внешний интерфейс для тем Qlik Sense. Он позволяет настраивать визуализации, включая расширения и виджеты, вне Qlik Sense.</p>
<h3>Variable API</h3>
<p><span>Variable API &#8211; это внешний интерфейс для управления переменными </span><span class="CommonComponentsQlik Sense"><span>Qlik Sense</span></span><span>.</span></p>
<h3>Visualization API</h3>
<p>Visualization API (API визуализации) &#8211; это внешний интерфейс для визуализаций Qlik Sense. Вы можете создавать новые визуализации на лету на основе объекта сессии. Эти визуализации не сохраняются в приложении. Вы также можете получить уже существующие визуализации из приложения, используя Visualization API.</p>
<h2>Custom Component API</h2>
<p>API для создания пользовательских компонентов (собственных компонентов).</p>
<p><span>Пользовательские компоненты содержат следующие элементы:</span></p>
<ul>
<li><span>Файл определения (QEXT).</span></li>
<li><span>Основной файл JavaScript.</span></li>
<li><span>Дополнительные ресурсы, такие как библиотеки JavaScript, изображения и шрифты.</span></li>
</ul>
<p><span>Пользовательские компоненты &#8211; это в основном директивы AngularJS. </span><span>Цель файла JavaScript &#8211; вернуть подпись директивы AngularJS.</span></p>
<h2>App Integration API<span style="color: #ff6600;"><em><strong></strong></em></span></h2>
<p>Используется для embedded аналитика, позволяет генерировать ссылки url для встраивания в iframe.</p>
<h2>Single Integration API</h2>
<p><span>Single Integration API позволяет создавать URL-адреса, который возвращает полную HTML-страницу, содержащую, например, встроенную визуализацию </span><span class="CommonComponentsQlik Sense"><span>Qlik Sense</span></span><span> . Этот URL-адрес можно встроить в веб-страницу, например, включив его в iframe.</span></p>
<h2>qlik-visual web component</h2>
<p>Qlik-Visual Web Component &#8211; это определение пользовательского элемента &lt;qlik-visual&gt;, которое использует API визуализации и представляет его как веб-компонент. Он позволяет создавать и изменять визуализации на лету, не используя клиент Qlik Sense.</p>
<p><strong>Qlik Visual поддерживает:</strong></p>
<ul>
<li>Отображение существующей визуализации (путем определения видимости элемента) на веб-странице.</li>
<li>Создание визуализаций на лету с использованием существующего приложения путем внедрения их в веб-страницу.</li>
<li>Динамически изменяющие свойства и атрибуты визуализаций.</li>
</ul>
<h2>enigma.js</h2>
<p><strong>Библиотека enigma.js</strong> помогает вам общаться с ассоциативным механизмом Qlik в Qlik Sense и Qlik Sense Desktop. Вы можете использовать его для создания своего собственного клиента или для создания собственного сервиса Node.js. <strong>Примерами использования могут быть создание ваших собственных аналитических инструментов на основе браузера, серверных служб или сценариев командной строки.</strong></p>
<p>Библиотека <strong>enigma.js</strong> может использоваться в качестве SDK или для выполнения операций CRUD (то есть создания, чтения, обновления и удаления) в приложениях и в сущностях приложений.</p>
<p><span><strong>enigma.js</strong> &#8211; это библиотека, предназначенная исключительно для <strong>Engine API (websocket)</strong>. </span><span>Экспорт изображений / PDF-файлов &#8211; это API-интерфейсы REST в Qlik Sense для других служб (отчеты), которые предоставляются через интерфейс capability API:</span></p>
<ul>
<li><a href="https://help.qlik.com/en-US/sense-developer/September2019/Subsystems/APIs/Content/Sense_ClientAPIs/CapabilityAPIs/VisualizationAPI/exportImg-method.htm" target="_blank" rel="noopener noreferrer">https://help.qlik.com/en-US/sense-developer/September2019/Subsystems/APIs/Content/Sense_ClientAPIs/CapabilityAPIs/VisualizationAPI/exportImg-method.htm</a></li>
<li><a href="https://help.qlik.com/en-US/sense-developer/September2019/Subsystems/APIs/Content/Sense_ClientAPIs/CapabilityAPIs/VisualizationAPI/exportPdf-method.htm" target="_blank" rel="noopener noreferrer">https://help.qlik.com/en-US/sense-developer/September2019/Subsystems/APIs/Content/Sense_ClientAPIs/CapabilityAPIs/VisualizationAPI/exportPdf-method.htm</a></li>
</ul>
<p><strong>Официальная документация Enigma.JS:</strong> <a href="https://github.com/qlik-oss/enigma.js" target="_blank" rel="noopener noreferrer">https://github.com/qlik-oss/enigma.js</a></p>
<h2>enigma-go</h2>
<p>Библиотека enigma-go помогает вам общаться с ассоциативным механизмом Qlik в Qlik Sense и Qlik Sense Desktop. Примерами использования могут быть создание ваших собственных аналитических инструментов, серверных служб или других инструментов, взаимодействующих с ассоциативным механизмом Qlik. Библиотека enigma-go может использоваться в качестве SDK или для выполнения операций CRUD (то есть создания, чтения, обновления и удаления) в приложениях и в сущностях приложений.</p>
<h2>leonardo-ui</h2>
<p>leonardo-ui &#8211; это библиотека с открытым исходным кодом, которая используется в Qlik Sense и предоставляет множество графических компонентов пользовательского интерфейса. Разметка этих компонентов может использоваться в расширениях, гибридных приложениях и виджетах. Библиотека поддерживается и поддерживается Qlik. leonardo-ui можно использовать как с Qlik Sense, так и с Qlik Sense Desktop.</p>
<h2>picasso.js</h2>
<p>Библиотека диаграмм picasso.js оптимизирована для создания пользовательских, интерактивных и мощных визуализаций для платформы Qlik Sense Analytics.</p>
<h2><madcap:concept term="Building visualization extensions" xmlns:madcap="http://www.madcapsoftware.com/Schemas/MadCap.xsd"><span class="OpenSourceNebula">nebula.js</span></madcap:concept></h2>
<p><strong><span class="OpenSourceNebula">nebula.js</span></strong><span> &#8211; это библиотека с открытым исходным кодом, разработанная на GitHub. </span><span class="OpenSourceNebula"><span>nebula.js</span></span><span> &#8211; это набор библиотек и API-интерфейсов JavaScript, не <span class="OpenSourceNebula">зависящих</span> от продукта и инфраструктуры, который помогает разработчикам интегрировать визуализации и гибридные приложения поверх </span><span class="CommonComponentsEngineName"><span>ассоциативного механизма </span></span><span></span><span class="CommonComponentsSenseDesktopName"><span>Qlik</span></span><span> в <span class="CommonComponentsSenseDesktopName">Qlik Sense Desktop</span> , </span><span class="CommonComponentsQlik Sense Enterprise for Windows, with Multi-Cloud"><span>Qlik Sense Enterprise для Windows</span></span><span> и </span><span class="CommonComponentsQlikSenseCloudEnvironments"><span>SaaS-версиях Qlik Sense</span></span><span> . Он предлагает разработчикам альтернативу capability APIs, которые исторически использовались для создания гибридных приложений.</span></p>
<p><span>Чтобы использовать </span><span class="OpenSourceNebula"><span>nebula.js</span></span><span> , вы должны быть знакомы с JavaScript, promises, websockets и библиотеками с открытым исходным кодом. Вам понадобится Node.js и доступ к </span><span class="CommonComponentsEngineName"><span>ассоциативному движку Qlik</span></span><span> . Также будет полезно знание таких концепций Qlik, как generic objects и гиперкубы.</span></p>
<h1>Qlik Explorer для разработчиков</h1>
<p><strong>Qlik Explorer для разработчиков</strong> &#8211; это инструмент, созданный для упрощения процесса интеграции функциональности Qlik Sense в другие среды.</p>
<p><strong>Qlik Explorer</strong> для разработчиков обеспечивает быстрый доступ к соответствующей информации из вашей среды Qlik Sense, что, например, позволяет легко интегрировать визуализации Qlik Sense в существующий веб-сайт.</p>
<p><strong>Автоматическое обновление</strong><br />Qlik Explorer для разработчиков автоматически обновляется при появлении новой версии.</p>
<h2>Как подключить Qlik Explorer к Qlik Sense Desktop Hub</h2>
<p>В настройках вбиваете http://localhost:4848/</p>
<p><img fetchpriority="high" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/qlik_sense_qliksense_api_explorer_developer_1.jpg" alt="" width="942" height="658" class="aligncenter wp-image-1429 size-full" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/qlik_sense_qliksense_api_explorer_developer_1.jpg 942w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/qlik_sense_qliksense_api_explorer_developer_1-300x210.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/qlik_sense_qliksense_api_explorer_developer_1-768x536.jpg 768w" sizes="(max-width: 942px) 100vw, 942px" /></p>
<p>После подключения отобразится список приложений со свойствами и методами. <strong>Profit <img src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></strong></p>
<p><img decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/qlik_sense_qliksense_api_explorer_developer_2.jpg" alt="" width="1365" height="615" class="aligncenter size-full wp-image-1428" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/qlik_sense_qliksense_api_explorer_developer_2.jpg 1365w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/qlik_sense_qliksense_api_explorer_developer_2-300x135.jpg 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/qlik_sense_qliksense_api_explorer_developer_2-768x346.jpg 768w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/qlik_sense_qliksense_api_explorer_developer_2-1024x461.jpg 1024w" sizes="(max-width: 1365px) 100vw, 1365px" /></p>
<h1><span>Engine API Explorer в браузере</span></h1>
<p><span>http://localhost:4848/dev-hub/engine-api-explorer</span></p>
<iframe src="//docs.google.com/viewer?url=https%3A%2F%2Fqliksense.ivan-shamaev.ru%2Fwp-content%2Fuploads%2F2019%2F08%2FQlik_Engine_API_05242016.docx&hl=ru&embedded=true" class="gde-frame" style="width:100%; height:500px; border: none;" scrolling="no"></iframe>
<p class="gde-text"><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Qlik_Engine_API_05242016.docx" class="gde-link">Скачать (DOCX, 661KB)</a></p>
<h1>Подключение к API Qlik Engine</h1>
<p><span style="color: #ff6600;"><em><strong>todo</strong></em></span></p>
<h2 _ngcontent-c2="">Подключение к Qlik Sense API с помощью PowerShell</h2>
<p>https://community.qlik.com/t5/Qlik-Sense-Integration/How-to-export-an-app-to-a-folder-using-API-and-Powershell/td-p/1608192</p>
<h2 _ngcontent-c2="" class="gp-title gp-indi-project">Qlik Sense python API client for QPS and QRS interfaces</h2>
<p>https://developer.qlik.com/garden/570e73c36c8c33c066a0f11c</p>
<h2>Пример подключения Python 3 к Qlik Sense Engine API</h2>
<p>Для подключения и работы необходимо установить библиотеки:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">pip3 install asyncio
pip3 install websocket-client
pip3 install requests_ntlm
pip3 install requests
pip3 install json</pre>



<p>Дальше приведен скрипт подключения Python 3 к Qlik Sense Desktop:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">from websocket import create_connection

import json

ws = create_connection("ws://localhost:4848/app/")

data=json.dumps({
    'jsonrpc': '2.0',
    'id': 2,
    'method': 'GetActiveDoc',
    'handle': 1,
    'params': ['C:\\Users\\User\\Documents\\Qlik\\Sense\\Apps\\Анализ продаж - простое приложение.qvf']
})

print("Sending req...")
ws.send(data)

print("Receiving...")
result = ws.recv()

print("Received '%s'" % result)

qclosed = ws.close()
print("Closed '%s'" % qclosed)
</pre>
<p>Результат работы скрипта:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">&gt;&gt;&gt; 
 RESTART: D:/QlikProject/Подключаемся к Qlik Sense из Python.py 
Sending req...
Receiving...
Received '{"jsonrpc":"2.0","method":"OnConnected","params":{"qSessionState":"SESSION_CREATED"}}'
Closed 'None'</pre>
<h2>Пример скрипта Python 3 для получения списка документов с hub Qlik Sense Desktop</h2>
<pre class="EnlighterJSRAW" data-enlighter-language="null">from websocket import create_connection

import json

ws = create_connection("ws://localhost:4848/app/")

ws.send(json.dumps({
  "handle": -1,
  "method": "GetDocList",
  "params": [],
  "outKey": -1,
  "id": 1
}))

result = ws.recv()

while result:
    result=ws.recv()
    y = json.loads(result)
    print(y)

ws.close()</pre>
<p><strong>Список классов, свойств и методов</strong> <a href="https://betahelp.qlik.com/en-US/sense-developer/June2019/apis/EngineAPI/index.html" target="_blank" rel="noopener noreferrer">https://betahelp.qlik.com/en-US/sense-developer/June2019/apis/EngineAPI/index.html</a></p>
<p><img decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Qlik_Sense_Request_Response.png" alt="" width="505" height="246" class="aligncenter size-full wp-image-1436" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Qlik_Sense_Request_Response.png 505w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/Qlik_Sense_Request_Response-300x146.png 300w" sizes="(max-width: 505px) 100vw, 505px" /></p>
<h2>Подключаемся к Qlik Sense Engine API с помощью Node.JS</h2>
<p>Рассматривается пример подключения к Qlik Sense Desktop</p>
<pre class="EnlighterJSRAW" data-enlighter-language="js">const WebSocket = require('ws');

const ws = new WebSocket('ws://localhost:4848/app/engineData');

var request = {
    "handle": -1,
    "method": "GetDocList",
    "params": {},
    "outKey": -1,
    "id": 2
}

ws.onopen = function(event){
    ws.send(JSON.stringify(request));
    
    ws.onmessage = function (event) {
        var response = JSON.parse(event.data);

        if(response.method != ' OnConnected'){
            
            var obj = response.result;
            str = JSON.stringify(obj, null, 4);
            console.log(str);

        }
   }
}</pre>
<h2>Получаем перечень приложений Qlik Sense Desktop с помощью Enigma JS</h2>
<pre class="EnlighterJSRAW" data-enlighter-language="js">const enigma = require('enigma.js');
const WebSocket = require('ws');
const schema = require('enigma.js/schemas/12.20.0.json');

// create a new session:
const session = enigma.create({
  schema,
  url: 'ws://localhost:4848/app/engineData',
  createSocket: url =&gt; new WebSocket(url),
});

// bind traffic events to log what is sent and received on the socket:
session.on('traffic:sent', data =&gt; console.log('sent:', data));
session.on('traffic:received', data =&gt; console.log('received:', data));

// open the socket and eventually receive the QIX global API, and then close
// the session:
session.open()
    .then(function(global) {
        global.getDocList().then(function(docList) {
            for (i = 0; i &lt; docList.length; i++) {
                var AppName = docList[i].qDocName;
                console.log('App list:',JSON.stringify(AppName));
            }

            session.close();
        })
    });</pre>
<h2>Получаем свойства документа Qlik Sense с помощью запроса Enigma.JS через QS API Engine</h2>
<pre class="EnlighterJSRAW" data-enlighter-language="null">const enigma = require('enigma.js');
const WebSocket = require('ws');
const schema = require('enigma.js/schemas/12.20.0.json');

// create a new session:
const session = enigma.create({
  schema,
  url: 'ws://localhost:4848/app/engineData',
  createSocket: url =&gt; new WebSocket(url),
});

// bind traffic events to log what is sent and received on the socket:
session.on('traffic:sent', data =&gt; console.log('sent:', data));
session.on('traffic:received', data =&gt; console.log('received:', data));

// open the socket and eventually receive the QIX global API, and then close
// the session:
session.open()
    .then(function(global) {
        global.getDocList().then(docs=&gt;{
            global.openDoc("Анализ продаж - простое приложение.qvf").then(doc=&gt;{
                doc.getAppProperties().then(appProp =&gt; {
                    console.log(doc)
                    console.log(appProp)
                })
            })
        })
    })</pre>
<h2>Пример получения списка полей в Qlik Sense API Engine, с помощью Enigma.JS</h2>
<p>Пример актуален для Qlik Sense Desktop</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">const enigma = require('enigma.js');
const WebSocket = require('ws');
const schema = require('enigma.js/schemas/12.20.0.json');

// Создаем новую сессию:
const session = enigma.create({
  schema,
  url: 'ws://localhost:4848/app/engineData',
  createSocket: url =&gt; new WebSocket(url),
});

// Привязываем traffic events к log (что отправлено и что получено socket)
session.on('traffic:sent', data =&gt; console.log('sent:', data));
session.on('traffic:received', data =&gt; console.log('received:', data));

var config = { 
    schema: schema,
    docId: "Анализ продаж - простое приложение.qvf"
}

// Открываем сессию
session.open()
    .then(function(global) {

        global.openDoc(config.docId).then(function(doc){
            //Создаем SessionObject для FieldList
            doc.createSessionObject( {
                qFieldListDef: {
                    qShowSystem: false,
                    qShowHidden: false,
                    qShowSrcTables: true,
                    qShowSemantic: true,
                    qShowDerivedFields: true
                }, 
                qInfo: {
                    qId: "FieldList",
                    qType: "FieldList"
                }
            } ).then( function(list) {
                return list.getLayout();
                } ).then( function(listLayout) {
                    return listLayout.qFieldList.qItems;
                    } ).then( function(fieldItems) {
                        console.log(fieldItems)
                        } );
        })
    });</pre>
<h2>Пример javascript скрипта выгрузки / экспорта данных из QS, используя Enigma.JS</h2>
<p>В результате выполнения JS-скрипта Вы получите qURL:</p>
<blockquote>
<p class="EnlighterJSRAW" data-enlighter-language="null"><em>qUrl:&#8221;/Exports/1b2f8662-570b-4f77-b37b-94a4a347fe91\FileName(6bb5e11a-427a-4e77-ac30-e49abf602c87).xlsx&#8221;</em></p>
</blockquote>
<p data-enlighter-language="null"><strong>Код запроса exportData Enigma.JS Qlik Sense Table API:</strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="js">const enigma = require('enigma.js');
const WebSocket = require('ws');
const schema = require('enigma.js/schemas/12.20.0.json');

// Создаем новую сессию:
const session = enigma.create({
  schema,
  url: 'ws://localhost:4848/app/engineData',
  createSocket: url =&gt; new WebSocket(url),
});

// Привязываем traffic events к log (что отправлено и что получено socket)
session.on('traffic:sent', data =&gt; console.log('sent:', data));
session.on('traffic:received', data =&gt; console.log('received:', data));

var config = { 
    schema: schema,
    docId: "Анализ продаж - простое приложение.qvf"
}

var exportOptions = {
    "qFileType": "OOXML",
    "qPath": "/qHyperCubeDef",
    "qFileName": "FileName",
    "qExportState": 1
}

// Открываем сессию
session.open()
    .then((global) =&gt; {
        console.log('We are connected!')
        global.openDoc(config.docId)
        .then(doc =&gt; {
            doc.getObject('XPbGUe')
            .then((api) =&gt; {
                api.exportData(exportOptions)
                .then((reply) =&gt; {
                    console.log(reply);
                });
            });
        });
    });</pre>
<h2>Пример javascript скрипта выгрузки / экспорта данных из Qlik Sense Enterprise, используя Enigma.JS</h2>
<p>Данные выгружаем из прямой таблицы, в поле <strong>TargetFieldSelect</strong> выбираем значение <strong>NeededValueToSelect</strong>.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="js">const enigma = require('enigma.js');
const WebSocket = require('ws');
const path = require('path');
const fs = require('fs');
const fetch = require('node-fetch');

const schema = require('enigma.js/schemas/12.20.0.json');
const { Console } = require('console');

// Your Sense Enterprise installation hostname:
const engineHost = 'qlik.company.com';

// Make sure the port below is accessible from the machine where this example
// is executed. If you changed the QIX Engine port in your installation, change this:
const enginePort = 4747;

// 'engineData' is a special "app id" that indicates you only want to use the global
// QIX interface or session apps, change this to an existing app guid if you intend
// to open that app:
const appId = 'engineData';

// The Sense Enterprise-configured user directory for the user you want to identify
// as:
const userDirectory = 'QLIKDEV';

// The user to use when creating the session:
const userId = 'username';

// Path to a local folder containing the Sense Enterprise exported certificates:
const certificatesPath = './';

// Helper function to read the contents of the certificate files:
const readCert = (filename) =&gt; fs.readFileSync(path.resolve(__dirname, certificatesPath, filename));

const session = enigma.create({
  schema,
  url: `wss://${engineHost}:${enginePort}/app/${appId}`,
  // Notice the non-standard second parameter here, this is how you pass in
  // additional configuration to the 'ws' npm library, if you use a different
  // library you may configure this differently:
  createSocket: (url) =&gt; new WebSocket(url, {
    ca: [readCert('root.pem')],
    key: readCert('client_key.pem'),
    cert: readCert('client.pem'),
    headers: {
      'X-Qlik-User': `UserDirectory=${encodeURIComponent(userDirectory)}; UserId=${encodeURIComponent(userId)}`,
    },
  }),
});


// Открываем сессию
session.open()
    .then((global) =&gt; {
        global.openDoc('03h5ed8-5gdfb-40a5-b733-41fc4beb718e')
        .then(doc =&gt; {
            doc.getField("TargetFieldSelect")
            .then((appField) =&gt; {
              appField.select('NeededValueToSelect',false,0)
              .then((selectResult) =&gt; {
                console.log(selectResult);

                doc.getObject('jwAJbyL')
                .then((objectTable) =&gt; {
                  objectTable.getHyperCubeData("/qHyperCubeDef", [{ qTop: 0, qWidth: 10, qLeft: 0, qHeight: 1000 }])
                  .then(function (data) {
                    let dataSTR = JSON.stringify(data[0].qMatrix);
                    fs.writeFileSync('DataOutput.json', dataSTR);

                    session.close();
                  })
                })   

                
              })
            })
            
        })
              
                


    });</pre>
<p>_____</p>



<h1>Описание архитектуры Qlik Engine API</h1>
<h2>Структура объектов</h2>
<p><strong>Схемка сделана &#8220;на глаз&#8221;, но вероятно так и работает.</strong></p>
<p><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/qlik_sense_structure_object_api_nodejs_enigmajs.png" alt="" width="417" height="344" class="aligncenter size-full wp-image-1459" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/qlik_sense_structure_object_api_nodejs_enigmajs.png 417w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/qlik_sense_structure_object_api_nodejs_enigmajs-300x247.png 300w" sizes="(max-width: 417px) 100vw, 417px" /></p>
<p><strong>API Component Overview</strong></p>
<p><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/API_components_overview.png" alt="" width="1932" height="1016" class="aligncenter wp-image-1460 size-full" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/API_components_overview.png 1932w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/API_components_overview-300x158.png 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/API_components_overview-768x404.png 768w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/API_components_overview-1024x539.png 1024w" sizes="(max-width: 1932px) 100vw, 1932px" /></p>
<p><strong>MindMap API Integration</strong></p>
<p><a href="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/mindmap_API_Integration_QlikSense_Qlik.png" target="_blank" rel="noopener noreferrer"><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/mindmap_API_Integration_QlikSense_Qlik.png" alt="" width="993" height="983" class="aligncenter wp-image-1462 size-full" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/mindmap_API_Integration_QlikSense_Qlik.png 993w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/mindmap_API_Integration_QlikSense_Qlik-300x297.png 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/mindmap_API_Integration_QlikSense_Qlik-768x760.png 768w" sizes="(max-width: 993px) 100vw, 993px" /></a></p>
<p>Схема по-умолчанию для процесса authenticate (default flowchart)</p>
<p><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/default_flowchart_how_to_authenticate.png" alt="" width="952" height="1122" class="aligncenter size-full wp-image-1492" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/default_flowchart_how_to_authenticate.png 952w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/default_flowchart_how_to_authenticate-255x300.png 255w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/default_flowchart_how_to_authenticate-768x905.png 768w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/default_flowchart_how_to_authenticate-869x1024.png 869w" sizes="(max-width: 952px) 100vw, 952px" /></p>
<p><img loading="lazy" decoding="async" src="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/capabilities_API_DIV_tag_Saas_platform_to_proxy.png" alt="" width="904" height="644" class="aligncenter size-full wp-image-1744" srcset="https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/capabilities_API_DIV_tag_Saas_platform_to_proxy.png 904w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/capabilities_API_DIV_tag_Saas_platform_to_proxy-300x214.png 300w, https://qliksense.ivan-shamaev.ru/wp-content/uploads/2019/08/capabilities_API_DIV_tag_Saas_platform_to_proxy-768x547.png 768w" sizes="(max-width: 904px) 100vw, 904px" /></p>
<p>&nbsp;</p>
<h2>YouTube Enigma.JS Qlik Sense API Development</h2>
<p><iframe title="Qlik Sense Development - Enigma.js to RxQ in ONE LINE OF CODE" width="750" height="563" src="https://www.youtube.com/embed/E4x6bMjyn74?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p>
<h2>Youtube Другие видео по Qlik Sense API</h2>
<p><iframe title="Using the Qlik Sense Field API" width="750" height="422" src="https://www.youtube.com/embed/GJ0ImZR2ig0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p>
<p><iframe title="Using the Qlik Sense Bookmark API" width="750" height="422" src="https://www.youtube.com/embed/OBGJErIwrto?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p>
<p><iframe title="Qlik Sense API Based Mashups" width="750" height="422" src="https://www.youtube.com/embed/1rOu0sgvwwM?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p>
<h2><strong>Полезные ссылки по Enigma.JS и Qlik Sense API</strong></h2>
<ul>
<li><a href="https://dev.to/qlikbranch/getting-started-with-qlik-core-2781" target="_blank" rel="noopener noreferrer">https://dev.to/qlikbranch/getting-started-with-qlik-core-2781</a> &#8211; Getting Started with Qlik Core</li>
<li><a href="https://branch-blog.qlik.com/system-integration-with-qliks-apis-why-and-how-1663025cf54d" target="_blank" rel="noopener noreferrer">https://branch-blog.qlik.com/system-integration-with-qliks-apis-why-and-how-1663025cf54d</a> &#8211; System Integration with Qlik’s APIs — Why and How</li>
<li><a href="https://alcmst.net/2019/03/01/quiz-sense-who-wants-to-be-a-qlikionnaire/" target="_blank" rel="noopener noreferrer">https://alcmst.net/2019/03/01/quiz-sense-who-wants-to-be-a-qlikionnaire/</a> &#8211; Quiz Sense – Who wants to be a Qlikionnaire?</li>
</ul>
<p>_____</p>
<p>Сообщение <a href="https://qliksense.ivan-shamaev.ru/api-reference-qlik-sense-qliksense/">Руководство разработчика API &#8211; Справочник по Qlik Sense API</a> появились сначала на <a href="https://qliksense.ivan-shamaev.ru">Qlik Sense - Обучение, учебник, онлайн курс</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://qliksense.ivan-shamaev.ru/api-reference-qlik-sense-qliksense/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
