Commit 9699342c authored by Danir Tlepov's avatar Danir Tlepov

fix some bugs

parent 0703c4f9
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 44fad6b07507ac02b9e56da4910df252
tags: 645f666f9bcd5a90fca523b33c5a78b7
.. Read the Docs Template documentation master file, created by
sphinx-quickstart on Tue Aug 26 14:19:49 2014.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
Содержание
==========
.. toctree::
:maxdepth: 2
:glob:
:numbered:
src/install_type
src/kibana
src/troubleshooting
Вариант установки "Clean": настройки системы
-----------------------------
Настройки, автоматически установленные в подсистеме администрирования
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Во-первых, созданы следующие пользователи:
* Пользователь1 - Абдрешен Леонид
* Пользователь2 - Балтиев Руслан
* Пользователь3 - Бобров Степан
* Пользователь4 - Васильева Людмила
* Пользователь5 - Васнецов Игорь
* Пользователь6 - Габдуллин Данияр
* Пользователь7 - Жуматаев Ерик
* Пользователь8 - Калиев Ербол
* Пользователь9 - Муканова Камила
* Пользователь10 - Саматов Ергали
* Пользователь11 - Султангазина Айнур
.. note:: Всем разрешен доступ в систему, прочими свойствами не обладают. Логин и пароль пользователей совпадает с фамилией.
* Администратор (с ролями "Администратор" и "Разработчик Synergy", логин/пароль: 1/1)
* Системный Пользователь (с ролями "Администратор" и "Разработчик Synergy", логин/пароль: system/system)
.. figure:: ../resources/img/users.png
Рис. Управление пользователями
Во-вторых, заведена следующая орг.структура:
* Организация (подразделение, руководитель Пользователь1)
* Администрация (подразделение, руководитель отсутствует)
* Администратор (должность, назначен Администратор)
* Системный пользователь (должность, назначен Системный Пользователь)
* Отдел маркетинга (подразделение, руководитель Пользователь7)
* Отдел маркетинга Алматы (подразделение, руководитель Пользователь2)
* Маркетолог (должность, назначен Пользователь4)
* Отдел маркетинга Астана (подразделение, руководитель Пользователь3)
* Маркетолог (должность, назначен Пользователь6)
* Отдел продаж (подразделение, руководитель Пользователь11)
* Отдел продаж Алматы (подразделение, руководитель Пользователь10)
* Специалист по продажам (должность, назначен Пользователь8)
* Отдел продаж Астана (подразделение, руководитель Пользователь5)
* Специалист по продажам (должность, назначен Пользователь9)
.. figure:: ../resources/img/structure.png
Рис. Организационная структура
В третьих, на подразделение "Отдел маркетинга" настроено отображение следующих модулей:
* Ежедневник
* Хранилище -> Реестры
* Проекты
* Управление маркетингом
.. figure:: ../resources/img/modules.png
Рис. Управление модулями - Отдел маркетинга
На корневое подразделение "Отдел продаж" настроено отображение следующих модулей:
* Ежедневник
* Хранилище -> Реестры
* Проекты
* Управление продажами
.. figure:: ../resources/img/modules2.png
Рис. Управление модулями - Отдел продаж
На все прочие дочерние подразделения "Отдел продаж" настроено отображение следующих модулей:
* Ежедневник
* Хранилище -> Реестры
* Проекты
* Управление продажами (ОП)
.. figure:: ../resources/img/modules3.png
Рис. Управление модулями - Отдел продаж (дочерние структуры)
Настройки, автоматически установленные в конфигураторе
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Во-первых, импортировано приложение `Sales`.
Во-вторых, созданы следующие группы пользователей:
* Все маркетологи
* Маркетологи-менеджеры
* Маркетологи-менеджеры по Алматы (Пользователь2 и Системный Пользователь)
* Маркетологи-менеджеры по Астане (Пользователь3)
* Маркетологи-специалисты
* Маркетологи-специалисты по Алматы (Пользователь4 и Системный Пользователь)
* Маркетологи-специалисты по Астане (Пользователь6)
* Руководитель отдела маркетинга (Пользователь7 и Системный Пользователь)
* Все специалисты по продажам
* Менеджеры по продажам
* Менеджеры по продажам по Алматы (Пользователь 10 и Системный Пользователь)
* Менеджеры по продажам по Астане (Пользователь5)
* Руководитель отдела продаж (Пользователь11 и Системный Пользователь)
* Специалисты по продажам
* Специалисты по продажам по Алматы (Пользователь8 и Системный Пользователь)
* Специалисты по продажам по Астане (Пользователь9)
* Центральный аппарат (Абдрешен и Системный Пользователь)
.. note:: Дополнительно в каждой перечисленной группе имеется Администратор.
В-третьих, настроены прочие опции, значения которых отличаются от дефолтных:
* форма завершения "Комментарий": "Требовать подтверждения результата" - нет
* "Отображать полное ФИО пользователя" - да
* "Отображать ФИО и должность пользователя на момент подписи в листе подписей" - да
* "Отображать в ходе исполнения будущие этапы" - да
* "Требовать ввода комментария при согласовании/утверждении" - да
* "Требовать ввода комментария при отказе в согласовании/утверждении" - да
* "Форма завершения по-умолчанию" - Комментарий
* "Переназначение работ" - везде переназначить работы на непосредственного руководителя
* "Название системы" - ARTA Synergy Sales
* "Интеграция с почтой" - да
.. note:: «Интеграция с почтой» предназначена для отправки уведомлений, шаблонов документов (коммерческое предложение, акт приема-передачи, договора) заказчикам на почту. Подробнее о настройке электронной почты см. `здесь <http://tdd.lan.arta.kz/docs/cases/crm/user-manual/html/sec.appendix.html#user_settings>`_.
В-четвертых, необходимо проверить корректность URL до Synergy в настройках следующих внешних модулей:
* ``crm_ext1Lead``
* ``crm_ext2Deal``
* ``crm_ext3DealOS``
А также проверить корректность URL до Synergy в ссылке на дашборд в настройке ``template.html`` следующих пользовательских компонентов:
* ``crm_component_leads_dashboard``
* ``crm_component_deals_dashboard``
* ``crm_component_deals_productivity``
* ``crm_component_deals_os_productivity``
Настройки системы
==========================
.. toctree::
:maxdepth: 2
:numbered:
clean
install_upgrade
manual
Вариант установки "Install/Upgrade Configuration": настройки системы
-----------------------------
Настройки, которые необходимо выполнить в подсистеме администрирования
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#. Настроить права на внешние модули в организационной структуре.
Настройки, которые необходимо выполнить в конфигураторе
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#. Проверить корректность URL до Synergy в настройках следующих внешних модулей:
* ``crm_ext1Lead``
* ``crm_ext2Deal``
* ``crm_ext3DealOS``
#. Проверить корректность URL до Synergy в ссылке на дашборд в настройке ``template.html`` следующих пользовательских компонентов:
* ``crm_component_leads_dashboard``
* ``crm_component_deals_dashboard``
* ``crm_component_deals_productivity``
* ``crm_component_deals_os_productivity``
#. Распределить пользователей по группам маркетологов и менеджеров по продаже, по категории руководитель / менеджер / специалист.
#. Добавить во все группы Системного пользователя.
Настройка Kibana для визуализации данных
==================================================
В конфигурационном файле Kibana ``/etc/kibana/kibana.yml`` необходимо изменить параметр ``server.host``, указав для него IP-адрес сервера Kibana и раскомментировать соответствующую строку:
.. code-block:: xml
# Kibana is served by a back end server. This setting specifies the port to use.
#server.port: 5601
# Specifies the address to which the Kibana server will bind. IP addresses and host names are both valid values.
# The default is 'localhost', which usually means remote machines will not be able to connect.
# To allow connections from remote users, set this parameter to a non-loopback address.
server.host: "192.168.2.164"
# Enables you to specify a path to mount Kibana at if you are running behind a proxy. This only affects
# the URLs generated by Kibana, your proxy is expected to remove the basePath value before forwarding requests
# to Kibana. This setting cannot end in a slash.
#server.basePath: ""
# The maximum payload size in bytes for incoming server requests.
#server.maxPayloadBytes: 1048576
# The Kibana server's name. This is used for display purposes.
#server.name: "your-hostname"
# The URL of the Elasticsearch instance to use for all your queries.
#elasticsearch.url: "http://localhost:9200"
# When this setting’s value is true Kibana uses the hostname specified in the server.host
# setting. When the value of this setting is false, Kibana uses the hostname of the host
# that connects to this Kibana instance.
#elasticsearch.preserveHost: true
Запуск Kibana осуществляется командой:
.. code-block:: html
# /etc/init.d/kibana start
По умолчанию Kibana запускается по адресу ``localhost:5601``.
Дополнительные подробности доступны в подробной документации о `Kibana <http://rtd.lan.arta.kz/docs/guide/ru/hamming/dashboards.html>`_.
**Индексация данных форм**
Загрузка данных в Elasticsearch осуществляется с помощью процесса индексации данных форм в разделе подсистеме администрирования "Обслуживание системы" -> "Управление индексом форм".
**Проиндексировать все данные форм** (это может занять время, зависит от количества записей в системе)
В это время для каждой формы и каждого компонента этой формы в Synergy создается несколько индексов. Каждый из этих индексов будет отображен в Kibana со своим кодом, как используемое поле.
.. figure:: ../resources/img/indexes.png
Рис. Управление индексом данных форм
Для проверки установки Kibana, необходимо в основном приложении Synergy перейти в модуль "Управление маркетингом" либо "Управление продажами", вкладка "Аналитика". Если все настроено правильно, то должны иметь следующее:
.. figure:: ../resources/img/analytics.png
Рис. Аналитика
Вариант установки "Manual": настройки системы
-----------------------------
Настройки, которые необходимо выполнить в подсистеме администрирования
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#. Настроить права на внешние модули в организационной структуре.
Настройки, которые необходимо выполнить в конфигураторе
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#. Импортировать приложение Sales из архива ``/opt/synergy/apps/app-sales.7zip``.
.. hint::
#. При импорте приложения рекомендуем руководствоваться `документацией`_.
#. Если на сервере уже был установлен продукт, следует сверить номера версий приложения в архиве и на сервере, при необходимости нужно увеличить номер версии в архиве.
#. Заменить URL до Synergy в настройках следующих внешних модулей:
* ``crm_ext1Lead``
* ``crm_ext2Deal``
* ``crm_ext3DealOS``
.. figure:: ../resources/img/module.png
Рис. Настройки внешнего модуля
#. Заменить URL до Synergy в ссылке на дашборд в настройке ``template.html`` следующих пользовательских компонентов:
* ``crm_component_leads_dashboard``
* ``crm_component_deals_dashboard``
* ``crm_component_deals_productivity``
* ``crm_component_deals_os_productivity``
#. Распределить пользователей по группам маркетологов и менеджеров по продаже, по категории руководитель / менеджер / специалист.
#. Добавить во все группы Системного пользователя.
.. _`документацией`: http://tdd.lan.arta.kz/docs/synergy/tags/hamming/release-notes/html/app_export_import.html#app_import
Устранение неполадок
===========================================
Проблема: во внешних модулях ничего не отображается
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**Возможная причина:** при установке неправильно указан URL для Synergy.
**Пути устранения:**
#. В терминале необходимо выполнить команду:
.. code-block:: html
# dpkg-reconfigure arta-synergy-apps-sales
и следовать `мастеру установки <http://tdd.lan.arta.kz/docs/synergy/tags/hamming/admin-manual/html/install-and-setup.html#install-and-setup.install>`_.
#. Проверить корректность URL до Synergy в настройках следующих внешних модулей:
* ``crm_ext1Lead``
* ``crm_ext2Deal``
* ``crm_ext3DealOS``
#. Проверить корректность URL до Synergy в ссылке на дашборд в настройке ``template.html`` следующих пользовательских компонентов:
* ``crm_component_leads_dashboard``
* ``crm_component_deals_dashboard``
* ``crm_component_deals_productivity``
* ``crm_component_deals_os_productivity``
Проблема: нет реестров у пользователя
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**Возможная причина:** не настроены права для реестров.
**Пути устранения:** в Конфигураторе необходимо настроить права пользователю на реестры, добавив его в одну из типовых групп пользователей.
Проблема: не отображаются Лиды или не работают сопоставления реестров
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**Возможная причина:** неправильно прописаны очереди в файле.
**Пути устранения:**
#. Прописать очередь в файле ``/opt/synergy/jboss/standalone/configuration/arta/api-observation-configuration.xml``
.. code-block:: xml
<listener>
<queue>java:jboss/queues/Synergy/FormDataChange</queue>
<event>event.form.formdata.change</event>
</listener>
<listener>
<queue>java:jboss/queues/Synergy/LeadDelete</queue>
<event>crm.lead.delete</event>
</listener>
#. В файл ``/opt/synergy/jboss/standalone/configuration/standalone-onesynergy.xml`` в секцию ``<jms-destinations/>`` добавить очередь:
.. code-block:: xml
<jms-queue name="FormDataChange">
<entry name="queue/FormDataChange"/>
<entry name="java:jboss/queues/Synergy/FormDataChange"/>
<durable>true</durable>
</jms-queue>
<jms-queue name="LeadDelete">
<entry name="queue/LeadDelete"/>
<entry name="java:jboss/queues/Synergy/LeadDelete"/>
<durable>true</durable>
</jms-queue>
Проблема: при переходе во внешние модули в рабочей области отображается ошибка страницы
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**Возможная причина:** не зедеплоилось приложение.
**Пути устранения:** в ``/opt/synergy/jboss/standalone/deployments`` удалить файл ``crm.war.undeployed`` либо ``crm.war.deployed``.
Проблема: при переходе в аналитику отображается ошибка "Попытка соединения не удалась"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**Возможная причина:** не запущена Kibana.
**Пути устранения:** запустить Kibana
.. code-block:: html
# /etc/init.d/kibana start
Проблема: при переходе в аналитику отображается ошибка
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. figure:: ../resources/img/error.png
Рис. Ошибка
**Возможная причина:** в пользовательских компонентах дашбордов не прописались ссылки.
**Пути устранения:**
#. Проверить корректность URL до Synergy в ссылке на дашборд в настройке ``template.html`` следующих пользовательских компонентов:
* ``crm_component_leads_dashboard``
* ``crm_component_deals_dashboard``
* ``crm_component_deals_productivity``
* ``crm_component_deals_os_productivity``
Проблема: после установки Sales на дашбордах все кириллические символы стали отображаться как ??????????
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**Возможная причина:** проблема с локалью.
**Пути устранения:**
#. Остановить все сервисы в указанном порядке:
#. synergy
#. kibana
#. elasticsearch
#. mysql
#. Установить локаль по умолчанию en_US.UTF-8, для этого выполнить команду:
.. code-block:: html
# dpkg-reconfigure locales
В открывшемся окне можно выбрать все локали:
.. figure:: ../resources/img/locales.png
Рис. Локали
Затем указать локаль по умолчанию: выбрать из списка ``en_US.UTF-8``
.. figure:: ../resources/img/locale.png
Рис. Локаль по умолчанию
#. Запустить все остановленные сервисы в указанном порядке:
#. mysql
#. elasticsearch
#. kibana
#. synergy
#. В разделе "Управление индексом форм" подсистемы администрирования запустить переиндексацию данных форм.
This diff is collapsed.
.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-weight:normal;font-style:normal;src:url("../font/fontawesome_webfont.eot");src:url("../font/fontawesome_webfont.eot?#iefix") format("embedded-opentype"),url("../font/fontawesome_webfont.woff") format("woff"),url("../font/fontawesome_webfont.ttf") format("truetype"),url("../font/fontawesome_webfont.svg#FontAwesome") format("svg")}.fa:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa{display:inline-block;text-decoration:inherit}li .fa{display:inline-block}li .fa-large:before,li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-0.8em}ul.fas li .fa{width:0.8em}ul.fas li .fa-large:before,ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before{content:""}.icon-book:before{content:""}.fa-caret-down:before{content:""}.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.icon-caret-up:before{content:""}.fa-caret-left:before{content:""}.icon-caret-left:before{content:""}.fa-caret-right:before{content:""}.icon-caret-right:before{content:""}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;border-top:solid 10px #343131;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980B9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27AE60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#E74C3C;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#F1C40F;color:#000}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}
/*# sourceMappingURL=badge_only.css.map */
This source diff could not be displayed because it is too large. You can view the blob instead.
/*
* doctools.js
* ~~~~~~~~~~~
*
* Sphinx JavaScript utilities for all documentation.
*
* :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
/**
* select a different prefix for underscore
*/
$u = _.noConflict();
/**
* make the code below compatible with browsers without
* an installed firebug like debugger
if (!window.console || !console.firebug) {
var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
"dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
"profile", "profileEnd"];
window.console = {};
for (var i = 0; i < names.length; ++i)
window.console[names[i]] = function() {};
}
*/
/**
* small helper function to urldecode strings
*/
jQuery.urldecode = function(x) {
return decodeURIComponent(x).replace(/\+/g, ' ');
};
/**
* small helper function to urlencode strings
*/
jQuery.urlencode = encodeURIComponent;
/**
* This function returns the parsed url parameters of the
* current request. Multiple values per key are supported,
* it will always return arrays of strings for the value parts.
*/
jQuery.getQueryParameters = function(s) {
if (typeof s === 'undefined')
s = document.location.search;
var parts = s.substr(s.indexOf('?') + 1).split('&');
var result = {};
for (var i = 0; i < parts.length; i++) {
var tmp = parts[i].split('=', 2);
var key = jQuery.urldecode(tmp[0]);
var value = jQuery.urldecode(tmp[1]);
if (key in result)
result[key].push(value);
else
result[key] = [value];
}
return result;
};
/**
* highlight a given string on a jquery object by wrapping it in
* span elements with the given class name.
*/
jQuery.fn.highlightText = function(text, className) {
function highlight(node, addItems) {
if (node.nodeType === 3) {
var val = node.nodeValue;
var pos = val.toLowerCase().indexOf(text);
if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) {
var span;
var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg");
if (isInSVG) {
span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
} else {
span = document.createElement("span");
span.className = className;
}
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
node.parentNode.insertBefore(span, node.parentNode.insertBefore(
document.createTextNode(val.substr(pos + text.length)),
node.nextSibling));
node.nodeValue = val.substr(0, pos);
if (isInSVG) {
var bbox = span.getBBox();
var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
rect.x.baseVal.value = bbox.x;
rect.y.baseVal.value = bbox.y;
rect.width.baseVal.value = bbox.width;
rect.height.baseVal.value = bbox.height;
rect.setAttribute('class', className);
var parentOfText = node.parentNode.parentNode;
addItems.push({
"parent": node.parentNode,
"target": rect});
}
}
}
else if (!jQuery(node).is("button, select, textarea")) {
jQuery.each(node.childNodes, function() {
highlight(this, addItems);
});
}
}
var addItems = [];
var result = this.each(function() {
highlight(this, addItems);
});
for (var i = 0; i < addItems.length; ++i) {
jQuery(addItems[i].parent).before(addItems[i].target);
}
return result;
};
/*
* backward compatibility for jQuery.browser
* This will be supported until firefox bug is fixed.
*/
if (!jQuery.browser) {
jQuery.uaMatch = function(ua) {
ua = ua.toLowerCase();
var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
/(webkit)[ \/]([\w.]+)/.exec(ua) ||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
/(msie) ([\w.]+)/.exec(ua) ||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
[];
return {
browser: match[ 1 ] || "",
version: match[ 2 ] || "0"
};
};
jQuery.browser = {};
jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
}
/**
* Small JavaScript module for the documentation.
*/
var Documentation = {
init : function() {
this.fixFirefoxAnchorBug();
this.highlightSearchWords();
this.initIndexTable();
},
/**
* i18n support
*/
TRANSLATIONS : {},
PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; },
LOCALE : 'unknown',
// gettext and ngettext don't access this so that the functions
// can safely bound to a different name (_ = Documentation.gettext)
gettext : function(string) {
var translated = Documentation.TRANSLATIONS[string];
if (typeof translated === 'undefined')
return string;
return (typeof translated === 'string') ? translated : translated[0];
},
ngettext : function(singular, plural, n) {
var translated = Documentation.TRANSLATIONS[singular];
if (typeof translated === 'undefined')
return (n == 1) ? singular : plural;
return translated[Documentation.PLURALEXPR(n)];
},
addTranslations : function(catalog) {
for (var key in catalog.messages)
this.TRANSLATIONS[key] = catalog.messages[key];
this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
this.LOCALE = catalog.locale;
},
/**
* add context elements like header anchor links
*/
addContextElements : function() {
$('div[id] > :header:first').each(function() {
$('<a class="headerlink">\u00B6</a>').
attr('href', '#' + this.id).
attr('title', _('Permalink to this headline')).
appendTo(this);
});
$('dt[id]').each(function() {
$('<a class="headerlink">\u00B6</a>').
attr('href', '#' + this.id).
attr('title', _('Permalink to this definition')).
appendTo(this);
});
},
/**
* workaround a firefox stupidity
* see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
*/
fixFirefoxAnchorBug : function() {
if (document.location.hash && $.browser.mozilla)
window.setTimeout(function() {
document.location.href += '';
}, 10);
},
/**
* highlight the search words provided in the url in the text
*/
highlightSearchWords : function() {
var params = $.getQueryParameters();
var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
if (terms.length) {
var body = $('div.body');
if (!body.length) {
body = $('body');
}
window.setTimeout(function() {
$.each(terms, function() {
body.highlightText(this.toLowerCase(), 'highlighted');
});
}, 10);
$('<p class="highlight-link"><a href="javascript:Documentation.' +
'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
.appendTo($('#searchbox'));
}
},
/**
* init the domain index toggle buttons
*/
initIndexTable : function() {
var togglers = $('img.toggler').click(function() {
var src = $(this).attr('src');
var idnum = $(this).attr('id').substr(7);
$('tr.cg-' + idnum).toggle();
if (src.substr(-9) === 'minus.png')
$(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
else
$(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
}).css('display', '');
if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
togglers.click();
}
},
/**
* helper function to hide the search marks again
*/
hideSearchWords : function() {
$('#searchbox .highlight-link').fadeOut(300);
$('span.highlighted').removeClass('highlighted');
},
/**
* make the url absolute
*/
makeURL : function(relativeURL) {
return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
},
/**
* get the current relative url
*/
getCurrentURL : function() {
var path = document.location.pathname;
var parts = path.split(/\//);
$.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
if (this === '..')
parts.pop();
});
var url = parts.join('/');
return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
},
initOnKeyListeners: function() {
$(document).keyup(function(event) {
var activeElementType = document.activeElement.tagName;
// don't navigate when in search box or textarea
if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') {
switch (event.keyCode) {
case 37: // left
var prevHref = $('link[rel="prev"]').prop('href');
if (prevHref) {
window.location.href = prevHref;
return false;
}
case 39: // right
var nextHref = $('link[rel="next"]').prop('href');
if (nextHref) {
window.location.href = nextHref;
return false;
}
}
}
});
}
};
// quick alias for translations
_ = Documentation.gettext;
$(document).ready(function() {
Documentation.init();
});
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({"sphinx-rtd-theme":[function(require,module,exports){
var jQuery = (typeof(window) != 'undefined') ? window.jQuery : require('jquery');
// Sphinx theme nav state
function ThemeNav () {
var nav = {
navBar: null,
win: null,
winScroll: false,
winResize: false,
linkScroll: false,
winPosition: 0,
winHeight: null,
docHeight: null,
isRunning: false
};
nav.enable = function () {
var self = this;
if (!self.isRunning) {
self.isRunning = true;
jQuery(function ($) {
self.init($);
self.reset();
self.win.on('hashchange', self.reset);
// Set scroll monitor
self.win.on('scroll', function () {
if (!self.linkScroll) {
self.winScroll = true;
}
});
setInterval(function () { if (self.winScroll) self.onScroll(); }, 25);
// Set resize monitor
self.win.on('resize', function () {
self.winResize = true;
});
setInterval(function () { if (self.winResize) self.onResize(); }, 25);
self.onResize();
});
};
};
nav.init = function ($) {
var doc = $(document),
self = this;
this.navBar = $('div.wy-side-scroll:first');
this.win = $(window);
// Set up javascript UX bits
$(document)
// Shift nav in mobile when clicking the menu.
.on('click', "[data-toggle='wy-nav-top']", function() {
$("[data-toggle='wy-nav-shift']").toggleClass("shift");
$("[data-toggle='rst-versions']").toggleClass("shift");
})
// Nav menu link click operations
.on('click', ".wy-menu-vertical .current ul li a", function() {
var target = $(this);
// Close menu when you click a link.
$("[data-toggle='wy-nav-shift']").removeClass("shift");
$("[data-toggle='rst-versions']").toggleClass("shift");
// Handle dynamic display of l3 and l4 nav lists
self.toggleCurrent(target);
self.hashChange();
})
.on('click', "[data-toggle='rst-current-version']", function() {
$("[data-toggle='rst-versions']").toggleClass("shift-up");
})
// Make tables responsive
$("table.docutils:not(.field-list)")
.wrap("<div class='wy-table-responsive'></div>");
// Add expand links to all parents of nested ul
$('.wy-menu-vertical ul').not('.simple').siblings('a').each(function () {
var link = $(this);
expand = $('<span class="toctree-expand"></span>');
expand.on('click', function (ev) {
self.toggleCurrent(link);
ev.stopPropagation();
return false;
});
link.prepend(expand);
});
};
nav.reset = function () {
// Get anchor from URL and open up nested nav
var anchor = encodeURI(window.location.hash);
if (anchor) {
try {
var link = $('.wy-menu-vertical')
.find('[href="' + anchor + '"]');
// If we didn't find a link, it may be because we clicked on
// something that is not in the sidebar (eg: when using
// sphinxcontrib.httpdomain it generates headerlinks but those
// aren't picked up and placed in the toctree). So let's find
// the closest header in the document and try with that one.
if (link.length === 0) {
var doc_link = $('.document a[href="' + anchor + '"]');
var closest_section = doc_link.closest('div.section');
// Try again with the closest section entry.
link = $('.wy-menu-vertical')
.find('[href="#' + closest_section.attr("id") + '"]');
}
$('.wy-menu-vertical li.toctree-l1 li.current')
.removeClass('current');
link.closest('li.toctree-l2').addClass('current');
link.closest('li.toctree-l3').addClass('current');
link.closest('li.toctree-l4').addClass('current');
}
catch (err) {
console.log("Error expanding nav for anchor", err);
}
}
};
nav.onScroll = function () {
this.winScroll = false;
var newWinPosition = this.win.scrollTop(),
winBottom = newWinPosition + this.winHeight,
navPosition = this.navBar.scrollTop(),
newNavPosition = navPosition + (newWinPosition - this.winPosition);
if (newWinPosition < 0 || winBottom > this.docHeight) {
return;
}
this.navBar.scrollTop(newNavPosition);
this.winPosition = newWinPosition;
};
nav.onResize = function () {
this.winResize = false;
this.winHeight = this.win.height();
this.docHeight = $(document).height();
};
nav.hashChange = function () {
this.linkScroll = true;
this.win.one('hashchange', function () {
this.linkScroll = false;
});
};
nav.toggleCurrent = function (elem) {
var parent_li = elem.closest('li');
parent_li.siblings('li.current').removeClass('current');
parent_li.siblings().find('li.current').removeClass('current');
parent_li.find('> ul li.current').removeClass('current');
parent_li.toggleClass('current');
}
return nav;
};
module.exports.ThemeNav = ThemeNav();
if (typeof(window) != 'undefined') {
window.SphinxRtdTheme = { StickyNav: module.exports.ThemeNav };
}
},{"jquery":"jquery"}]},{},["sphinx-rtd-theme"]);
.highlight .hll { background-color: #ffffcc }
.highlight { background: #eeffcc; }
.highlight .c { color: #408090; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #FF0000 } /* Error */
.highlight .k { color: #007020; font-weight: bold } /* Keyword */
.highlight .o { color: #666666 } /* Operator */
.highlight .ch { color: #408090; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #007020 } /* Comment.Preproc */
.highlight .cpf { color: #408090; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #333333 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #007020 } /* Keyword.Pseudo */
.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #902000 } /* Keyword.Type */
.highlight .m { color: #208050 } /* Literal.Number */
.highlight .s { color: #4070a0 } /* Literal.String */
.highlight .na { color: #4070a0 } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
.highlight .no { color: #60add5 } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #007020 } /* Name.Exception */
.highlight .nf { color: #06287e } /* Name.Function */
.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #bb60d5 } /* Name.Variable */
.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #208050 } /* Literal.Number.Bin */
.highlight .mf { color: #208050 } /* Literal.Number.Float */
.highlight .mh { color: #208050 } /* Literal.Number.Hex */
.highlight .mi { color: #208050 } /* Literal.Number.Integer */
.highlight .mo { color: #208050 } /* Literal.Number.Oct */
.highlight .sa { color: #4070a0 } /* Literal.String.Affix */
.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
.highlight .sc { color: #4070a0 } /* Literal.String.Char */
.highlight .dl { color: #4070a0 } /* Literal.String.Delimiter */
.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
.highlight .sx { color: #c65d09 } /* Literal.String.Other */
.highlight .sr { color: #235388 } /* Literal.String.Regex */
.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
.highlight .ss { color: #517918 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #06287e } /* Name.Function.Magic */
.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
.highlight .vm { color: #bb60d5 } /* Name.Variable.Magic */
.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */
\ No newline at end of file
This diff is collapsed.
/* override table width restrictions */
@media screen and (min-width: 767px) {
.wy-table-responsive table td {
/* !important prevents the common CSS stylesheets from overriding
this as on RTD they are loaded after this stylesheet */
white-space: normal !important;
}
.wy-table-responsive {
overflow: visible !important;
}
}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
# Sphinx inventory version 2
# Project: Инструкция по внедрению Synergy Showcase
# Version: 0.1
# The remainder of this file is compressed using zlib.
xڕRN0RvTJHI#Jn}Ht@@--p |u+9$,bE:ES:d(bzz~eg
97a %^̃Vƭoz<(q!)?반_XKSY=BJ!9S93 w
k(~dA
ϵBYvax9Ҙ
T`JxDUUX6ٙG:q=l_]ή0KxofˢGљ5H*]Uō^u\;caZhHl@I:\D,Ѯɋ۫ TF+䃸
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -43,7 +43,7 @@ source_suffix = '.rst'
master_doc = 'index'
# General information about the project.
project = u'Инструкция по внедрению Synergy Showcase'
project = u'Инструкция по внедрению Synergy Sales'
copyright = u'2018, ARTA Software'
# The version info for the project you're documenting, acts as replacement for
......
......@@ -3,7 +3,7 @@
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
Содержание
Инструкция по внедрению Synergy Sales
==========
.. toctree::
......
......@@ -16,6 +16,8 @@
#. При импорте приложения рекомендуем руководствоваться `документацией`_.
#. Если на сервере уже был установлен продукт, следует сверить номера версий приложения в архиве и на сервере, при необходимости нужно увеличить номер версии в архиве.
.. ДАШБОРДЫ
#. Заменить URL до Synergy в настройках следующих внешних модулей:
* ``crm_ext1Lead``
* ``crm_ext2Deal``
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment