Выполнение скрипта в консоли
Описание действия
Администратор системы может выполнить произвольный скрипт через веб-интерфейс системы в консоль. Консоль используется для разового запуска произвольных скриптов. Часто консоль применяется для отладки скриптов.
Место выполнения действия
Раздел "Настройка системы" → "Консоль", страница "Консоль", блоки "Выполнение скрипта из файла" и "Выполнение скрипта из поля ввода".
Выполнение действия
Выполнение скрипта из поля ввода
В блоке "Выполнение скрипта из поля ввода" введите содержание скрипта в текстовое поле. Нажмите кнопку "Выполнить скрипт" или сочетание клавиш Ctrl+Enter.
Выполнение скрипта из файла
В блоке "Выполнение скрипта из файла" нажмите кнопку "Обзор" или "Выберите файл" (название кнопки зависит от используемого браузера) и выберите файл.
Кнопка "Выполнить скрипт", а также кнопки для выбора файла, во время выполнения скрипта блокируются.
Особенности скрипта
Описание особенностей консольных скриптов приведено в разделе Скрипты, выполняемые в консоли.
При выполнении скрипта через консоль можно задавать кодировку скрипта и максимальное время выполнения скрипта, используя специальные комментарии:
- /*! UTF8 */ — кодировка скрипта;
- /*& 3600 */ — максимальное время выполнения скрипта в секундах (в примере 1 час).
Если время выполнения не указано или указано неверно, то максимальное время выполнения скрипта составляет 900 секунд (15 минут).
Результат действия
Скрипт возвращает строку, которая будет выдана в окне как результат после выполнения скрипта: "Скрипт выполнен за N мс. Результат выполнения: 'строка, которая была возвращена из скрипта'". Результат выполнения скрипта отображается в окне.
Для Java 11 изменился формат даты при получении groovy скриптом, вместо номера месяца используется буквенное сокращение. Например, раньше дата возвращалась как 05.11.2020, теперь будет 05 окт. 2020 г или 05 нояб. 2020 г (ru) и 05 Feb 2020(en)
В лог записывается результат выполнения (успешное или не успешное выполнение) и сам скрипт
Рекомендации
Для получения FQN класса (типа) объекта рекомендуется использовать метод .getMetainfo(). Для сравнения его со строкой необходимо выполнить явное преобразование с помощью метода .toString().
В задачах планировщика обычно выполняются долгие, "тяжелые" скрипты. Рекомендуется планировать выполнение таких скриптов на ночное время или на выходные.
Примеры скрипта
1. Скрипт считает количество объектов класса "Запрос" (serviceCall) в системе на текущий момент.
utils.count('serviceCall',[:])
2. Скрипт заполняет у всех объектов класса "Сотрудник" (employee) определенного типа атрибут указанным значением.
// новое значение атрибута def newValue = 'asdf' def objects = utils.find('employee$type', ['testAttr': '555']) for(obj in objects) { api.tx.call { utils.edit(obj, ['newAttr' : newValue]) } }