update
All checks were successful
Deploy Static Site / deploy (push) Successful in 6m6s

This commit is contained in:
2025-05-29 16:42:45 +04:00
parent e217f89702
commit 00717a92fb
2681 changed files with 173810 additions and 0 deletions

View File

@ -0,0 +1,246 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Event handling in modules</title>
<meta name="generator" content="Help+Manual" />
<meta name="keywords" content="" />
<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="You can configure the handling of various system events in a custom module." />
<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="" />
<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" />
<link rel="stylesheet" href="./jquery-ui.min.css" />
<link rel="stylesheet" href="default.css" />
<link rel="stylesheet" href="./search-yandex.css" />
<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>
<script type="text/javascript" src="highlight.js"></script>
<script type="text/javascript">
$(document).ready(function(){highlight();});
</script>
</head>
<body>
<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>
<!-- <div class="hero__search-form" id="search-panel">
<form class="search-form" onsubmit="ym(83180416,'reachGoal','poisk')">
<label class="search-form__label">
<span id="reset-search" class="search__icon"></span>
<input class="search-form__input" type="text">
</label>
<input class="search-form__submit" type="submit" value="Submit">
</form>
</div> -->
<div class="hero__search-form" id="search-panel"> <form class="search-form"> <label class="search-form__label"> <span id="reset-search" class="search__icon"></span> <input class="search-form__input" type="text"> </label> <input class="search-form__submit" type="submit" value="Submit"> </form> </div>
<div class="hero__search">
<a href="#" id="search-icon" class="hero__search-icon">
<img src="search-icon-white.svg" alt="search string">
</a>
<a href="#" id="side-menu-icon" class="hero__side-icon">
<img src="side_menu.svg" alt="side menu">
</a>
</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>
</div>
</div>
</header>
<main class="main container">
<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>
<span class="sidebar__close elma-365-close" id="close"></span>
</div>
<div class="sidebar__wrapper" id="side-menu">
</div>
</aside>
<article class="article" id="article">
<div class="article-inner">
<div class="content">
<header class="article__header">
<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="360024498352.html">Modules</a> &gt; <a href="extentions.html">Custom modules</a> / Event handling in modules</p>
</div>
</div>
<div class="topic__title"><h1 class="p_Heading1"><span class="f_Heading1">Event handling in modules</span></h1>
</div>
</header>
<section class="article__content">
<div class="scroll-top-inner">
<a href="#h1-article" class="scroll-top"></a>
</div>
<!-- Placeholder for topic body. -->
<p class="p_Normal">You can configure the handling of various system events in a custom module.</p>
<p class="p_Normal">An<span style="font-weight: bold;"> event handler</span> triggers a specific action in the system after an event occurs. It can be useful when creating complex modules. </p>
<p class="p_Normal">When an event occurs, the following actions can be performed:</p>
<ul style="list-style-type:disc">
<li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 16px;">Executing a <span style="color: #0000ff;"><a href="type-script.html" class="topiclink">script</a></span> created in the handler.</li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 16px;">Starting a <span style="color: #0000ff;"><a href="extention-processes.html" class="topiclink">business process associated with the module</a></span>.</li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 16px;">Sending a message to an <span style="color: #0000ff;"><a href="custom_services.html" class="topiclink">external microservice</a></span>. It is available only in <span style="color: #0000ff;"><a href="elma365-on-premises.html" class="topiclink">BRIX On-Premises</a></span>.</li></ul>
<p style="line-height: 1.20; margin: 7px 0 16px 0;">For example, you can create a handler in a module that launches a process after a user edits an app item.</p>
<h2 class="p_Heading2"><span class="f_Heading2">Create an event handler</span></h2>
<ol style="list-style-type:upper-roman">
<li value="1" class="p_Normal">Go to <span style="font-weight: bold;">Administration &gt; Modules</span>.</li><li value="2" class="p_Normal">Hover the mouse over a module and click the gear icon.</li><li value="3" class="p_Normal">Go to the <span style="font-weight: bold;">Event Handling</span> tab.</li><li value="4" class="p_Normal">Click <span style="font-weight: bold;">+Handler</span> and enter the information in the window that opens.</li></ol>
<p class="p_Normal" style="margin: 0 0 0 34px;"><img alt="event-handling-1" width="506" height="280" style="margin:0;width:506px;height:280px;border:none" src="event-handling-1.png"/></p>
<ul style="list-style-type:disc">
<li style="line-height: 1.20; background: #ffffff; margin-top: 14px; margin-right: 0; margin-bottom: 0;"><span style="font-weight: bold;">Name</span><span style="color: #ff0000;">*</span>. Enter the name of the handler.</li><li style="line-height: 1.20; background: #ffffff; margin-top: 14px; margin-right: 0; margin-bottom: 0;"><span style="font-weight: bold;">Handler type</span><span style="color: #ff0000;">*</span>. Select an activity that will occur after each event:<ul style="list-style-type:circle">
<li style="line-height: 1.20; background: #ffffff; margin-top: 14px; margin-right: 0; margin-bottom: 0;"><span style="font-weight: bold;">Run Script</span>. Executes a script created in the handler.</li><li style="line-height: 1.20; background: #ffffff; margin-top: 14px; margin-right: 0; margin-bottom: 0;"><span style="font-weight: bold;">Run Process</span>. Executes a business process created in the module on the <span style="font-weight: bold;">Processes</span> tab.</li><li style="line-height: 1.20; background: #ffffff; margin-top: 14px; margin-right: 0; margin-bottom: 0;"><span style="font-weight: bold;">Send Message to Service</span>. Sends a message to an external microservice. This activity is available only in <a href="elma365-on-premises.html" class="topiclink">BRIX OnPremises</a>.</li></ul></li></ul>
<ul style="list-style-type:disc">
<li class="p_Normal"><a id="domain" class="hmanchor"></a><span style="font-weight: bold;">Event domain</span>. Select an area where the handler will listen for events. You can choose from the following domains:</li></ul>
<ul style="list-style-type:disc"><ul style="list-style-type:circle">
<li class="p_Normal"><span style="font-weight: bold;">All Events</span>.</li><li class="p_Normal"><span style="font-weight: bold;">App Items</span>. Select the app whose events are to be processed in the <span style="font-weight: bold;">Object type filter</span> field that appears. If you do not select an app, the module will track the events of all existing apps in the system. It is possible to record the creation, update, status change, and removal of an item, and comments added to an items activity stream.</li></ul></li></ul>
<p style="line-height: 1.20; margin: 7px 0 7px 58px;">If you have set event tracking for the creation, update, or deletion of an item and specified an app, the <code><b>EventContext</b></code> property is added to the script. It contains strictly typed data of the app item and the corresponding event.</p>
<p style="line-height: 1.20; margin: 7px 0 7px 58px;">Please note that if an app is selected, it is impossible to <a href="export_extention.html" class="topiclink">export</a> the module. This is due to the restriction on exporting a module associated with an app that is not part of the module. You can <span style="color: #0000ff;"><a href="create-solution.html" class="topiclink">create a solution</a></span> and export the module and the app as part of it.</p>
<ul style="list-style-type:disc"><ul style="list-style-type:circle">
<li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;">Tasks</span>. The domain is only available when a paid CRM solution is activated with <span style="color: #0000ff;"><a href="360012911980.html" class="topiclink">CRM tasks</a></span> enabled.<span style="font-size: 13px;"> </span>The handler will record events related to the creation, modification, cancelation, or termination of CRM tasks. In the <span style="font-weight: bold;">Task type filter</span> field that appears, specify the type of activity whose changes will be tracked by the module: <span style="font-weight: bold;">All CRM Tasks</span>, <span style="font-weight: bold;">Call</span>, <span style="font-weight: bold;">Email</span>, <span style="font-weight: bold;">Webinar</span>, or <span style="font-weight: bold;">Meeting</span>. To learn more about setting up a handler of this type, see the <span style="color: #0000ff;"><a href="crm-events-processing.html" class="topiclink">Event handling in CRM tasks</a></span> article.</li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;">Apps</span>. The handler tracks events of exporting or importing data from the system apps.</li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;">Files</span>. Allows you to record the creation, editing, and deletion of a file, adding comments to it, and changing access settings.</li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;">Directories</span>. Tracks the creation, editing, deletion, and changing of access settings for folders in the <span style="font-weight: bold;">Files</span> workspace.</li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;">Duplicates</span>.You can customize the handler if you have activated a paid CRM solution that includes the search for duplicates, i.e., app items with the same data. The action in the handler is triggered when duplicate records are merged. You can see an example of such a handler in <span style="color: #0000ff;"><a href="duplicates-events-processing.html" class="topiclink">Event processing in duplicates</a></span> article.</li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;">Modules</span>. Allows you to track:<ul style="list-style-type:square">
<li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;">Events of enabling and disabling modules.</li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;">Events of installing and updating modules. Please note that these events are recorded only if the handler already exists in the system, not when it is added as part of a module.</li></ul>
<li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;">Settings</span>. Records the editing of <span style="color: #0000ff;"><a href="360009207779.html" class="topiclink">additional parameters</a></span> associated with the company, a workspace, or an app.</li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;">Users</span>. The events related to <a href="360004833572.html" class="topiclink">user account management</a> are tracked, as well as the user's actions, such as status changes, authorization error, logout, etc.</li></ul></li></ul>
<ul style="list-style-type:disc">
<li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;">Define the event type dynamically with a script</span>. This option is available if the <span style="font-weight: bold;">All Events</span> or <span style="font-weight: bold;">App Items</span> domain is selected. When it is enabled, the handler can track several event types at once, which are specified in the <span style="color: #0000ff;"><a href="events_processing.html" class="topiclink">filtering script</a></span>. Event filtering is performed before the handler itself is started. For example, you can configure one handler to track events for items in different apps.</li></ul>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">начало&nbsp;внимание</span></p>
<p class="p_Normal">Event filtering is available by default in the BRIX SaaS and On-Premises edition, starting from version 2025.1. You can use it in the On-Premises edition version 2024.11 by enabling the <code><b>enableEventBusDynamicFiltration</b></code> flag. Read more about it in the <a href="change-settings-enterprise.html#enable-feature-flag-enterpeise" class="topiclink">Modify BRIX Enterprise parameters</a> and <a href="change-elma365standard-parameters.html#enable-feature-flag-standard" class="topiclink">Modify BRIX Standard parameters</a> articles.</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">конец&nbsp;внимание</span></p>
<ul style="list-style-type:disc">
<li class="p_Normal"><span style="font-weight: bold;">Event</span>. Select an event that will trigger the handler. When dynamic event type is enabled, the field is not displayed, because the events to be tracked are defined in the script.</li></ul>
<ol style="list-style-type:upper-roman" start="5">
<li value="5" class="p_Normal">Click the <span style="font-weight: bold;">Save</span> button. </li></ol>
<ol style="list-style-type:upper-roman" start="6">
<li value="6" class="p_Normal"><a id="access-to-global-constants" class="hmanchor"></a>In the window that opens:</li></ol>
<ul style="list-style-type:disc">
<li class="p_Normal">For the <span style="font-weight: bold;">Run</span> <span style="font-weight: bold;">Script</span> type: Write a script on the <span style="font-weight: bold;">Scripts</span> tab. You can access variables from other workspaces and custom modules by configuring <a href="optional-dependencies.html" class="topiclink">optional dependencies</a>.</li></ul>
<p class="p_Normal" style="margin: 0 0 0 34px;">To create a dependency on the top panel, click <span style="font-weight: bold;">Settings</span> and add workspaces and modules to the list. They can then be accessed via the <a href="optional-dependencies.html#use-imports" class="topiclink">Imports</a> global constant. A module with optional dependencies can be exported without restrictions.</p>
<p class="p_Normal" style="margin: 0 0 0 34px;"><img alt="event_handler2" width="819" height="221" style="margin:0;width:819px;height:221px;border:none" src="event_handler2.png"/></p>
<ul style="list-style-type:disc">
<li class="p_Normal">For the <span style="font-weight: bold;">Run Process</span> type: Select the business process created within the module. Then, on the <span style="font-weight: bold;">Input Variables</span> tab, map variables from the process context to the event properties: object, name, author, and so on.</li></ul>
<p style="line-height: 1.20; margin: 7px 0 7px 34px;">A limited set of system fields is provided for events: identifier, name, description, event time, object name, author, etc. There are also individual properties for each event, referring to the selected domain and action type.</p>
<p style="line-height: 1.20; margin: 7px 0 7px 34px;">The configuration on the <span style="font-weight: bold;">Input Variables</span> tab allows you to define data sources for properties from the process context. It is done depending on the handler to be implemented and the final users need.</p>
<p class="p_Normal" style="line-height: 1.20; margin: 7px 0 7px 34px;"><img alt="event-handling-2" width="682" height="355" style="margin:0;width:682px;height:355px;border:none" src="event-handling-2.png"/></p>
<p style="line-height: 1.20; margin: 7px 0 16px 34px;"><span style="font-weight: bold;">Important</span>: The <span style="font-weight: bold;">Input Variables</span> tab displays properties that are present in the process context at the time the process is linked to the handler. If the process context has been changed, the new variables will not appear in the handler settings. You must recreate and configure the event handler by linking the same business process to it.</p>
<ul style="list-style-type:disc">
<li class="p_Normal">For <span style="font-weight: bold;">Send Message to Service</span> type: Specify the microservice.</li></ul>
<ol style="list-style-type:upper-roman" start="7">
<li value="7" class="p_Normal"><a id="dynamic-filtering-script" class="hmanchor"></a>If you have enabled dynamic event type, set a filter to select the events that the handler tracks. To do this, click <span style="font-weight: bold;">Calculated with a script</span> on the <span style="font-weight: bold;">Settings</span> tab.</li></ol>
<p class="p_Normal" style="margin: 0 0 0 34px;"><img alt="events_processing-5" width="643" height="261" style="margin:0;width:643px;height:261px;border:none" src="events_processing-5.png"/></p>
<p style="line-height: 1.20; margin: 7px 0 7px 34px;">The <span style="font-weight: bold;">Scripts</span> tab will open. In the <code><b>filter()</b></code><span style="font-size: 13px;"> </span>method, specify the event types to be tracked. The available options depend on the domain selected when creating the handler:</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-weight: bold;">All Events</span>. You can specify event types from different domains. The list is limited. When you create a filter, you will see tooltips with possible values.</li><li style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-weight: bold;">App Items</span>. Only events for app items are available.</li></ul>
<p style="line-height: 1.20; margin: 7px 0 7px 34px;">Read more about scripting and the peculiarities of dynamic filtering in <span style="color: #0000ff;"><a href="https://tssdk.brix365.com/en/latest/pages/quick-start/intro_dynamic-filtration.html" target="_blank" class="weblink">BRIX TS SDK</a></span>.</p>
<p style="line-height: 1.20; margin: 7px 0 7px 34px;">The generated filter will be applied after the event handler is published and the module is enabled. The handler will be triggered by system events that match the specified conditions.</p>
<ol style="list-style-type:upper-roman" start="7">
<li value="8" class="p_Normal">Publish the handler.</li></ol>
<p class="p_Normal">This way you can add several event handlers to a custom module. For example, when you change the item status in the <span style="font-weight: bold;">Orders</span> app, a business process will be launched. By using a <a href="360027203731.html" class="topiclink">script</a> or a <a href="360012495911.html" class="topiclink">gateway</a> you can activate different process branches depending on the status that the app item acquires.</p>
<p style="line-height: 1.20; margin: 7px 0 16px 0;">You can also learn about using handlers with domains associated with the <span style="font-weight: bold;">CRM</span> system solution in the following articles: <span style="color: #0000ff;"><a href="crm-events-processing.html" class="topiclink">Event handling in CRM tasks</a></span> and <span style="color: #0000ff;"><a href="duplicates-events-processing.html" class="topiclink">Event processing in duplicates</a></span>.</p>
<h2 class="p_Heading2"><a id="tracing" class="hmanchor"></a><span class="f_Heading2">Trace handler scripts</span></h2>
<p class="p_Normal">If tracing is enabled for a handler of the <span style="font-weight: bold;">Run Script</span> type in the <span style="font-weight: bold;">Administration &gt; Developer Tools</span> workspace, you can analyze the execution of its script. This allows you to evaluate the duration of individual requests, optimize the code, and identify the causes of errors.</p>
<p class="p_Normal">To view the traces list, open the <span style="font-weight: bold;">Event Handling</span> tab in the module settings. To view entries:</p>
<ul style="list-style-type:disc">
<li class="p_Normal">For all handlers in the module: click <span style="font-weight: bold;">View tracing</span> in the upper right corner of the page.</li><li class="p_Normal">For a specific handler: click on its name and select <span style="font-weight: bold;">Tracing</span> in the upper panel.</li></ul>
<p class="p_Normal">For more information about tracing configuration and information on the trace page, see the <a href="server-script-tracing.html" class="topiclink">Trace server scripts</a> article.</p>
<h2 class="p_Heading2"><span class="f_Heading2">Disable a handler</span></h2>
<p class="p_Normal">To disable a handler, go to the <span style="font-weight: bold;">Event Handling</span> tab and click on the three dots icon opposite the handler<span style="font-family: Inter;">s name.</span> Select <span style="font-weight: bold;">Cancel Publication</span>. Now the handler will not be triggered when the event occurs. </p>
<p class="p_Normal">You can also delete an event handler. To do this, go to the <span style="font-weight: bold;">Event Handling</span> tab, check the box next to one or more handler<span style="font-family: Inter;">s</span>, and click the <span style="font-weight: bold;">Delete</span> button in the upper right corner of the page.</p>
<p class="p_Normal"><img alt="event-handling-3" width="766" height="273" style="margin:0;width:766px;height:273px;border:none" src="event-handling-3.png"/></p>
<div class="bottom-nav">
<a id="prev-link" class="topic__navi_prev" href="extention-processes.html">
<span class="bottom-nav__arrow bottom-nav__arrow--prev"></span> <span
class="bottom-nav__link">extention-processes.html</span>
</a>
<a id="next-link" class="topic__navi_next" href="portable-services.html">
<span class="bottom-nav__link">portable-services.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>
</section>
</div>
<aside class="article__sidebar" style="display:none">
<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>
<nav id="toc2"></nav>
</div>
</aside>
</div>
</article>
</main>
<footer class="footer">
<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>
</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>
</div>
</div>
</footer>
<iframe name="hmnavigation" style="display:none!important"></iframe>
<script src="./jquery-ui.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>
<script src="./google-search.js"></script>
<script src="./main.js"></script>
</body>
</html>