Функция позволяет копировать выделенную часть схемы робота из одного проекта в другой проект. Вместе с действиями в целевой проект копируются связанные ресурсы. После вставки действия помещаются в отдельную группу, а параметры действий получают ссылки на ресурсы и результаты действий в новом проекте.
Чтобы скопировать часть схемы, откройте проект робота, из которого требуется перенести действия.
На схеме робота выделите одно или несколько действий и скопируйте их одним из способов:
Ctrl+C;Если среди скопированных действий есть действие «Выражение», вместе с ним копируются связанные действия и ресурсы, необходимые для корректной работы выражения.

Откройте проект робота, в который требуется вставить скопированную часть схемы. Если проекта ещё нет, создайте новый проект.
Чтобы выбрать место вставки, выделите действие, после которого нужно добавить скопированные действия. Если действие не выбрано, скопированная часть схемы будет вставлена в конец схемы.
Вставьте действия одним из способов:
Ctrl+V;Вставленные действия помещаются в группу действий с названием исходного проекта робота.
В целевой проект копируются ресурсы, связанные со скопированными действиями. Скопированные ресурсы помещаются в группу с названием проекта, из которого выполнялось копирование.
Если в целевом проекте уже есть ресурс с таким же названием, для нового ресурса используется название «<Название ресурса> - копия». Если такое название уже занято, используется название «<Название ресурса> - копия », где <n> это номер копии, начиная с 2.
После вставки действия получают ссылки на ресурсы, которые были скопированы в целевой проект.
Ссылки на результаты действий обновляются, если действия, на результаты которых есть ссылки, также были скопированы. Если действие не было скопировано, параметры со ссылками на его результаты очищаются.
После вставки отображается уведомление о результате операции.
Если действия и ресурсы успешно скопированы, отображается уведомление:
| Действия и ресурсы были скопированы в проект «<Название проекта, в который производилось копирование>». |
Если действия и ресурсы не были скопированы, отображается уведомление:
| Действия и ресурсы не были скопированы в проект «<Название проекта, в который производилось копирование>». Подробная информация содержится во вкладке «Ошибки» на странице редактирования проекта. |
Если во время копирования или вставки возникают ошибки, они отображаются во вкладке «Ошибки» в проекте, в который выполнялась вставка.
Для пункта «Копировать» в контекстном меню действия отображается подсказка:
| При вставке действий в другой проект связанные ресурсы также скопируются в него |
<script>
AJS.toInit(function() {
var toc = document.querySelector('.toc-float');
var aside = toc.closest('.cell.aside');
var mainHeader = document.getElementById('main-header');
var auiHeader = document.querySelector('nav.aui-header');
var marginTop = 10; // дополнительный отступ сверху
// Вставка заголовка, если ещё не вставлен
function insertHeader() {
if (!toc.querySelector('.toc-header')) {
var header = document.createElement('div');
header.textContent = 'На этой странице:';
header.className = 'toc-header';
header.style.fontWeight = 'bold';
header.style.marginBottom = '10px';
toc.insertBefore(header, toc.firstChild);
}
}
// Применение inline-стилей
function applyStyles() {
insertHeader();
// Получаем ширину родителя
var asideRect = aside.getBoundingClientRect();
// Вычисляем вертикальный отступ
var offset = 0;
if (mainHeader) {
var mhRect = mainHeader.getBoundingClientRect();
if (mhRect.bottom > 0 && mhRect.top < window.innerHeight) {
offset = mhRect.bottom;
}
}
if (offset === 0 && auiHeader) {
var ahRect = auiHeader.getBoundingClientRect();
offset = ahRect.bottom;
}
var topOffset = Math.max(offset + marginTop, asideRect.top);
Object.assign(toc.style, {
position: 'fixed',
top: topOffset + 'px',
left: asideRect.left + 'px',
width: asideRect.width + 'px',
maxHeight: (window.innerHeight - topOffset - 20) + 'px',
overflowY: 'auto',
boxSizing: 'border-box',
border: '1px solid #ddd',
borderRadius: '4px',
padding: '15px',
zIndex: 'auto'
});
}
// Инициалный вызов
applyStyles();
// Обновление при скролле, ресайзе окна
window.addEventListener('scroll', applyStyles);
window.addEventListener('resize', applyStyles);
// Наблюдатель за изменением размеров родителя
if (window.ResizeObserver) {
new ResizeObserver(applyStyles).observe(aside);
}
});
</script> |