Конструктор выражения предназначен для создания, редактирования и проверки выражения, используемого в параметре действия и в действии «Вычислить выражение» на схеме робота. Используя конструктор, вы можете формировать выражения из операторов, значений переменных, свойств элементов и результатов действий.
Чтобы открыть конструктор выражений, нажмите кнопку «Настроить выражение»:
![]()

Окно конструктора выражений включает следующие области:

Чтобы создать выражение, начните вводить значение в поле ввода. Выражение формируется из отдельных блоков ввода.
В блоке ввода можно использовать:
Учтите, что операции в выражении выполняются строго слева направо – в том порядке, в котором расположены блоки. Если вам важен конкретный порядок – используйте скобки.
Чтобы создать выражение:
для ввода переменной/свойства элемента/результата действия введите символ @ и выберите подходящий вариант из списка автодополнения. Подробнее читайте в разделе «Автодополнение».;
кликните по переменной/свойства элемента/результата на левой панели. Подробнее читайте в разделе «Левая панель».
По мере работы с несколькими блоками удобно перемещаться между ними с клавиатуры. Подробнее читайте в разделе «Навигация между блоками».
Автодополнение отображается при вводе значения в блок и изменяется по мере ввода текста.

Для каждого блока ввода доступно меню со следующими действиями:
![]()
Навигация между блоками осуществляется с помощью клавиатуры:
Верхняя панель содержит набор операторов. При наведении на оператор отображается подсказка с его названием, типом операнда и типом результата. При нажатии оператор вставляется в новый блок ввода в позиции курсора.

Вы можете использовать следующие операторы:
Учтите, логические операторы могут задаваться в любом доступном виде (например, && или AND). При вводе с клавиатуры они не заменяются на текстовое значение, как у названия кнопки.
Левая панель содержит вкладки:
Во вкладках Переменные и Результаты доступна фильтрация по типам:
По клику на элемент выполняется вставка ссылки в новый блок ввода.
После ввода значения в блок вы можете вызвать метод, введя точку. В конструкторе выражений доступно три метода:
![]()
Проверка выражения выполняется автоматически по мере ввода.
Если в выражении есть ошибка:
Учтите, что кнопка «Сохранить» заблокирована до тех пор, пока в выражении присутствует хотя бы одна ошибка.
Типичные причины ошибок:
Когда вы сформировали выражение, и оно не содержит ошибки, нажмите кнопку «Сохранить».
После сохранения:
Учтите, что вы не сможете сохранить выражение, если выражение, если в нем присутствуют ошибки. Подробнее об ошибках читайте в разделе «Проверка выражения и ошибки».

<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> |