Локальные переменные
Переменные текущего потока. Доступны только внутри одного шаблона.
Тип всегда 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";
}