This commit is contained in:
@ -1,580 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
|
||||
<head>
|
||||
<title>Экспорт и импорт структур в ELMA365</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="В этой статье рассматриваются особенности экспорта и импорта структур в ELMA365." />
|
||||
<meta name="picture" content="" />
|
||||
<meta property="og:type" content="website" />
|
||||
<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" />
|
||||
<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 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://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(83179930,'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://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>
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
|
||||
|
||||
|
||||
<main class="main container">
|
||||
|
||||
<aside class="sidebar" id="sidebar">
|
||||
<div class="sidebar__header">
|
||||
<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>
|
||||
<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>Архитектура и системные требования / Экспорт и импорт структур в ELMA365</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="topic__title"><h1 class="p_Heading1"><span class="f_Heading1">Экспорт и импорт структур в ELMA365</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">В этой статье рассматриваются особенности экспорта и импорта структур в ELMA365.</p>
|
||||
<h2 class="p_Heading2"><span class="f_Heading2">Изоляция</span></h2>
|
||||
<p class="p_Normal">Одна из ключевых концепций, обеспечивающих возможность переноса структур между разными компаниями — это изоляция. Она позволяет быть уверенным в том, что структура перенесётся полностью, корректно и со всеми необходимыми ссылками. Например, в результате экспорта раздела мы получим независимый и функциональный раздел, готовый к импорту в другие компании.</p>
|
||||
<p class="p_Normal">В интерфейсе системы изоляция проявляет себя в первую очередь в виде ошибок экспорта. Экспорт происходит на тех уровнях, на которых мы его запрашиваем, при этом не упускаются нужные компоненты и не загружаются лишние. Ошибки указывают на то, что мы пытаемся выгрузить что-то нарушающее изоляцию.</p>
|
||||
<p class="p_Normal">Изоляция применяется и к системным разделам, например <span style="font-weight: bold;">CRM</span> и <span style="font-weight: bold;">Системные справочники</span>. На них можно ссылаться, не боясь ошибок экспорта, поскольку в процесс заложено, что в другой компании эти разделы тоже присутствуют.</p>
|
||||
<p class="p_Normal">Обратите внимание на особенности и ограничения <a href="system-workspaces.html#system-workspace-export" class="topiclink">экспорта системных разделов</a>, а также использования <a href="global-constants.html" class="topiclink">глобальных констант в скриптах</a>.</p>
|
||||
<p class="p_Normal">Прежде чем мы перейдём к задачам, которые решает экспорт/импорт, давайте рассмотрим, что можно экспортировать, импортировать и обновлять. </p>
|
||||
<h2 class="p_Heading2"><span class="f_Heading2">Типы пакетов</span></h2>
|
||||
<p class="p_Normal" style="line-height: 1.57;"><span style="font-size: 15px;">В ELMA365 существует несколько типов выгружаемых и устанавливаемых пакетов. Каждый тип соответствует уровню изоляции:</span></p>
|
||||
<ol style="list-style-type:decimal">
|
||||
<li value="1" style="line-height: 1.57; margin-top: 0; margin-right: 0; margin-bottom: 0;"><span style="font-size: 15px;">Приложение (</span><code><b>namespace.app</b></code><span style="font-size: 15px;">). Атомарный тип пакета. Содержит только одно приложение и всё, что с ним связано.</span></li><li value="2" style="line-height: 1.57; margin-top: 0; margin-right: 0; margin-bottom: 0;"><span style="font-size: 15px;">Раздел (</span><code><b>namespace</b></code><span style="font-size: 15px;">). Набор приложений и процессов. Раздел, как правило, является логической единицей, решающей ряд связанных задач.</span></li><li value="3" style="line-height: 1.57; margin-top: 0; margin-right: 0; margin-bottom: 0;"><span style="font-size: 15px;">Модуль (</span><code><b>namespace</b></code><span style="font-size: 15px;">). Набор виджетов, пользовательских блоков и методов API. В модулях создаются переиспользуемые сущности, которые можно применять в разных приложениях, интерфейсах, процессах. Другой ключевой сценарий использования модулей </span><span style="font-size: 15px; color: #70757a; background-color: #ffffff;">—</span><span style="font-size: 15px;"> это создание интеграций и подключение внешних систем и сервисов.</span></li><li value="4" style="line-height: 1.57; margin-top: 0; margin-right: 0; margin-bottom: 0;"><span style="font-size: 15px;">Решение (</span><code><b>solution</b></code><span style="font-size: 15px;">). Тип пакета для единовременной выгрузки одного или нескольких разделов и модулей.</span></li><li value="5" style="line-height: 1.57; margin-top: 0; margin-right: 0; margin-bottom: 0;"><span style="font-size: 15px;">Конфигурация (</span><code><b>global</b></code><span style="font-size: 15px;">). Все разделы, модули, оргструктура и другие сущности на уровне компании.</span></li></ol>
|
||||
<h2 class="p_Heading2"><span class="f_Heading2">Экспортируемые и импортируемые структуры</span></h2>
|
||||
<p class="p_Normal">При экспорте, импорте и обновлении любого пакета последовательно проверяются все структуры. Тем не менее, экспорт (и как следствие импорт) всегда происходит на соответствующем уровне изоляции. Например, если вы экспортируете решение, то выгружаются шаблоны документов на уровне приложений и разделов в составе решения. </p>
|
||||
<p class="p_Normal">Рассмотрим состав структур при экспорте/импорте:</p>
|
||||
<ul style="list-style-type:disc">
|
||||
<li class="p_Normal"><span style="font-weight: bold;">Шаблоны</span> — шаблоны документов, используемые в процессах для генерации файлов, а также шаблоны листов ознакомления и согласования в составе выгружаемого пакета;</li><li class="p_Normal"><span style="font-weight: bold;">Виджеты</span> — виджеты и страницы, созданные в интерфейсах приложений, разделов, компании, а также формы в составе выгружаемого пакета;</li><li class="p_Normal"><span style="font-weight: bold;">Группы</span> — группы и роли приложения/раздела/компании в составе выгружаемого пакета;</li><li class="p_Normal"><span style="font-weight: bold;">Меню</span> — страницы в составе выгружаемого пакета. </li></ul>
|
||||
<p class="p_Normal" style="margin: 0 0 0 34px;"><span style="font-weight: bold;">Важно</span>: под страницами в данном случае подразумеваются не виджеты типа <span style="font-weight: bold;">Страница</span>. Речь идёт о страницах, из которых состоит меню (главное или раздела). Каждое приложение и каждый раздел также имеет свою страницу. Поэтому на данном шаге экспорта/импорта загружается вся структура раздела/решения. Соответственно, если, например, прервать импорт после этого шага (или он прервётся из-за ошибки), раздел будет отображаться в системе, но страницы не будут загружаться, так как не импортированы приложения и виджеты;</p>
|
||||
<ul style="list-style-type:disc">
|
||||
<li class="p_Normal"><span style="font-weight: bold;">Процессы</span> — бизнес-процессы и пользовательские блоки из модулей в составе выгружаемого пакета;</li><li class="p_Normal"><span style="font-weight: bold;">Оргструктура</span> — экспортируется/импортируется только вместе с конфигурацией;</li><li class="p_Normal"><span style="font-weight: bold;">Нумераторы</span> — нумераторы разделов и приложений в составе выгружаемого пакета. Нумераторы приложений и разделов только импортируются, их нельзя обновить, если они уже настроены в компании;</li><li class="p_Normal"><span style="font-weight: bold;">Приложения</span> — описание приложений, т. е. поля, настройки приложения, например условия отображения, настройки кнопок приложения, а также ссылки на бизнес-процессы, настройки канбан-доски, плиток, таблицы и прочее в составе выгружаемого пакета;</li><li class="p_Normal"><span style="font-weight: bold;">Настройка прав</span> — настройки прав доступа каждого приложения в составе выгружаемого пакета;</li><li class="p_Normal"><span style="font-weight: bold;">Настройки</span> (<span style="font-weight: bold;">Дополнительные настройки</span> при импорте) — список дополнительных параметров и настройки модулей в составе выгружаемого пакета. На момент написания статьи выгрузка значений параметров не предусмотрена;</li><li class="p_Normal"><span style="font-weight: bold;">Расширения</span> (<span style="font-weight: bold;">Модули</span>) — описание модулей и их состава. </li></ul>
|
||||
<p class="p_Normal" style="margin: 0 0 0 34px;"><span style="font-weight: bold;">Важно</span>: каждая составляющая модуля (виджеты, пользовательские блоки, процессы) экспортируется и импортируется соответствующим сервисом на соответствующем шаге. Например, пока при импорте шаг <span style="font-weight: bold;">Процессы</span> не будет завершён, в модуле не появятся пользовательские блоки и процессы;</p>
|
||||
<ul style="list-style-type:disc">
|
||||
<li class="p_Normal"><span style="font-weight: bold;">Решения</span> — системная информация о версии сервиса <code><b>exchange</b></code> (необходим для обратной совместимости со старыми решениями) и о списке решений в составе пакета. Основная функция — совместимость и история версий;</li><li class="p_Normal"><span style="font-weight: bold;">События</span> (<span style="font-weight: bold;">Системная шина</span> при импорте) — обработчики событий, которые создаются в модулях, выгружаются в составе пакета;</li><li class="p_Normal"><span style="font-weight: bold;">Переносимые сервисы</span> — настройки подключения к переносимым сервисам модуля. Выгружается только настроечная часть. Образы переносимых сервисов не участвуют в переносе;</li><li class="p_Normal"><span style="font-weight: bold;">Локализация</span> — файлы с переводами, загруженные в экспортируемый раздел в составе выгружаемого пакета;</li><li class="p_Normal"><span style="font-weight: bold;">Токены OAuth2/OIDC</span> — шаблоны и уровни доступа к элементам системы. Выданные разрешения не переносятся, т. к. являются частью системы безопасности платформы;</li><li class="p_Normal"><span style="font-weight: bold;">Портал</span> — страницы внешнего портала, а также его настройки брендирования. Портал привязан к разделу и экспортируется вместе с ним в составе выгружаемого пакета;</li><li class="p_Normal"><span style="font-weight: bold;">Отчеты</span> — формы отчётов, созданные на основе приложений и бизнес-процессов (источников отчёта), включая данные по их настройкам, таким как связь между источниками, колонки отчёта;</li><li class="p_Normal"><span style="font-weight: bold;">Контракты</span> — описание контрактов: список полей, настройки источников и т. д.</li></ul>
|
||||
<p class="p_Normal" style="margin: 0 0 0 34px;">При экспорте раздела или решения с контрактом, источником которого являются приложения за пределами состава экспорта, пользователь получит предупреждение о выгрузке без приложения-источника.</p>
|
||||
<p class="p_Normal" style="margin: 0 0 0 34px;">Импорт такого раздела или решения в случае отсутствия приложений-источников пройдёт без ошибок, но связи контракта с источниками не будет;</p>
|
||||
<ul style="list-style-type:disc">
|
||||
<li class="p_Normal"><span style="font-weight: bold;">CRM</span> — настройки стадий прогрева, истории активностей и задач CRM. Выгружаются только при экспорте раздела <span style="font-weight: bold;">CRM</span> или конфигурации;</li><li class="p_Normal"><span style="font-weight: bold;">Документооборот</span> — настройки номенклатуры (места регистрации, дела, документопотоки), которые фактически используются в приложениях раздела, решения или конфигурации.</li></ul>
|
||||
<p class="p_Normal" style="margin: 0 0 0 34px;">В экспорте/импорте конфигурации также участвуют настройки листов согласования и ознакомления;</p>
|
||||
<ul style="list-style-type:disc">
|
||||
<li class="p_Normal"><span style="font-weight: bold;">Проекты</span> — описание типов проектов, создаваемых в разделе <span style="font-weight: bold;">Администрирование > Типы проектов</span>. Выгружается при экспорте конфигурации, раздела <span style="font-weight: bold;">Проекты</span> и решений, содержащих в своём составе раздел <span style="font-weight: bold;">Проекты</span>;</li></ul>
|
||||
<p class="p_Normal" style="text-indent: -1px; margin: 0 0 0 34px;"><span style="font-weight: bold;">Важно</span>: шаблоны проектов (элементы приложения), включённые автоматически при создании типа проекта, при экспорте/импорте структур не переносятся;</p>
|
||||
<ul style="list-style-type:disc">
|
||||
<li class="p_Normal"><span style="font-weight: bold;">Веб-формы</span> — веб-формы приложений в составе выгружаемого пакета.</li></ul>
|
||||
<p class="p_Normal">Почему всегда проверяются эти компоненты, даже если в выгружаемом разделе, например, нет оргструктуры? Потому что в экспорте/импорте используется универсальный механизм, но каждый из сервисов индивидуально определяет, нужно ли выгружать определённый тип пакета или нет.</p>
|
||||
<p class="p_Normal">Таким образом, результатом экспорта в ELMA365 всегда является файл, который содержит в себе описание настроек того уровня, который пользователь посчитал нужным выгрузить. Соответственно, при импорте загружается ровно то, что было экспортировано.</p>
|
||||
<h3 class="p_Heading3"><span class="f_Heading3">Состояния импортированного решения</span></h3>
|
||||
<p class="p_Normal">Импортированное решение имеет несколько состояний:</p>
|
||||
<p class="p_Normal">1. <span style="font-weight: bold;">Заблокировано</span>.</p>
|
||||
<p class="p_Normal">По умолчанию решение заблокировано после импорта. Блокировка подразумевает недоступность определённых частей решения (процессов, виджетов, приложений и т. д.) для работы через интерфейс. </p>
|
||||
<p class="p_Normal">Блокировка необходима, чтобы исключить изменение обновляемых частей решения, что впоследствии привело бы к конфликтам при обновлении.</p>
|
||||
<p class="p_Normal">Тем не менее, некоторые настройки, например настройки прав доступа, открыты для редактирования даже в заблокированном решении и в то же время обновляемы. Для таких настроек предусмотрен отдельный этап обновления решения, где пользователь может выбрать, какие права доступа обновить.</p>
|
||||
<p class="p_Normal">2. <span style="font-weight: bold;">Платное</span>.</p>
|
||||
<p class="p_Normal">Решение может быть лицензируемым. Лицензируемое решение необходимо активировать для работы. Если решение не активировано, пользователям будут недоступны разделы решения, а модули будут выключены.</p>
|
||||
<p class="p_Normal">Файлы платных решений шифруются и не могут быть распакованы, в том числе через <a href="lowcode-devops-pm.html" class="topiclink">утилиту elma365pm</a>.</p>
|
||||
<p class="p_Normal">В зависимости от состояния решения (заблокировано/разблокировано, платное/бесплатное) доступ к экспорту и обновлению разделов, а также управлению модулями различается. Ниже приведены схемы доступа.</p>
|
||||
<p class="p_Normal"><span style="font-weight: bold;">Модули</span></p>
|
||||
<div style="text-align: left; text-indent: 0; padding: 0 0 0 0; margin: 0 0 0 0;"><table style="border:none; border-spacing:0;">
|
||||
<tr>
|
||||
<td style="vertical-align:middle; width:84px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Платное</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:154px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Заблокировано</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:171px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Состояние лицензии</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:287px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Разблокировано ключом активации</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:120px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Управление</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:187px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Экспорт (отдельно)</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:197px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Обновление (отдельно)</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align:middle; width:84px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Нет</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:154px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Нет</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:171px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:287px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:120px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">+</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:187px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">+</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:197px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">+</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align:middle; width:84px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Нет</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:154px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Да</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:171px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:287px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:120px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:187px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">+</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:197px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align:middle; width:84px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Да</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:154px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Нет</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:171px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Активно</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:287px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Нет</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:120px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:187px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:197px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align:middle; width:84px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Да</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:154px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Да</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:171px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Активно</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:287px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Нет</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:120px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:187px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:197px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align:middle; width:84px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Да</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:154px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Нет</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:171px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Заморожено</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:287px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Нет</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:120px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:187px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:197px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align:middle; width:84px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Да</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:154px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Да</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:171px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Заморожено</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:287px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Нет</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:120px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:187px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:197px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align:middle; width:84px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Да</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:154px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Нет</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:171px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Активно</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:287px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Да</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:120px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">+</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:187px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:197px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align:middle; width:84px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Да</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:154px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Да</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:171px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Активно</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:287px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Да</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:120px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">+</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:187px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:197px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align:middle; width:84px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Да</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:154px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Нет</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:171px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Заморожено</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:287px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Да</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:120px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:187px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:197px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align:middle; width:84px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Да</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:154px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Да</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:171px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Заморожено</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:287px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Да</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:120px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:187px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:197px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<p class="p_Normal"><span style="font-weight: bold;">Разделы</span></p>
|
||||
<div style="text-align: left; text-indent: 0; padding: 0 0 0 0; margin: 0 0 0 0;"><table style="border:none; border-spacing:0;">
|
||||
<tr>
|
||||
<td style="vertical-align:middle; width:82px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Платное</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:155px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Заблокировано</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:172px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Состояние лицензии</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:286px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Экспорт (отдельно)</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:310px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Обновление (отдельно)</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align:middle; width:82px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Нет</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:155px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Нет</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:172px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:286px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">+</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:310px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">+</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align:middle; width:82px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Нет</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:155px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Да</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:172px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:286px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:310px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align:middle; width:82px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Да</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:155px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Нет</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:172px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Активно</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:286px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:310px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align:middle; width:82px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Да</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:155px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Да</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:172px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Активно</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:286px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:310px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align:middle; width:82px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Да</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:155px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Нет</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:172px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Заморожено</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:286px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:310px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align:middle; width:82px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Да</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:155px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Да</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:172px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">Заморожено</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:286px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
<td style="vertical-align:middle; width:310px; padding:0; border:none"><p class="p_Normal" style="text-align: center;">-</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<h3 class="p_Heading3"><span class="f_Heading3">Зависимости решений</span></h3>
|
||||
<p class="p_Normal">Решение может иметь зависимости от другого решения. Зависимости используются для того, чтобы решения можно было экспортировать и импортировать отдельно друг от друга, но при этом иметь возможность в одном решении ссылаться на структуры другого решения.</p>
|
||||
<p class="p_Normal">Зависимости добавляются в процессе экспорта на этапе проверки. Для всех ссылок на другое решение можно добавить зависимость соответствующей кнопкой.</p>
|
||||
<p class="p_Normal">При импорте решения, в котором есть зависимости, будет произведена проверка наличия в компании решений, от которых зависит импортируемое. Если требуемые решения отсутствуют, импорт будет невозможен.</p>
|
||||
<h2 class="p_Heading2"><span class="f_Heading2">Кейсы</span></h2>
|
||||
<p class="p_Normal">Теперь рассмотрим несколько кейсов настройки ELMA365 и переноса результатов работы между компаниями. Для разных целей экспорта/импорта лучше подходят разные типы пакетов. </p>
|
||||
<h3 class="p_Heading3"><span class="f_Heading3">Кейс 1. Счёт</span></h3>
|
||||
<p class="p_Normal" style="line-height: 1.57; margin: 5px 0 0 0;"><span style="font-size: 15px;">Нужно автоматизировать работу со счетами. Из требований мы знаем, что нужно согласовывать и оплачивать входящие счета. Есть различные назначения платежей, но пользователь не заполняет сам, а выбирает из списка. Счета бывают в разных валютах: рубли, доллары, евро. Счета выставляются разным юрлицам компании и оплачиваются соответственно.</span></p>
|
||||
<p class="p_Normal" style="line-height: 1.57;"><span style="font-size: 15px;">Исходя из требований, минимальный набор приложений для решения задачи может быть таким:</span></p>
|
||||
<ol style="list-style-type:decimal">
|
||||
<li value="1" style="line-height: 1.57; margin-top: 0; margin-right: 0; margin-bottom: 0;"><span style="font-size: 15px; font-weight: bold;">Счета</span><span style="font-size: 15px;">.</span></li><li value="2" style="line-height: 1.57; margin-top: 0; margin-right: 0; margin-bottom: 0;"><span style="font-size: 15px; font-weight: bold;">Контрагенты</span><span style="font-size: 15px;">.</span></li><li value="3" style="line-height: 1.57; margin-top: 0; margin-right: 0; margin-bottom: 0;"><span style="font-size: 15px; font-weight: bold;">Назначения платежей</span><span style="font-size: 15px;">.</span></li><li value="4" style="line-height: 1.57; margin-top: 0; margin-right: 0; margin-bottom: 0;"><span style="font-size: 15px; font-weight: bold;">Мои юридические лица</span><span style="font-size: 15px;">.</span></li></ol>
|
||||
<p class="p_Normal" style="line-height: 1.57;"><span style="font-size: 15px;">Из указанных приложений два есть в системе всегда: </span><span style="font-size: 15px; font-weight: bold;">CRM > Компании</span><span style="font-size: 15px;">, </span><span style="font-size: 15px; font-weight: bold;">Системные справочники > Мои юридические лица</span><span style="font-size: 15px;">. Для начала можно использовать эти приложения, потому что на них можно ссылаться без нарушения изоляции. </span></p>
|
||||
<p class="p_Normal" style="line-height: 1.57;"><span style="font-size: 15px; font-weight: bold;">Счета</span><span style="font-size: 15px;"> и </span><span style="font-size: 15px; font-weight: bold;">Назначения платежей</span><span style="font-size: 15px;"> мы можем поместить в один раздел. Таким образом, в этом кейсе лучше всего работать с разделом и, как следствие, с экспортом, импортом и обновлением именно раздела.</span></p>
|
||||
<p class="p_Normal" style="line-height: 1.57;"><span style="font-size: 15px;">Всегда стоит учитывать будущие доработки. Например, могут добавиться новые служебные приложения, или понадобится обращаться в скриптах к приложениям другого раздела. Давайте подробнее разберем этот сценарий.</span></p>
|
||||
<p class="p_Normal" style="line-height: 1.57;"><span style="font-size: 15px;">Допустим, находясь в разделе со счетами, нам нужно найти контрагентов или юридические лица.</span></p>
|
||||
<ol style="list-style-type:decimal">
|
||||
<li value="1" style="line-height: 1.57; margin-top: 0; margin-right: 0; margin-bottom: 0;"><span style="font-size: 15px;">Для этого будем использовать метод </span><code><b>search()</b></code><span style="font-size: 15px;">.</span></li><li value="2" style="line-height: 1.57; margin-top: 0; margin-right: 0; margin-bottom: 0;"><span style="font-size: 15px;">Метод </span><code><b>search()</b></code><span style="font-size: 15px; font-family: Courier,monospace;"> </span><span style="font-size: 15px;">доступен из описания приложения.</span></li><li value="3" style="line-height: 1.57; margin-top: 0; margin-right: 0; margin-bottom: 0;"><span style="font-size: 15px;">Описание мы можем получить одним из двух способов:</span></li></ol>
|
||||
<ul style="list-style-type:disc">
|
||||
<li style="line-height: 1.57; margin-top: 0; margin-right: 0; margin-bottom: 0;"><span style="font-size: 15px;">включив константу </span><code><b>Global</b></code><span style="font-size: 15px;"> и написав команду </span><code><b>Global.ns._clients.app._companies.search()</b></code><span style="font-size: 15px;">.</span></li><li style="line-height: 1.57; margin-top: 0; margin-right: 0; margin-bottom: 0;"><span style="font-size: 15px;">добавив в контекст страницы/приложения/процесса переменную с типом </span><span style="font-size: 15px; font-weight: bold;">Приложение > Компании</span><span style="font-size: 15px;"> и написав команду </span><code><b>Context.fields._companies.app.search()</b></code><span style="font-size: 15px;">.</span></li></ul>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 0;"><span style="font-size: 15px; color: #394149;">Первый способ нарушит изоляцию, хотя мы ссылаемся на системное приложение, потому что мы включили константу</span><span style="font-size: 15px;"> </span><code><b>Global</b></code><span style="font-size: 15px;"> в скриптах, </span><span style="font-size: 15px; color: #394149;">а с ней невозможно экспортировать раздел. Второй способ не будет препятствовать экспорту, потому что константу </span><span style="font-size: 15px;"> </span><code><b>Global</b></code><span style="font-size: 15px;"> в этом случае включать не понадобится.</span></p>
|
||||
<p class="p_Normal" style="line-height: 1.57;"><span style="font-size: 15px;">Важно отметить, что, если мы добавляем в контекст приложение, которое не является системным и не входит в раздел, то изоляция будет нарушена. Чтобы исправить ситуацию, необходимо включить то приложение, на которое мы ссылаемся, в состав экспортируемого пакета, то есть в этом кейсе придётся объединить два раздела в решение.</span></p>
|
||||
<h3 class="p_Heading3"><span class="f_Heading3">Кейс 2. Счета с особенными требованиями</span></h3>
|
||||
<p class="p_Normal" style="line-height: 1.57; margin: 5px 0 0 0;"><span style="font-size: 15px;">В целом задача стоит такая же </span><span style="font-size: 15px; color: #70757a; background-color: #ffffff;">—</span><span style="font-size: 15px;"> автоматизация работы со счетами. Но в этом кейсе нам также важно вести реестр платежей, чтобы оплачивать одновременно несколько счетов. Кроме того, при оформлении заявки на оплату необходимо указывать не только контрагента и организацию, но и тип платежа, НДС, валюту, департамент, учётный период и прочее. С валютами и НДС тоже есть особенность </span><span style="font-size: 15px; color: #70757a; background-color: #ffffff;">— </span><span style="font-size: 15px;">пользователь работает с контрагентами в разных странах, поэтому значения могут быть разными и список значений может меняться.</span></p>
|
||||
<p class="p_Normal" style="line-height: 1.57;"><span style="font-size: 15px;">Не углубляясь в детали архитектуры, очевидно, что будет много приложений, которые логически делятся на два раздела: </span><span style="font-size: 15px; font-weight: bold;">Платежи</span><span style="font-size: 15px;"> и </span><span style="font-size: 15px; font-weight: bold;">Справочники</span><span style="font-size: 15px;">. </span></p>
|
||||
<p class="p_Normal" style="line-height: 1.57;"><span style="font-size: 15px;">Экспортировать наработки с тестовой компании и импортировать на целевую мы будем решением, т.е. двумя разделами в одном пакете. </span></p>
|
||||
<p class="p_Normal" style="line-height: 1.57;"><span style="font-size: 15px;">Решение в этом случае будет особенно гибким, ведь не исключено, что в будущем понадобится интеграция с учётной системой, нужно будет создать свой модуль, который можно будет без проблем добавить в состав решения.</span></p>
|
||||
<p class="p_Normal" style="line-height: 1.57;"><span style="font-size: 15px;">Но и в этом кейсе есть нюансы. В приложениях нашего решения мы будем настраивать доступ по группам пользователей, не ссылаясь на оргструктуру, чтобы не нарушать изоляцию. Одним и тем же группам пользователей мы можем давать/запрещать доступ к приложениям в разных разделах. </span></p>
|
||||
<p class="p_Normal">Вопрос: где правильнее создать эти группы. Ответ очень прост: не имеет значения, главное — внутри решения (помним про принципы изоляции). </p>
|
||||
<p class="p_Normal">Дублировать группы тоже не нужно: раз оба раздела в одном решении, в системе не возникнут ошибки при экспорте. Поэтому создаём группы в том разделе, где это кажется более логичным, и используем их по всему решению.</p>
|
||||
<p class="p_Normal">Группы могут быть не только в настройках доступа и зонах ответственности. Также они используются, например, в оповещениях в бизнес-процессах, про которые важно не забывать, и назначать группы во всех процессах на нужном уровне изоляции.</p>
|
||||
<h3 class="p_Heading3"><span class="f_Heading3">Кейс 3. Большой проект</span></h3>
|
||||
<p class="p_Normal">Часто в компании нужно автоматизировать несколько участков. Для этого создаётся сложная конфигурация.</p>
|
||||
<p class="p_Normal">Экспортировать и импортировать можно конфигурацию целиком. Но стоит ли? Давайте разберёмся.</p>
|
||||
<p class="p_Normal">Конфигурация на проекте, как правило, делится на контуры, а каждый контур может реализовываться разделом или решением.</p>
|
||||
<p class="p_Normal">В зависимости от методологии ведения проекта результат может сдаваться по контурам или целиком. Работать над каждым разделом или решением может отдельный человек или команда, или даже один человек может делать конфигурацию целиком.</p>
|
||||
<p class="p_Normal">Почему бы тогда при такой вариативности не пользоваться просто экспортом/импортом конфигурации? </p>
|
||||
<p class="p_Normal">Можно, но рекомендуется иметь изолированные разделы, решения и модули. Ведь после реализации могут быть доработки и улучшения. Гораздо удобнее их устанавливать в компанию сразу по мере готовности, не затрагивая то, что находится в работе. Например, доработать определённый раздел, экспортировать и обновить его в компании.</p>
|
||||
<p class="p_Normal">Как показывает практика, изоляцию чаще всего будет нарушать использование оргструктуры, глобальных групп, константа <code><b>Global</b></code> в скриптах. Поэтому можно руководствоваться кейсами 1 и 2, чтобы избежать ошибок при экспорте/импорте.</p>
|
||||
<p class="p_Normal">Экспорт/импорт — в большей степени инструмент автоматизации цикла разработки и распространения решений. А для того чтобы использовать этот инструмент по максимуму, всегда важно помнить об изоляции.</p>
|
||||
<h2 class="p_Heading2"><span class="f_Heading2">Обновление</span></h2>
|
||||
<p class="p_Normal">Обновление поддерживается для разделов, решений и модулей. При этом модули и решения всегда только обновляются, т. е. нельзя установить два экземпляра одного и того же модуля или решения.</p>
|
||||
<p class="p_Normal">При обновлении происходит сравнение историй каждого сервиса, для которого она ведётся. История изменений ведётся для приложений, страниц, процессов, шаблонов, виджетов, модулей, настроек прав доступа. Для каждого компонента создаётся запись с ID и датой версии при изменении.</p>
|
||||
<p class="p_Normal">Во время обновления может возникнуть одна из двух ситуаций:</p>
|
||||
<ol style="list-style-type:decimal">
|
||||
<li value="1" class="p_Normal">История в обновлённом пакете новее, чем история в обновляемом пакете, то есть с момента импорта в компанию никаких изменений не вносилось. В этом случае изменения будут установлены без конфликтов.</li><li value="2" class="p_Normal">История в обновлённом пакете и история в обновляемом пакете различаются. На практике это означает, что в исходной компании и на целевой разработка велась параллельно, и возникли конфликты. В этом случае отобразится список компонентов, в которых расхождения в истории были обнаружены, и будет предложено либо отменить обновление, либо заменить обновляемый пакет. Слияния изменений при этом не происходит, полностью устанавливается конфигурация пакета, используемого для обновления.</li></ol>
|
||||
<p class="p_Normal">По своей механике обновление не отличается от импорта, но нужно обратить внимание на следующие моменты:</p>
|
||||
<ul style="list-style-type:disc">
|
||||
<li class="p_Normal">при обновлении добавляется новое или изменяется конфликтующее. Ничего не удаляется. Например, если мы удалили поле в исходной компании, а на целевой оно всё еще есть, то при обновлении оно сохранится на целевой.</li><li class="p_Normal">лучше не вносить изменения в целевой компании. Чёткое разделение тестовой компании и компании для конечного пользователя значительно упростит загрузку изменений и поддержку решения в долгосрочной перспективе.</li></ul>
|
||||
<h3 class="p_Heading3"><span class="f_Heading3">Мягкое обновление решений</span></h3>
|
||||
<p class="p_Normal">Для решений существует опция <a href="update_solution.html#soft-update" class="topiclink">мягкого обновления</a>, т. е. обновления только тех компонентов, для которых не обнаружено конфликтов или ссылок на конфликтующие компоненты.</p>
|
||||
<p class="p_Normal">Вместе с конфликтующими компонентами система рекурсивно вычисляет зависимости этих компонентов от других. Это необходимо, чтобы не произошло ситуации, когда при мягком обновлении компонент с конфликтом не обновился, а другие компоненты, ссылающиеся на него, обновились. Такая ситуация может привести к неконсистентности конфигурации.</p>
|
||||
<p class="p_Normal">Если решение частично заблокировано, то ссылки на компоненты из заблокированного раздела игнорируются, и компоненты в заблокированном разделе обновляются при мягком обновлении.</p>
|
||||
<h2 class="p_Heading2"><span class="f_Heading2">Удаление</span></h2>
|
||||
<p class="p_Normal">Удаление — серьёзное действие. Жёстко в ELMA365 практически ничего не удаляется, а лишь помечается удалённым. Тем не менее, при экспорте/импорте можно избавиться от ненужных контекстных переменных, они не выгружаются, если удалены жёстко.</p>
|
||||
<p class="p_Normal">Удалённые разделы, приложения и страницы переносятся вместе со всем остальным.</p>
|
||||
|
||||
<div class="bottom-nav">
|
||||
|
||||
<a id="prev-link" class="topic__navi_prev" href="leveraging-elma365-enterprise.html">
|
||||
<span class="bottom-nav__arrow bottom-nav__arrow--prev"></span> <span
|
||||
class="bottom-nav__link">leveraging-elma365-enterprise.html</span>
|
||||
</a>
|
||||
|
||||
|
||||
<a id="next-link" class="topic__navi_next" href="external-extensions-elma365.html">
|
||||
<span class="bottom-nav__link">external-extensions-elma365.html</span> <span
|
||||
class="bottom-nav__arrow bottom-nav__arrow--next"></span>
|
||||
</a>
|
||||
|
||||
</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>
|
||||
<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">В этой статье</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://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="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">© 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">© 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.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>
|
||||
<script src="./google-search.js"></script>
|
||||
<script src="./main.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
Reference in New Issue
Block a user