Локальные переменные

Переменные текущего потока. Доступны только внутри одного шаблона. Тип всегда string — при работе с числами и bool нужна конвертация. Переменная должна существовать в ProjectMaker, иначе будет исключение.

← Назад к индексу


Чтение и запись

// Чтение
string userName = project.Variables["UserName"].Value;
 
// Запись строки
project.Variables["UserName"].Value = "ivan_petrov";
 
// Запись числа
int age = 25;
project.Variables["Age"].Value = age.ToString();
 
// Запись bool
bool isLoggedIn = true;
project.Variables["IsLoggedIn"].Value = isLoggedIn.ToString();
 
// Запись любого объекта
project.Variables["SomeVar"].Value = $"{someObject}";

Числа

// Инкремент счётчика
int attempts = int.Parse(project.Variables["Attempts"].Value);
attempts++;
project.Variables["Attempts"].Value = attempts.ToString();
 
// Арифметика
double price = double.Parse(project.Variables["Price"].Value);
price *= 1.2;
project.Variables["Price"].Value = price.ToString("F2");

Строки

// Конкатенация
string firstName = project.Variables["FirstName"].Value;
string lastName  = project.Variables["LastName"].Value;
project.Variables["FullName"].Value = firstName + " " + lastName;
 
// Trim, ToLower
project.Variables["Email"].Value = project.Variables["Email"].Value.Trim().ToLower();
 
// Replace в шаблоне
string msg = project.Variables["MessageTemplate"].Value;
project.Variables["PersonalMessage"].Value = msg.Replace("{username}", project.Variables["UserName"].Value);

Bool

// Проверка
bool isLoggedIn = project.Variables["IsLoggedIn"].Value == "True";
 
// Переключение
bool current = project.Variables["FeatureEnabled"].Value == "True";
project.Variables["FeatureEnabled"].Value = (!current).ToString();

Дата и время

project.Variables["CurrentDate"].Value = DateTime.Now.ToString("yyyy-MM-dd");
project.Variables["DateRus"].Value    = DateTime.Now.ToString("dd.MM.yyyy");
project.Variables["Timestamp"].Value  = ((DateTimeOffset)DateTime.Now).ToUnixTimeSeconds().ToString();
 
// Прибавить дни
DateTime start = DateTime.Parse(project.Variables["StartDate"].Value);
project.Variables["EndDate"].Value = start.AddDays(30).ToString("yyyy-MM-dd");
 
// Разница в днях
DateTime d1 = DateTime.Parse(project.Variables["Date1"].Value);
DateTime d2 = DateTime.Parse(project.Variables["Date2"].Value);
project.Variables["DaysDiff"].Value = (d2 - d1).Days.ToString();

Массив в одной переменной

// Сохранить
string[] emails = { "a@mail.com", "b@mail.com", "c@mail.com" };
project.Variables["EmailList"].Value = string.Join("|", emails);
 
// Прочитать
string[] arr = project.Variables["EmailList"].Value.Split('|');
project.Variables["FirstEmail"].Value  = arr[0];
project.Variables["EmailCount"].Value  = arr.Length.ToString();

Инициализация по умолчанию

if (string.IsNullOrEmpty(project.Variables["Counter"].Value))
    project.Variables["Counter"].Value = "0";

Обработка ошибок при конвертации

try
{
    int value = int.Parse(project.Variables["Count"].Value);
    value++;
    project.Variables["Count"].Value = value.ToString();
}
catch (Exception ex)
{
    project.SendWarningToLog("Ошибка Count: " + ex.Message);
    project.Variables["Count"].Value = "1";
}