Получить настройки скрипта и агента

В блок Внешний скрипт надо добавить TSLab.DataModel.dll и TSLab.ScriptEngine.dll.

using System.Text;
using TSLab.DataModel;
using TSLab.Script;
using TSLab.Script.Handlers;
using TSLab.ScriptExecution.Realtime;

namespace MyLib
{
    public class TestSettings : IExternalScript
    {
        public void Execute(IContext ctx, ISecurity sec)
        {
            // В блок 'Внешний скрипт' необходимо добавить TSLab.DataModel.dll, TSLab.ScriptExecution.dll.
                        
            // Получить настройки скрипта
            var labOptions = ctx.GetLabOptions();
            if (labOptions != null)
            {
                var sb = new StringBuilder();
                sb.AppendLine($"=== LabOptions ===");
                sb.AppendLine($"Дата от: ({labOptions.UseDateFrom}) {labOptions.DateFromEdit}");
                sb.AppendLine($"Дата к: ({labOptions.UseDateTo}) {labOptions.DateToEdit}");
                ctx.Log(sb.ToString(), MessageType.Info, true);
            }

            // Получить настройки агента
            var rtOptions = ctx.GetRtOptions();
            if (rtOptions != null)
            {
                var sb = new StringBuilder();
                sb.AppendLine($"=== RtOptions ===");
                sb.AppendLine($"Исполнять входы сразу: {rtOptions.DefEntryApprove}");
                sb.AppendLine($"Исполнять выходы сразу: {rtOptions.DefExitApprove}");
                ctx.Log(sb.ToString(), MessageType.Info, true);
            }
        }
    }

    public static class TSLabExtensions
    {
        public static LabOptions GetLabOptions(this IContext ctx)
        {
            var fi = ctx.Runtime.GetType().GetProperty("Options");
            return fi?.GetValue(ctx.Runtime) as LabOptions;
        }

        public static RealtimeScriptOptions GetRtOptions(this IContext ctx)
        {
            var fi = ctx.Runtime.GetType().GetProperty("Manager");
            var val = fi?.GetValue(ctx.Runtime) as RealtimeDataManager;
            return val?.RtData?.Options;
        }
    }
}

Полный список настроек агента:

Last updated

Was this helpful?