| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия |
| product:triggers:new [24.01.2024 09:23] – [Локальные функции] Белугин Александр | product:triggers:new [01.02.2024 11:41] (текущий) – Караваева Яна |
|---|
| - Дополнительная логика, прописанная в окне **"Условие"** для последней тонкой фильтрации событий. | - Дополнительная логика, прописанная в окне **"Условие"** для последней тонкой фильтрации событий. |
| |
| События, которые попали под условия фильтров, запускают написанный скрипт. Результатом работы скрипта могут быть небольшие вычисления, создание новых записей в справочнике, новых объектов, изменение статусов, изменение значений реквизитов, их блокировка и т.д. Здесь мы описали [[product/triggers/lib|примеры готовых решений]] на основе триггеров. | События, которые попали под условия фильтров, запускают написанный скрипт. Результатом работы скрипта могут быть небольшие вычисления, создание новых записей в справочнике, новых объектов, изменение статусов, изменение значений реквизитов, их блокировка и т.д. Здесь мы описали [[product/triggers/library|примеры готовых решений]] на основе триггеров. |
| |
| В Системе можно создать [[product:linq:new|источник данных LINQ]] и задать ему референсный ключ, чтобы в дальнейшем по нему вызвать этот источник в **Условии** триггера или в самом **Скрипте**. | В Системе можно создать [[product:linq:new|источник данных LINQ]] и задать ему референсный ключ, чтобы в дальнейшем по нему вызвать этот источник в **Условии** триггера или в самом **Скрипте**. |
| ==== Локальные функции ==== | ==== Локальные функции ==== |
| Если требуется определить собственную локальную функцию/процедуру для использования в скрипте триггера, то ее описание должно быть сделано с использованием префикса ''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() |
| { | { |
| } | } |
| </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> |
| ==== Встроенные переменные ==== | ==== Встроенные переменные ==== |