Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
product:triggers:new [24.01.2024 09:23] – [Локальные функции] Белугин Александрproduct:triggers:new [01.02.2024 11:41] (текущий) Караваева Яна
Строка 28: Строка 28:
   - Дополнительная логика, прописанная в окне **"Условие"** для последней тонкой фильтрации событий.   - Дополнительная логика, прописанная в окне **"Условие"** для последней тонкой фильтрации событий.
  
-События, которые попали под условия фильтров, запускают написанный скрипт. Результатом работы скрипта могут быть небольшие вычисления, создание новых записей в справочнике, новых объектов, изменение статусов, изменение значений реквизитов, их блокировка и т.д. Здесь мы описали [[product/triggers/lib|примеры готовых решений]] на основе триггеров. +События, которые попали под условия фильтров, запускают написанный скрипт. Результатом работы скрипта могут быть небольшие вычисления, создание новых записей в справочнике, новых объектов, изменение статусов, изменение значений реквизитов, их блокировка и т.д. Здесь мы описали [[product/triggers/library|примеры готовых решений]] на основе триггеров. 
  
 В Системе можно создать [[product:linq:new|источник данных LINQ]] и задать ему референсный ключ, чтобы в дальнейшем по нему вызвать этот источник в **Условии** триггера или в самом **Скрипте**.  В Системе можно создать [[product:linq:new|источник данных LINQ]] и задать ему референсный ключ, чтобы в дальнейшем по нему вызвать этот источник в **Условии** триггера или в самом **Скрипте**. 
Строка 56: Строка 56:
 ==== Локальные функции ==== ==== Локальные функции ====
 Если требуется определить собственную локальную функцию/процедуру для использования в скрипте триггера, то ее описание должно быть сделано с использованием префикса ''async'' в следующем формате \\ Если требуется определить собственную локальную функцию/процедуру для использования в скрипте триггера, то ее описание должно быть сделано с использованием префикса ''async'' в следующем формате \\
-<code csharp  [highlight_lines_extra="1">+<code csharp>
 async Task<string> MyFunctionName() async Task<string> MyFunctionName()
 { {
    // your code ...    // your code ...
-    
    return result;    return result;
 } }
 </code> </code>
-где вместо ''string'' соответственно указать тип переменной, которого необходимо возвращать из локальной функции.+где вместо ''string'' необходимо указать тип переменной, которая будет возвращаться из локальной функции.
  
  
 +\\
 Если возвращать из функции ничего не требуется, то определение функции будет в формате:\\ Если возвращать из функции ничего не требуется, то определение функции будет в формате:\\
-<code csharp  [highlight_lines_extra="1">+<code csharp>
 async Task MyFunctionName() async Task MyFunctionName()
 { {
Строка 74: Строка 74:
 } }
 </code> </code>
-\\ 
 \\ \\
 Для вызова созданной таким образом локальной функции/процедуры внутри скрипта триггера, рекомендуется использовать префикс ''await'' для ожидания ее завершения. Для вызова созданной таким образом локальной функции/процедуры внутри скрипта триггера, рекомендуется использовать префикс ''await'' для ожидания ее завершения.
  
-<code csharp  [highlight_lines_extra="1"+<code csharp> 
-var result = await MyFunctionName()+var result = await MyFunctionName()
 +</code> 
 +\\ 
 + 
 +Пример объявления локальной функции и ее вызова: 
 +<code csharp> 
 +async Task CreateLog(string Text)  
 +
 +    TriggerConsole.WriteLine(Text); 
 +    await System.Threading.Tasks.Task.Delay(1000); 
 +
 + 
 +for(int i = 0; i < 10; i++)  
 +
 +    await CreateLog(i.ToString()); 
 +}
 </code> </code>
 ==== Встроенные переменные ==== ==== Встроенные переменные ====