Выполнение скрипта в консоли

Описание действия

Администратор системы может выполнить произвольный скрипт через веб-интерфейс системы в консоль. Консоль используется для разового запуска произвольных скриптов. Часто консоль применяется для отладки скриптов.

Место выполнения действия

Раздел "Настройка системы" → "Консоль", страница "Консоль", блоки "Выполнение скрипта из файла" и "Выполнение скрипта из поля ввода".

Выполнение действия

Выполнение скрипта из поля ввода

В блоке "Выполнение скрипта из поля ввода" введите содержание скрипта в текстовое поле. Нажмите кнопку "Выполнить скрипт" или сочетание клавиш 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])
}
}