push ru help
All checks were successful
Deploy Static Site / deploy (push) Successful in 6m55s

This commit is contained in:
2025-05-28 05:24:40 +04:00
parent 0113fb8289
commit 041abbbd24
4459 changed files with 121310 additions and 86248 deletions

View File

@ -1,19 +1,20 @@
<!DOCTYPE html>
<html lang="en">
<html lang="ru">
<head>
<title>Introduction to solution development</title>
<title>Введение в разработку решений</title>
<meta name="generator" content="Help+Manual" />
<meta name="keywords" content="" />
<meta name="keywords" content="«ELMA365 Публичное API»" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Opportunities for flexible solution development Our system has a lot of quick and easy ways to implement the functionality you need using Low-code tools. We guarantee that..." />
<meta name="description" content="Возможности для гибкой разработки решений В нашей системе есть множество быстрых и удобных способов реализовать нужную вам задачу с использованием Low Code инструментов. При..." />
<meta name="picture" content="" />
<meta property="og:type" content="website" />
<meta property="og:title" content="Full documentation for BRIX365 platform. Low-code developer guide. User guide. Admin guide. Developer guide." />
<meta property="og:url" content="https://brix365.com/en/help" />
<meta property="og:image" content="" />
<meta property="og:title" content="Cправка по Low-code платформе ELMA365" />
<meta property="og:url" content="https://elma365.com/ru/help" />
<meta property="og:image" content="" />
<meta property="og:site_name" content="ELMA365" />
<link rel="icon" href="favicon.png" type="image/png" />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet" />
@ -23,6 +24,7 @@
<link rel="stylesheet" href="./article.css" />
<link rel="stylesheet" href="./glossary.css" />
<link rel="stylesheet" href="./theme.css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="helpman_settings.js"></script>
<script type="text/javascript" src="helpman_topicinit.js"></script>
@ -34,16 +36,16 @@
</head>
<body>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-M6ETBEC1R9"></script><script>window.dataLayer=window.dataLayer || []; function gtag(){dataLayer.push(arguments);}gtag('js', new Date()); gtag('config', 'G-M6ETBEC1R9');</script>
<script>!function(e,t,c,n,r,a,m){e.ym=e.ym||function(){(e.ym.a=e.ym.a||[]).push(arguments)},e.ym.l=1*new Date;for(var s=0;s<document.scripts.length;s++)if(document.scripts[s].src===n)return;a=t.createElement(c),m=t.getElementsByTagName(c)[0],a.async=1,a.src=n,m.parentNode.insertBefore(a,m)}(window,document,"script","https://mc.yandex.ru/metrika/tag.js"),ym(83179930,"init",{clickmap:!0,trackLinks:!0,accurateTrackBounce:!0,webvisor:!0})</script><noscript><div><img alt=""src=https://mc.yandex.ru/watch/83179930 style=position:absolute;left:-9999px></div></noscript>
<header class="header elma-365">
<div class="container">
<a class="header__logo" href="https://brix365.com/en/help">
<img src="./logo-en.svg" alt="header logo">
<a class="header__logo" href="https://elma365.com/ru/help">
<img src="./logo.svg" alt="header logo">
</a>
<!-- <div class="hero__search-form" id="search-panel">
<form class="search-form" onsubmit="ym(83180416,'reachGoal','poisk')">
<form class="search-form" onsubmit="ym(83179930,'reachGoal','poisk')">
<label class="search-form__label">
<span id="reset-search" class="search__icon"></span>
<input class="search-form__input" type="text">
@ -63,7 +65,7 @@
</div>
<div class="header__navi">
<ul class="header__list"><li><span class="solution-select"><span class="solution-select__selected"></span><svg width="7" height="4" viewBox="0 0 7 4" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1L3.5 3.5L6 1" stroke="white" stroke-linecap="round" stroke-linejoin="round"/></svg><ul class="solution-select__list"><li><a class="project-link" href="https://brix365.com/en/help/platform/get-trial.html">Platform</a></li><li><a class="project-link" href="https://brix365.com/en/help/ecm/ecm-functions.html">ECM</a></li><li><a class="project-link" href="https://brix365.com/en/help/crm/crm_overview.html">CRM</a></li><li><a class="project-link" href="https://brix365.com/en/help/service/service-functions.html">Service</a></li><li><a class="project-link" href="https://brix365.com/en/help/projects/projects-functions.html">Projects</a></li><li><a class="project-link" href="https://brix365.com/en/help/business_solutions/-elma365-store.html">Business Solutions</a></li></ul></span></li><li><a href="https://api.brix365.com/en/" target="_blank">API</a></li><li><a href="https://tssdk.brix365.com/" target="_blank">SDK</a></li></ul>
<ul class="header__list"><li><span class="solution-select"><span class="solution-select__selected"></span><svg width="7" height="4" viewBox="0 0 7 4" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1L3.5 3.5L6 1" stroke="white" stroke-linecap="round" stroke-linejoin="round"/></svg><ul class="solution-select__list"><li><a class="project-link" href="https://elma365.com/ru/help/platform/get-trial.html">Платформа</a></li><li><a class="project-link" href="https://elma365.com/ru/help/ecm/ecm-functions.html">ECM</a></li><li><a class="project-link" href="https://elma365.com/ru/help/crm/crm_overview.html">CRM</a></li><li><a class="project-link" href="https://elma365.com/ru/help/service/service-functions.html">Service</a></li><li><a class="project-link" href="https://elma365.com/ru/help/projects/projects-functions.html">Проекты</a></li><li><a class="project-link" href="https://elma365.com/ru/help/business_solutions/-elma365-store.html">Бизнес-решения</a></li></ul></span></li><li><a href="https://api.elma365.com/ru/"target="_blank">API</a></li><li><a href="https://tssdk.elma365.com/"target="_blank">SDK</a></li><li><a href="https://community.elma365.com/" target="_blank">Community</a></li><li><a href="https://elma-academy.com/ru/" target="_blank">Академия</a></li><li><a href="https://elma365.com/ru/" target="_blank">Сайт ELMA365</a></li></ul>
</div>
@ -78,8 +80,8 @@
<aside class="sidebar" id="sidebar">
<div class="sidebar__header">
<a class="header__logo" href="https://brix365.com/en/help">
<img src="./logo-light-en.svg">
<a class="header__logo" href="https://elma365.com/ru/help">
<img src="./logo-light.svg">
</a>
<span class="sidebar__close elma-365-close" id="close"></span>
</div>
@ -92,15 +94,15 @@
<div class="article-inner">
<div class="content">
<header class="article__header">
<div class="article__bread" style="display:flex; gap:10px;">
<div class="article__bread" style="display:flex; gap:10px;">
<span id="subcategory" class="search-res__item-category search-res__item-category_subcategory subcategory article__badge"></span>
<div class="topic__breadcrumbs">
<p><a href="solutions-building.html">Build solutions in BRIX</a> / Introduction to solution development</p>
<p><a href="solutions-building.html">Разработка решений на платформе ELMA365</a> / Введение в разработку решений</p>
</div>
</div>
<div class="topic__title"><h1 class="p_Heading1"><span class="f_Heading1">Introduction to solution development</span></h1>
<div class="topic__title"><h1 class="p_Heading1"><span class="f_Heading1">Введение в разработку решений</span></h1>
</div>
</header>
@ -109,75 +111,80 @@
<a href="#h1-article" class="scroll-top"></a>
</div>
<!-- Placeholder for topic body. -->
<h2 class="p_Heading2"><span class="f_Heading2">Opportunities for flexible solution development</span></h2>
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">Our system has a lot of quick and easy ways to implement the functionality you need using Low-code tools. We guarantee that solutions created with these tools can be supported in the future and will be compatible with newer versions of the platform. However, such tools will always have their limitations.</span></p>
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">At the same time, some solutions require complex and deep technical expertise and simply cannot be created with the platforms limited development tools. We understand this fact and make it possible for you to integrate anything you develop with our platform.</span></p>
<h2 class="p_Heading2"><span class="f_Heading2">Developers first steps</span></h2>
<h2 class="p_Heading2"><span class="f_Heading2">Возможности для гибкой разработки решений</span></h2>
<p class="p_Normal" style="line-height: 1.38;">В нашей системе есть множество быстрых и удобных способов реализовать нужную вам задачу с использованием Low Code инструментов. При этом мы гарантируем поддерживаемость и совместимость таких решений в будущих версиях платформы, но такие инструменты всегда будут иметь ограничения.</p>
<p class="p_Normal" style="line-height: 1.38;">Вместе с этим, всегда есть решения, требующие сложной и глубокой технической экспертизы, которые просто невозможно реализовать ограниченными средствами разработки в платформе. Мы понимаем это и даем интегрировать любые ваши технические разработки с платформой.</p>
<h2 class="p_Heading2"><span class="f_Heading2">С чего начать разработчику</span></h2>
<p class="p_Normal" style="line-height: 1.38;"><a href="https://elma365.com/ru/" target="_blank" class="weblink">Зарегистрируйтесь</a> в облаке и изучите возможности системы самостоятельно, а также:</p>
<ul style="list-style-type:disc">
<li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;"><a href="https://brix365.com/en/" target="_blank" class="weblink">Register</a> a cloud version of BRIX and explore the systems capabilities.</span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">Read articles in the <a href="solutions-building.html" class="topiclink">Help Center</a> for a quick start and find answers to all frequently asked questions.</span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">Understand the <a href="architecture.html" class="topiclink">system architecture</a>.</span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">Learn about using scripts to add flexibility the systems functionality in <a href="https://tssdk.brix365.com/en/index.html" target="_blank" class="weblink">BRIX TS SDK</a>.</span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">Learn about using REST for integrations in <a href="https://api.brix365.com/en/public-api/guides/IntroWebAPI/" target="_blank" class="weblink">BRIX Public API</a>.</span></li></ul>
<h2 class="p_Heading2"><span class="f_Heading2">Things you should be familiar with</span></h2>
<li class="p_Normal" style="line-height: 1.38;">обратитесь в <a href="solutions-building.html" class="topiclink">справку</a> за быстрым стартом и ответами на частые вопросы;</li><li class="p_Normal" style="line-height: 1.38;">проанализирйте <a href="architecture.html" class="topiclink">архитектуру системы</a>;</li><li class="p_Normal" style="line-height: 1.38;">ознакомьтесь с гибкими функциональными возможностями скриптов в <a href="https://tssdk.elma365.com/ru/latest/index.html" target="_blank" class="weblink">справке ELMA365 TS SDK</a>;</li><li class="p_Normal" style="line-height: 1.38;">изучите возможности интеграции с использованием REST в <a href="https://api.elma365.com/ru/public-api/guides/IntroWebAPI/" target="_blank" class="weblink">справке по публичному API ELMA365</a>;</li><li class="p_Normal" style="line-height: 1.38;">обратитесь на форум <a href="https://exchange.elma365.com/" class="weblink">ELMA365 Community</a> для поиска готовых рецептов или ответов у сообщества, просмотрите <a href="https://community.elma365.com/ru/forums/LC-book-platform/" target="_blank" class="weblink">«Краткое руководство по созданию Low-code решений»</a>;</li><li class="p_Normal" style="line-height: 1.38;">изучите процедуры импорта, экспорта и обновления <a href="https://elma365.com/ru/help/platform/solution.html" target="_blank" class="weblink">решения</a>.</li></ul>
<p class="p_Normal">Полезные знания и умения для разработки решений:</p>
<ul style="list-style-type:disc">
<li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">Understanding how <a href="form_low_code.html" class="topiclink">Low-code</a> development works.</span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">Knowledge of the <a href="https://www.typescriptlang.org/" target="_blank" class="weblink">TypeScript</a> programming language for writing scripts.</span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">Ability to code in <a href="https://developer.mozilla.org/en-US/docs/Web/HTML" target="_blank" class="weblink">HTML</a> + <a href="https://developer.mozilla.org/en-US/docs/Web/CSS" target="_blank" class="weblink">CSS</a> and use third-party <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript" target="_blank" class="weblink">JavaScript</a> libraries.</span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">Understanding the basics of communication between different services with <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP" target="_blank" class="weblink">HTTP requests</a>.</span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">Understanding of <a href="https://learn.microsoft.com/en-us/dotnet/architecture/microservices/architect-microservice-container-applications/service-oriented-architecture" target="_blank" class="weblink">service-oriented</a> (microservice) architecture and its features.</span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">Understanding of <a href="https://learn.microsoft.com/en-us/dotnet/architecture/microservices/container-docker-introduction/" target="_blank" class="weblink">containerization</a> with the use of <a href="https://docs.docker.com/" target="_blank" class="weblink">Docker</a> and basic skills of working with <a href="https://kubernetes.io/docs/home/" target="_blank" class="weblink">Kubernetes</a> to develop custom services.</span></li></ul>
<h2 class="p_Heading2"><span class="f_Heading2">Typical cases of solution development</span></h2>
<h3 class="p_Heading3"><span class="f_Heading3">Telephony integration</span></h3>
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">If no ready-made solution is available for your telephony provider, you can set up your own integration fairly quickly.</span></p>
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">You can do it by using a custom module and scripts written in </span><span style="font-family: Inter; font-weight: bold;">TypeScript</span><span style="font-family: Inter;">. As the platform has an established approach to working with telephony, you need to create only a few methods. After that you will be able to set up telephony and use it in the standard interface of the platform.</span></p>
<h3 class="p_Heading3"><span class="f_Heading3">Integration with an external system</span></h3>
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">You can integrate the platform with any accounting software your company is using.</span></p>
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">There are several ways you can use an integration like this:</span></p>
<li class="p_Normal" style="line-height: 1.38;">понимание возможностей <a href="form_low_code.html" class="topiclink">Low-code</a> платформы;</li><li class="p_Normal" style="line-height: 1.38;">знание языка <a href="https://www.typescriptlang.org/" class="weblink">TypeScript</a> для написания скриптов;</li><li class="p_Normal" style="line-height: 1.38;">умение верстать разметку <a href="https://developer.mozilla.org/ru/docs/Web/HTML" class="weblink">HTML</a> + <a href="https://developer.mozilla.org/ru/docs/Web/CSS" class="weblink">CSS</a> и использовать сторонние библиотеки на <a href="https://developer.mozilla.org/ru/docs/Web/JavaScript" class="weblink">JavaScript</a>;</li><li class="p_Normal" style="line-height: 1.38;">понимание основы взаимодействия разных сервисов через <a href="https://developer.mozilla.org/ru/docs/Web/HTTP" class="weblink">HTTP-запросы</a>;</li><li class="p_Normal" style="line-height: 1.38;">понимание <a href="https://docs.microsoft.com/ru-ru/dotnet/architecture/microservices/architect-microservice-container-applications/service-oriented-architecture" class="weblink">сервисноориентированной</a> (микросервисной) архитектуры и её особенностей;</li><li class="p_Normal" style="line-height: 1.38;">понимание <a href="https://docs.microsoft.com/ru-ru/dotnet/architecture/microservices/container-docker-introduction/" class="weblink">контейнеризации</a> с использованием <a href="https://docs.docker.com/" class="weblink">Docker</a> и базовые навыки работы с <a href="https://kubernetes.io/ru/docs/home/" class="weblink">Kubernetes</a> для разработки собственных сервисов.</li></ul>
<h2 class="p_Heading2"><span class="f_Heading2">Типовые скрипты создания решений</span></h2>
<h3 class="p_Heading3"><span class="f_Heading3">Интеграция с телефонией</span></h3>
<p class="p_Normal" style="line-height: 1.38;">Если для вашего провайдера телефонии еще нет готового решения, то вы можете достаточно быстро реализовать свою интеграцию.</p>
<p class="p_Normal" style="line-height: 1.38;">Сделать это можно при помощи <a href="ip-tel-integration.html" class="topiclink">пользовательского модуля и скриптов</a> на TypeScript. В силу стандартного подхода к работе с телефонией в платформе в модуле достаточно реализовать всего несколько методов. После этого можно будет настраивать телефонию и использовать её через стандартный интерфейс в платформе.</p>
<h3 class="p_Heading3"><span class="f_Heading3">Интеграция с внешней системой</span></h3>
<p class="p_Normal" style="line-height: 1.38;">Например, с 1С или любой другой учетной системой предприятия.</p>
<p class="p_Normal" style="line-height: 1.38;">Тут могут быть разные сценарии применения:</p>
<ul style="list-style-type:disc">
<li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 16px;"><span style="font-family: Inter;">One-way synchronization with the external system as a data source.</span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 16px;"><span style="font-family: Inter;">One-way synchronization with BRIX as a data source.</span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 16px;"><span style="font-family: Inter;">Two-way synchronization.</span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 16px;"><span style="font-family: Inter;">Occasional synchronization within business processes.</span></li></ul>
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">To set up synchronization like this, you need to create a custom module that would include:</span></p>
<li class="p_Normal" style="line-height: 1.38;">синхронизация в одну сторону (внешняя система — источник данных);</li><li class="p_Normal" style="line-height: 1.38;">синхронизация в одну сторону (ELMA365 — источник данных);</li><li class="p_Normal" style="line-height: 1.38;">синхронизация в обе стороны;</li><li class="p_Normal" style="line-height: 1.38;">разовые синхронизации в рамках выполнения процессов.</li></ul>
<p class="p_Normal" style="line-height: 1.38;">Для реализации такой синхронизации следует создать пользовательский модуль с функциями:</p>
<ul style="list-style-type:disc">
<li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 16px;"><span style="font-family: Inter;"><a href="https://tssdk.brix365.com/en/latest/" target="_blank" class="weblink">Scripts</a> that access the external systems HTTP methods using fetch to retrieve data and save it to the platform.</span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 16px;"><span style="font-family: Inter;"><a href="extention-processes.html" class="topiclink">Processes in the module</a> to run the script on schedule and process large amounts of data in a loop. </span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 16px;"><span style="font-family: Inter;"><a href="events_processing.html" class="topiclink">Event handlers</a> to send updated information to the external system when a user creates or edits an item on the platform.</span></li></ul>
<h3 class="p_Heading3"><span class="f_Heading3">Operators working space</span></h3>
<p style="line-height: 1.20; margin: 7px 0 7px 0;"><span style="font-family: Inter;">For example, you can set up a form the bank operator fills out when issuing a loan. A form like this usually has a lot of fields where values are calculated dynamically, and sends requests to external systems for additional checks. You can make such forms using <a href="user_widgets.html" class="topiclink">custom widgets</a>:</span></p>
<li class="p_Normal" style="line-height: 1.38;"><a href="https://tssdk.elma365.com/ru/latest/index.html" class="weblink">скрипты</a> с обращением к HTTP-методам внешней системы через <code><b>fetch</b></code> для выборки данных и сохранения этих данных в платформу;</li><li class="p_Normal" style="line-height: 1.38;"><a href="extention-processes.html" class="topiclink">процессы в модуле</a> для запуска скрипта по расписанию и обработки больших массивов данных в цикле;</li><li class="p_Normal" style="line-height: 1.38;"><a href="events_processing.html" class="topiclink">обработчики событий</a> для перехвата создания и изменения элементов в платформе и отправки актуальной информации во внешний сервис.</li></ul>
<h3 class="p_Heading3"><span class="f_Heading3">Единая форма оператора (рабочее место)</span></h3>
<p class="p_Normal" style="line-height: 1.38;">Например, форма операциониста банка для оформления кредита. На такой форме обычно много полей ввода с динамическим расчетом данных и обращения к внешним системам для дополнительной проверки. Такую форму можно реализовать при помощи <a href="user_widgets.html" class="topiclink">пользовательского виджета</a>:</p>
<ul style="list-style-type:disc">
<li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">Use standard <a href="interface_designer.html" class="topiclink">interface designer</a> elements and add <a href="client_server_scripts.html" class="topiclink">client scripts</a> to make the form dynamic.</span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">Use the <a href="code_widget.html" class="topiclink">Code widget</a> to create a markup not available in the standard widgets.</span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">Set up communication with external systems using <a href="https://tssdk.brix365.com/en/latest/" target="_blank" class="weblink">server scripts</a>.</span></li></ul>
<h3 class="p_Heading3"><span class="f_Heading3">Reports</span></h3>
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">If you need to create a quick and simple report for a user, the easiest way to do it is to use a custom widget. This case is initially the same as the previous one, but here it is not the entry of data that is important, but data display. To achieve the view you need, you can add your own styles in the </span><span style="font-family: Inter; font-weight: bold;">Code</span><span style="font-family: Inter;"> widget and use </span><span style="font-family: Inter; font-weight: bold;">JavaScript</span><span style="font-family: Inter;">.</span></p>
<h3 class="p_Heading3"><span class="f_Heading3">BRIX as the source of data for external systems</span></h3>
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">You may need to use data accumulated in BRIX in an external system for report generation. For example, it can be a BI system or a report server. Such systems usually can work with data accessible at an HTTP address. To add a new address with the desired behavior, you just need to create your own <a href="extention-api.html" class="topiclink">API method</a> in a custom module. In this method, you will be able to return any data in any format the report server requires.</span></p>
<h3 class="p_Heading3"><span class="f_Heading3">Work with binary and proprietary file formats</span></h3>
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">If you need to read or create a file of a non-standard binary (or proprietary) format, you can do it using a <a href="custom_services.html" class="topiclink">custom microservice</a>. In your service, you need to create an HTTP method with the following functionality:</span></p>
<li class="p_Normal" style="line-height: 1.38;">использовать стандартные элементы <a href="interface_designer.html" class="topiclink">дизайнера интерфейсов</a> и <a href="client_server_scripts.html" class="topiclink">скрипты на клиенте</a> для динамики;</li><li class="p_Normal" style="line-height: 1.38;">использовать <a href="code_widget.html" class="topiclink">виджет Код</a> для формирования разметки, которая не укладывается в стандартные виджеты;</li><li class="p_Normal" style="line-height: 1.38;">добавить обмен данными с внешними системами через <a href="https://tssdk.elma365.com/ru/latest/index.html" class="weblink">скрипты</a> на сервере.</li></ul>
<h3 class="p_Heading3"><span class="f_Heading3">Отчёты</span></h3>
<p class="p_Normal" style="line-height: 1.38;">Если нужно сформировать быстрый и простой отчёт для пользователя, то проще всего это сделать пользовательским виджетом. По сути этот скрипт похож на предыдущий, но тут больше внимания уделяется не вводу данных, а их отображению. Для достижения нужного вида можно подключить в виджете <span style="font-weight: bold;">Код</span> свои собственные стили и использовать язык JavaScript.</p>
<h3 class="p_Heading3"><span class="f_Heading3">Платформа как источник данных для внешних систем</span></h3>
<p class="p_Normal" style="line-height: 1.38;">Может стоять задача использования данных накопленных в ELMA365 для внешней системы формирования отчётности. Например, это может быть умный BI или готовый сервер отчётов. Такие системы часто умеют работать с данными доступными по HTTPадресу. Чтобы добавить новый адрес с нужным поведением, достаточно реализовать свой <a href="extention-api.html" class="topiclink">метод API</a> в пользовательском модуле. В таком методе вы можете вернуть любые данные в любом удобном для сервера отчётов формате.</p>
<h3 class="p_Heading3"><span class="f_Heading3">Работа с файлами бинарных или закрытых форматов</span></h3>
<p class="p_Normal" style="line-height: 1.38;">Если вам нужно прочитать или создать файл нестандартного бинарного (или закрытого) формата, то сделать это можно при помощи <a href="custom_services.html" class="topiclink">своего микросервиса</a>. В таком сервисе следует реализовать HTTPметод, в котором:</p>
<ul style="list-style-type:disc">
<li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">Get the whole files body (or only the files ID in the system).</span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">Perform the desired operations with the file.</span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">Return the whole files body in the response (or save the file using the standard API for working with files).</span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">This service should be called from a modules scripts, where you can wrap the requests in the convenient form of <a href="extention-activities.html" class="topiclink">business process actions</a> and <a href="extention-widegets.html" class="topiclink">widgets</a>.</span></li></ul>
<h2 class="p_Heading2"><span class="f_Heading2">Integration with other protocols (without HTTP)</span></h2>
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">As in the previous case, you can set up integration with other protocols by creating a separate adapter service. This service needs to be able to translate HTTP method calls to the communications protocol you need. For example, you can configure:</span></p>
<li class="p_Normal" style="line-height: 1.38;">получить всё тело файла (или только идентификатор файла в системе);</li><li class="p_Normal" style="line-height: 1.38;">выполнить нужные манипуляции с файлом;</li><li class="p_Normal" style="line-height: 1.38;">вернуть тело файла в ответе (или сохранить файл через стандартный API работы с файлами);</li><li class="p_Normal" style="line-height: 1.38;">вызвать такой сервис лучше из скриптов модуля, и можно обернуть вызовы в удобные блоки <a href="extention-activities.html" class="topiclink">действий в бизнес‑процессах</a> или в <a href="extention-widegets.html" class="topiclink">виджеты</a>.</li></ul>
<h2 class="p_Heading2"><span class="f_Heading2">Интеграция с другими протоколами (когда нет HTTP)</span></h2>
<p class="p_Normal" style="line-height: 1.38;">По аналогии с предыдущей задачей — эта решается созданием отдельного сервиса адаптера. Такой сервис должен уметь транслировать вызовы HTTPметодов в требуемые протоколы взаимодействия. Например:</p>
<ul style="list-style-type:disc">
<li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 16px;"><span style="font-family: Inter;">Sending or reading data in a corporate data bus (MSMQ, RabbitMQ, ActiveMQ, and others).</span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 16px;"><span style="font-family: Inter;">Interaction with a data storage and processing system (Oracle, MS SQL, and others).</span></li></ul>
<h2 class="p_Heading2"><span class="f_Heading2">Components used to build solutions</span></h2>
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">There are three important components in the system that can help you solve tasks of any complexity:</span></p>
<li class="p_Normal" style="line-height: 1.38;">отправка или чтение данных в корпоративной шине данных (MSMQ, RabbitMQ, ActiveMQ и другие);</li><li class="p_Normal" style="line-height: 1.38;">взаимодействие с отдельной системой хранения и обработки данных (Oracle, MS SQL и другие).</li></ul>
<h2 class="p_Heading2"><span class="f_Heading2">Составные компоненты для решения задач</span></h2>
<p class="p_Normal" style="line-height: 1.38;">В платформе есть три важных компонента для реализации решений любой сложности:</p>
<ul style="list-style-type:disc">
<li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 16px;"><span style="font-family: Inter;"><a href="code_widget.html" class="topiclink">Code widget</a>.</span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 16px;"><span style="font-family: Inter;"><a href="extentions.html" class="topiclink">Module</a>.</span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 16px;"><span style="font-family: Inter;"><a href="custom_services.html" class="topiclink">Dedicated service</a>.</span></li></ul>
<h3 class="p_Heading3"><span class="f_Heading3">Code widget</span></h3>
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">This widget allows you to create self-sufficient <a href="interface_settings.html" class="topiclink">user interfaces</a> with dynamic fields and any interface design. The logic of the widget is set using JavaScript and HTML with the <a href="https://lodash.com/" target="_blank" class="weblink">Lodash utility library</a>. By combining this with client- and server-side scripts written in TypeScript inside the widget, you can create complex and flexible solutions.</span></p>
<p style="line-height: 1.20; margin: 7px 0 7px 0;"><span style="font-family: Inter; font-weight: bold;">Examples:</span></p>
<li class="p_Normal" style="line-height: 1.38;"><a href="code_widget.html" class="topiclink">виджет «Код»</a>;</li><li class="p_Normal" style="line-height: 1.38;"><a href="extentions.html" class="topiclink">модуль</a>;</li><li class="p_Normal" style="line-height: 1.38;"><a href="custom_services.html" class="topiclink">выделенный сервис</a>.</li></ul>
<h3 class="p_Heading3"><span class="f_Heading3">Виджет «Код»</span></h3>
<p class="p_Normal" style="line-height: 1.38;">Этот виджет позволяет создавать полностью самостоятельные <a href="interface_settings.html" class="topiclink">пользовательские интерфейсы</a> с динамикой и любыми интерфейсными решениями. В виджете создаётся логика при помощи языка JavaScript и разметки HTML с применением языка шаблонов <a href="https://learn.javascript.ru/template-lodash" class="weblink">Lodash template</a>. В комбинации с клиентскими и серверными скриптами на TypeScript внутри виджета это даёт большие возможности для создания сложных и гибких решений. </p>
<h4 class="p_Heading4"><span class="f_Heading4">Примеры:</span></h4>
<ul style="list-style-type:disc">
<li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">Dynamic forms and integration with external sources.</span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">Complex charts based on app data created using D3.js and other web libraries. </span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">Complex templates for displaying app items in the browser and working with them. You can make a panel for planning, a compound Kanban board, or a specific array of app items.</span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">Opportunity to create a full-fledged web application using any web technologies (an interface to work with the platforms data) and add it into a custom widget as a ready-to-use JS file.</span></li></ul>
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">As a rule, when you want to use the </span><span style="font-family: Inter; font-weight: bold;">Code</span><span style="font-family: Inter;"> widget, you create a <a href="user_widgets.html" class="topiclink">custom widget</a> in an app, workspace, or module. In this widget, you define the context (properties) that will affect the </span><span style="font-family: Inter; font-weight: bold;">Code</span><span style="font-family: Inter;"> widget you place inside the custom widget. This allows you to reuse the widget in different interfaces and modify its behavior by changing its settings.</span></p>
<h3 class="p_Heading3"><span class="f_Heading3">Module</span></h3>
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">To extend the systems functionality and set integration logic, we have implemented a special container called a <a href="360024498352.html" class="topiclink">module</a>. A module is designed to create ready-to-use configuration elements (widgets, business process activities). Thats why a module, unlike a workspace, cannot be installed into the system more than once, but it can later be updated to a newer version.</span></p>
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">You can use a module to:</span></p>
<li class="p_Normal" style="line-height: 1.38;">динамика на форме и интеграция с внешними источниками — например, <a href="dadata_integration.html" class="topiclink">интеграция с сервисом DaData</a>.</li><li class="p_Normal" style="line-height: 1.38;">сложные графики на основе данных приложения через D3.js или другие веб библиотеки.</li><li class="p_Normal" style="line-height: 1.38;">сложные шаблоны отображения и работы с элементами приложений в браузере. Доска для планирования, сложный канбан или особая матрица расположения элементов приложений.</li><li class="p_Normal" style="line-height: 1.38;">возможность создать полноценное веб‑приложение с использованием любых веб технологий (рабочее место для работы с данными платформы) и положить его как готовый файл <span style="font-weight: bold;">.js</span> в пользовательский виджет.</li></ul>
<p class="p_Normal" style="line-height: 1.38;">Типовой сценарий использования виджета <span style="font-weight: bold;">Код</span> — это создание <a href="user_widgets.html" class="topiclink">пользовательского виджета</a> в приложении, разделе или модуле. В этом виджете вы определяете пользовательский контекст (свойства), который будет влиять на поведение вложенного внутрь него виджета <span style="font-weight: bold;">Код</span>. Таким образом, вы сможете повторно использовать виджет в разных интерфейсах и менять его поведение настройками.</p>
<h3 class="p_Heading3"><span class="f_Heading3">Модуль</span></h3>
<p class="p_Normal" style="line-height: 1.38;">Для решения задач, связанных с расширениями функциональных возможностей системы или реализацией интеграционной логики на сервере мы ввели специальный контейнер — <a href="360024498352.html" class="topiclink">модуль</a>. Модуль предназначен для создания готовых к использованию элементов конфигурации (виджетов, действий бизнес‑процесса). Поэтому модуль, в отличие от раздела, может быть установлен в систему только один раз. В дальнейшем он может обновляться на более новую версию.</p>
<p class="p_Normal" style="line-height: 1.38;">С помощью модуля в системе можно:</p>
<ul style="list-style-type:disc">
<li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 16px;"><span style="font-family: Inter;">Expand the functionality of standard interfaces using extension zones.</span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 16px;"><span style="font-family: Inter;">Create ready-to-use <a href="extention-widegets.html" class="topiclink">custom widgets</a>.</span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 16px;"><span style="font-family: Inter;">Create ready-to-use <a href="extention-activities.html" class="topiclink">custom activities</a> for business processes.</span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 16px;"><span style="font-family: Inter;">Process <a href="events_processing.html" class="topiclink">system events</a> using scripts or processes.</span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 16px;"><span style="font-family: Inter;">Process <a href="extention-api.html" class="topiclink">arbitrary web requests</a> (add custom Web API methods).</span></li></ul>
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">A module can be developed and installed to BRIX On-Premises without any restrictions. You can also publish a module in the <a href="https://store.brix365.com/" target="_blank" class="weblink">BRIX Store</a> cloud catalog after moderation.</span></p>
<h3 class="p_Heading3"><span class="f_Heading3">Dedicated service</span></h3>
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">For some integrations with external systems, TypeScript may not be sufficient, and the system may not have a ready-to-use HTTP API.</span></p>
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">We recommend developing a special <a href="custom_services.html" class="topiclink">service</a> for that. Connection between BRIX and this service will use the platforms public <a href="https://api.brix365.com/en/public-api/guides/IntroWebAPI/" target="_blank" class="weblink">Web API</a> and HTTP methods created in the service itself.</span></p>
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">A solution like this has no limitations at all, apart from the complexity of the task you are solving and the capabilities of the developers who work on the service. <a href="custom_services.html#support" class="topiclink">Deployment and support</a> of such services are not provided by the platforms tech support.</span></p>
<p style="line-height: 1.20; margin: 7px 0 7px 0;"><span style="font-family: Inter; font-weight: bold;">Examples:</span></p>
<li class="p_Normal" style="line-height: 1.38;">расширять стандартные интерфейсы через зоны расширения;</li><li class="p_Normal" style="line-height: 1.38;">создавать готовые <a href="https://elma365.com/ru/help/extention-widegets.html" class="weblink">пользовательские виджеты</a>;</li><li class="p_Normal" style="line-height: 1.38;">создавать готовые <a href="https://elma365.com/ru/help/extention-activities.html" class="weblink">пользовательские блоки</a> действий для процессов;</li><li class="p_Normal" style="line-height: 1.38;">обрабатывать <a href="https://elma365.com/ru/help/events_processing.html" class="weblink">системные события</a> скриптами или процессами;</li><li class="p_Normal" style="line-height: 1.38;">обрабатывать <a href="https://elma365.com/ru/help/extention-api.html" class="weblink">произвольный веб запрос</a> (добавляет свои методы Web API).</li></ul>
<p class="p_Normal" style="line-height: 1.38;">Модуль может быть разработан и установлен в редакцию OnPremises без каких‑либо ограничений. Также модуль можно опубликовать в облачный каталог <a href="https://store.elma365.ru/" class="weblink">ELMA365 Store</a> после прохождения процедуры модерации.</p>
<h4 class="p_Heading4"><span class="f_Heading4">Примеры:</span></h4>
<ul style="list-style-type:disc">
<li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">A service for working with a legacy system using a low-level driver or a closed protocol.</span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">A service containing a pre-trained machine learning model for making decisions.</span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">A service for complex analysis and transformation of big data. </span></li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">A service that an external system uses to pass data to the platform (for example, in a DMZ).</span></li></ul>
<p style="line-height: 1.28; margin: 0 0 11px 0;"><span style="font-family: Inter;">It is important to understand that communication between this service and the platform may be restricted, as the Web API has its limitations. However, you can create a module with custom <a href="extention-api.html" class="topiclink">API methods</a> and use them in the service.</span></p>
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">We are convinced that this approach to service integrations needs to become the industry standard and be clear to everyone who takes part in the development of solutions.</span></p>
<p style="line-height: 1.28; margin: 0 0 11px 0;"><span style="font-family: Inter;">Here is an exemplary diagram of how the functionality of BRIX can be extended and how communication with external systems can be set up:</span></p>
<p style="line-height: 1.28; margin: 0 0 11px 0;"><img alt="illustration" width="980" height="563" style="margin:0;width:980px;height:563px;border:none" src="illustration.png"/></p>
<h2 class="p_Heading2"><span class="f_Heading2">Solutions development process</span></h2>
<h3 class="p_Heading3"><span class="f_Heading3">Pack and transfer a solution</span></h3>
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">The BRIX configuration includes such container as a <a href="solution.html" class="topiclink">solution</a>. It allows you to unite several workspaces and modules into one package for exporting and importing it in different companies.</span></p>
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">This approach allows you to solve large-scale enterprise tasks, create practical business solutions, and quickly transfer them between development, testing, and production environments.</span></p>
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">Useful solution packages can also be added to <a href="https://store.brix365.com/" target="_blank" class="weblink">BRIX Store</a> after moderation by BRIX staff.</span></p>
<li class="p_Normal" style="line-height: 1.38;"><a href="diadoc_main.html" class="topiclink">интеграция с Диадок</a> — комплексный пакет интеграции с внешней системой;</li><li class="p_Normal" style="line-height: 1.38;">реализация провайдера <a href="ip-tel-integration.html" class="topiclink">Телефонии</a>;</li><li class="p_Normal" style="line-height: 1.38;">реализация провайдера для <a href="electronic-signature.html" class="topiclink">ЭЦП</a>;</li><li class="p_Normal" style="line-height: 1.38;">модуль <a href="audit_extension.html" class="topiclink">Аудит безопасности</a>.</li></ul>
<h3 class="p_Heading3"><span class="f_Heading3">Выделенный сервис</span></h3>
<p class="p_Normal" style="line-height: 1.38;">Бывают случаи, когда требуется провести интеграцию с внешней системой, при этом возможностей TypeScript недостаточно, и у внешней системы может не быть готового HTTP API.</p>
<p class="p_Normal" style="line-height: 1.38;">В этом случае мы рекомендуем разрабатывать <a href="custom_services.html" class="topiclink">отдельный самостоятельный сервис</a>. Между платформой ELMA365 и этим сервисом связь должна идти через публичное <a href="https://api.elma365.com/ru/public-api/guides/IntroWebAPI/" target="_blank" class="weblink">Web API</a> платформы и HTTP-методы, созданные в самом сервисе.</p>
<p class="p_Normal" style="line-height: 1.38;">Рамки такого решения уже ничем не ограничены, только сложностью решаемой задачи и возможностями разработчиков сервиса. <a href="custom_services.html#support" class="topiclink">Размещение и поддержка</a> такого сервиса не входит в область поддержки платформы.</p>
<h4 class="p_Heading4"><span class="f_Heading4">Примеры:</span></h4>
<ul style="list-style-type:disc">
<li class="p_Normal" style="line-height: 1.38;">сервис, который обеспечивает работу с legacy системой через низкоуровневый драйвер или закрытый протокол;</li><li class="p_Normal" style="line-height: 1.38;">сервис, который содержит внутри подготовленную ML модель для принятия решений;</li><li class="p_Normal" style="line-height: 1.38;">сервис, который выполняет сложный анализ и преобразование больших данных;</li><li class="p_Normal" style="line-height: 1.38;">сервис, через который внешняя система передает данные в платформу (например в условиях DMZ).</li></ul>
<p class="p_Normal" style="line-height: 1.38;">Очень важно понимать, что возможности взаимодействия такого сервиса с платформой ограничены строгостью Web API. Но при этом, можно создать модуль, в котором реализовать собственные <a href="extention-api.html" class="topiclink">методы API</a> и использовать их в сервисе.</p>
<p class="p_Normal" style="line-height: 1.38;">Мы считаем, что подход «Задача — Сервис» должен стать традиционным и понятным для всех участников разработки решений.</p>
<p class="p_Normal" style="line-height: 1.38;">Так выглядит примерная схема возможностей расширения функциональных возможностей платформы и взаимодействия с ней из внешнего мира:</p>
<p class="p_Normal" style="line-height: 1.38;"><img alt="illustration" width="980" height="563" style="margin:0;width:980px;height:563px;border:none" src="illustration.png"/></p>
<p class="p_Normal" style="line-height: 1.38;">&nbsp;</p>
<h2 class="p_Heading2"><span class="f_Heading2">Процесс разработки решений</span></h2>
<h3 class="p_Heading3"><span class="f_Heading3">Решение для упаковки и переноса</span></h3>
<p class="p_Normal" style="line-height: 1.38;">В конфигурации ELMA365 есть такой контейнер, как <a href="solution.html" class="topiclink">решение</a>. Он позволяет объединять несколько разделов и модулей в единый пакет для экспорта‑импорта между компаниями.</p>
<p class="p_Normal" style="line-height: 1.38;">Этот подход позволяет решать крупные промышленные задачи, создавать реальные бизнес-решения и быстро переносить их между окружениями разработки / тестирования / эксплуатации.</p>
<p class="p_Normal" style="line-height: 1.38;">Также полезные пакеты решений могут быть выгружены в <a href="https://store.elma365.ru/" class="weblink">ELMA365 Store</a> после модерации вендором.</p>
<div class="bottom-nav">
@ -187,14 +194,14 @@
</a>
<a id="next-link" class="topic__navi_next" href="type-script.html">
<span class="bottom-nav__link">type-script.html</span> <span
<a id="next-link" class="topic__navi_next" href="developer-course-elma365.html">
<span class="bottom-nav__link">developer-course-elma365.html</span> <span
class="bottom-nav__arrow bottom-nav__arrow--next"></span>
</a>
</div>
<!-- добавляет на страницу строку блок Была ли статья полезной? -->
<div class="feedback" id="feedback"><div class="feedback-help"><span><b>Was this helpful?</b></span><form action="" method="POST" class="feedback-form" id="feedback-form"><div class="feedback__popup feedback__popup-response" id="feedback__popup_thx" style="display: none;">Thanks for your feedback!</div><div class="feedback__popup" id="feedback__popup_why" style="display: none;"><div class="feedback__popup-header">Please specify why:</div><input type="radio" name="category" id="bad_recommendation" value="bad_recommendation"><label for="bad_recommendation">Recommendations did not help me</label><input type="radio" name="category" id="difficult_text" value="difficult_text"><label for="difficult_text">Article is hard to understand</label><input type="radio" name="category" id="no_answer" value="no_answer"><label for="no_answer">Didn`t answer my question</label><input type="radio" name="category" id="bad_header" value="bad_header"><label for="bad_header">Content does not match the topic</label><input type="radio" name="category" id="other_reason" value="other_reason"><label for="other_reason">Other</label></div><div class="feedback__popup" id="feedback__popup-other" style="display: none;"><div class="feedback__popup-header">How we can improve it?</div><textarea class="feedback__textarea" name="other" id=""></textarea><input type="submit" class="feedback__other-btn" value="Submit"></div><div class="feedback-form__btn-group"><input type="radio" name="useful" id="feedback__useful_yes" value="true"><label for="feedback__useful_yes"><img src="like.svg" class="small-img" alt="like"><spanclass="feedback-form__btn-group_yes-btn">Yes</spanclass="feedback-form__btn-group_yes-btn"></label><input type="radio" name="useful" id="feedback__useful_no" value="false"><label for="feedback__useful_no"><img src="dislike.svg" class="small-img" alt="dislike"><spanclass="feedback-form__btn-group_no-btn">No</spanclass="feedback-form__btn-group_no-btn"></label></div><select name="category"><option disabled="">Please specify why</option><option value="bad_recommendation" selected="">Recommendations did not help me</option><option value="difficult_text">Article is hard to understand</option><option value="no_answer">Didn`t answer my question</option><option value="bad_header">Content does not match the topic</option><option value="other_reason">Other</option></select><input type="submit"></form></div><div class="found_typo"><p style="margin: 0px; margin-top: 16px !important;"><span><b>Found a typo?</b></span> Select it and press <i>Ctrl+Enter</i> to send us feedback</p></div></div>
<div class="feedback-wrap"><div class="feedback" id="feedback"><span><b>Была ли статья полезной?</b></span><form action="" method="POST" class="feedback-form" id="feedback-form"><div class="feedback__popup feedback__popup-response" id="feedback__popup_thx">Спасибо за ваш отзыв!</div><div id="feedback-success-popup"><div class="wrap"><button type="button" class="feedback-popup-close">×</button><svg width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_212_2187)"><path d="M22 0.6875C10.2294 0.6875 0.6875 10.2294 0.6875 22C0.6875 33.7706 10.2294 43.3125 22 43.3125C33.7706 43.3125 43.3125 33.7706 43.3125 22C43.3125 10.2294 33.7706 0.6875 22 0.6875ZM22 40.5625C11.8023 40.5625 3.4375 32.3078 3.4375 22C3.4375 11.8024 11.6922 3.4375 22 3.4375C32.1977 3.4375 40.5625 11.6922 40.5625 22C40.5625 32.1976 32.3078 40.5625 22 40.5625ZM34.1713 16.933L18.6613 32.3186C18.257 32.7197 17.604 32.7171 17.203 32.3128L9.82283 24.873C9.42176 24.4686 9.42434 23.8157 9.82867 23.4146L10.5609 22.6884C10.9652 22.2873 11.6181 22.2899 12.0192 22.6942L17.9468 28.6697L31.9926 14.7366C32.3969 14.3356 33.0498 14.3382 33.4509 14.7425L34.1772 15.4747C34.5783 15.879 34.5757 16.532 34.1713 16.933Z" fill="#27AE60"></path></g><defs><clipPath id="clip0_212_2187"><rect width="44" height="44" fill="white"></rect></clipPath></defs></svg><p>Ваш отзыв успешно отправлен!</p><span>Спасибо за обратную связь.</span></div></div><div class="feedback__popup" id="feedback__popup_why"><button type="button" class="feedback-popup-close">×</button><div class="feedback__popup-header">Уточните, почему:</div><input type="radio" name="category" id="bad_recommendation" value="bad_recommendation"><label for="bad_recommendation">Рекомендации не помогли</label><input type="radio" name="category" id="difficult_text" value="difficult_text"><label for="difficult_text">Текст трудно понять</label><input type="radio" name="category" id="no_answer" value="no_answer"><label for="no_answer">Нет ответа на мой вопрос</label><input type="radio" name="category" id="bad_header" value="bad_header"><label for="bad_header">Содержание статьи не соответствует заголовку</label><input type="radio" name="category" id="other_reason" value="other_reason"><label for="other_reason">Другая причина</label></div><div class="feedback__popup" id="feedback__popup-other"><button type="button" class="feedback-popup-close">×</button> <div class="feedback__popup-header">Расскажите, что вам не понравилось в статье:</div><textarea class="feedback__textarea" name="other" id=""></textarea><input type="submit" class="feedback__other-btn" value="Отправить"></div><div class="feedback-form__btn-group"><input type="radio" name="useful" id="feedback__useful_yes" value="true"><label for="feedback__useful_yes"><img src="like.svg"/><span class="feedback-form__btn-group_yes-btn">Да</span></label><input type="radio" name="useful" id="feedback__useful_no" value="false"><label for="feedback__useful_no"><img src="dislike.svg"/><span class="feedback-form__btn-group_no-btn">Нет</span></label></div><select name="category"><option disabled>Выберите вариант</option><option value="bad_recommendation" selected>Рекомендации не помогли</option><option value="difficult_text">Текст трудно понять</option><option value="no_answer">Нет ответа на мой вопрос</option><option value="bad_header">Содержание статьи не соответствует заголовку</option><option value="other_reason">Другая причина</option></select><input type="submit"></form></div></div>
</section>
</div>
@ -202,7 +209,7 @@
<input type="checkbox" />
<div class="article__arrow"></div>
<div class="table-of-contents elma365-right" id="toc2Content">
<h3 class="h3-toc">In this topic</h3>
<h3 class="h3-toc">В этой статье</h3>
<nav id="toc2"></nav>
</div>
</aside>
@ -213,30 +220,63 @@
<div class="footer-container">
<div class="footer-mobile">
<ul class="footer-mobile__list"><li><a href="https://brix365.com/en/" target="_blank">BRIX</a></li><li><a href="https://tssdk.brix365.com/en/latest/" target="_blank">SDK</a></li><li><a href="https://api.brix365.com/en/" target="_blank">API</a></li></ul><ul class="footer-mobile__list"><li><a href="https://brix365.com/en/help/platform/get-trial.html">Platform</a></li><li><a href="https://brix365.com/en/help/ecm/ecm-functions.html">ECM</a></li><li><a href="https://brix365.com/en/help/service/service-functions.html">Service</a></li><li><a href="https://brix365.com/en/help/projects/projects-functions.html">Projects</a></li></ul>
<ul class="footer-mobile__list"><li><a href="https://api.elma365.com/ru/" target="_blank">API</a></li><li><a href="https://tssdk.elma365.com/" target="_blank">TS SDK</a></li><li><a href="https://community.elma365.com/" target="_blank">Community</a></li><li><a href="https://elma-academy.com/ru/elma365" target="_blank">Академия</a></li></ul><ul class="footer-mobile__list"><li><a href="https://elma365.com/ru/help/platform/get-trial.html">Платформа</a></li><li><a href="https://elma365.com/ru/help/ecm/ecm-functions.html">ECM</a></li><li><a href="https://elma365.com/ru/help/service/service-functions.html">Service</a></li><li><a href="https://elma365.com/ru/help/projects/projects-functions.html">Проекты</a></li></ul>
</div>
<div class="footer-wrap">
<div><span class="mobile-question-popup">Send feedback</span><form method="POST" action class="question__popup question-xs" id="question__popup"><div class="question-wrap"><span class="close"></span><span class="title">Ask a question</span><label for="help_question" style="display: none;"></label><textarea name="help_question" id="help_question"></textarea><input type="submit" value="Send"></div></form><div class="hidden fade-in question-success-xs">Sent</div></div>
<div class="footer-flex-b">
<span class="footer-copy">&copy; 2025 BRIX</span>
<ul class="footer-list">
<li class="footer-item">
<a href="#" class="arrow-top" style="display: block;"></a>
</li>
</ul>
<div class="container">
<div class="footer-wrap">
<div><span class="mobile-question-popup">Отправить фидбэк</span><form method="POST" action class="question__popup question-xs" id="question__popup"><div class="question-wrap"><span class="close"></span><span class="title">Задать вопрос</span><label for="help_question" style="display: none;"></label><textarea name="help_question" id="help_question"></textarea><input type="submit" value="Отправить"></div></form><div class="hidden fade-in question-success-xs">Ваш фидбэк отправлен.</div></div>
<div class="footer-flex-b">
<div class="footer-top">
<span class="footer-copy">&copy; 2025
ELMA365
</span>
<a href="https://navigator.sk.ru/orn/1122971" target="_blank">
<img src="sk-resident.svg" alt="sk icon" class="footer-img" width="117" height="34">
</a>
</div>
<div class="footer-line">
<div class="footer-line-copy">
<span class="footer-copy">&copy; 2025
ELMA365
</span>
</div>
<ul class="footer-list">
<li class="footer-item"><a href="https://elma365.com/ru/" target="_blank" class="footer-link" style="color: #0D4A75;"><img src="browse.svg" alt="browse icon" class="footer-img">elma365.com</a></li><li class="footer-item"><a href="https://www.youtube.com/user/ELMABPM" target="_blank" class="footer-link"><img src="yt.svg" alt="youtube icon" class="footer-img"></a></li><li class="footer-item"><a href="https://vk.com/elma_bpm" target="_blank" class="footer-link"><img src="vk.svg" alt="vk icon" class="footer-img"></a></li><li class="footer-item"><a href="https://t.me/elmaday" target="_blank" class="footer-link"><img src="tg.svg" alt="telegram icon" class="footer-img"></a></li><li class="footer-item"><a href="https://dzen.ru/elma" target="_blank" class="footer-link"><img src="dzen.svg" alt="dzen icon" class="footer-img"></a></li>
<li class="footer-item">
<a href="https://navigator.sk.ru/orn/1122971" target="_blank">
<img src="sk-resident.svg" alt="sk icon" class="footer-img" width="117" height="34">
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
<a href="#" class="arrow-top"></a>
</div>
</footer>
<!-- <script type="text/javascript" src="jquery1.min.js"></script>-->
<iframe name="hmnavigation" style="display:none!important"></iframe>
<script src="./jquery-ui.js"></script>
<!--<script src="./jquery-ui.js"></script> -->
<script src="./jquery-ui.min.js"></script>
<!--script src="//cdn.jsdelivr.net/npm/featherlight@1.7.14/release/featherlight.min.js" type="text/javascript" charset="utf-8"></script-->
<script src="./jquery.tocify.min.js"></script>
<script src="./TypoReporter.min.js"></script>