Окно переменных
🔗 Оригинальная страница — Источник данного материала
Описание
Окно переменных служит для создания, удаления, переименования переменных проекта и редактирования их значений. По сути это окно представляет собой таблицу с возможностью редактирования и сортировки переменных.
Во время выполнения проекта можно изменять значения переменных с помощью экшена Обработка переменных.
Для чего это используется?
- Различные манипуляции с переменными.
- Отслеживание изменений происходящих с переменными в процессе отладки проекта.
Как открыть окно?
- Один из способов открыть Окно переменных - это нажать на соответствующую кнопку в панели статических блоков.

То кликните правой клавишей мыши на пустом пространстве рабочего окна и установите чекбокс Показать статические блоки в контекстном меню.
- Второй способ - через меню Окно → Переменные.

Элементы управления
Рассмотрим каждый элемент окна переменных:

Типы переменных

По сути это таб переключающий отображение выбранного типа переменных. Имеет шесть вариантов:
Свои
Это переменные, которые пользователь сам создаёт в процессе написания шаблона. Переменные должны быть обязательно на английском языке. Не допускается использование пробелов и других символов, кроме символа нижнего подчеркивания _. В названии переменной разрешается использование цифр, но не в начале слова.
Авто
Такие переменные генерируются автоматически в режиме записи проекта, а также при добавлении некоторых экшенов. Например, при добавлении кубика Взятие значения.
Автосгенерированные переменные имеют примерно такие названия - Variable1, RecognitionResult0. Однако вы всегда можете переместить их в Свои и там уже задать им любое желаемое имя.
Как переместить автоматически созданную переменную в Свои?
Для этого надо перейти во вкладку Авто, выделить переменную и нажать кнопку Переместить в Свои:

Окружение
В этом табе отображаются переменные окружения проекта: различные параметры страницы инстанса (URL, DOM, текст, домен, текст нотификаций и алертов и т. д.), переменные времени и даты, переменные проекта (имя, папка, правила прокси, id последней ошибки и т. д.) , многочисленные переменные профиля (почта, пол, имя, юзерагент и т. д.)
В этой статье можно ознакомиться с полным списком доступных переменных окружения.
Глобальные
Обычные переменные видны только в пределах одного потока проекта (если проект работает в многопоточном режиме, то каждый поток будет иметь свою локальную, независимую переменную)
Глобальные же переменные доступны для всех проектов и их потоков в ZennoPoster.
Для того, чтобы избежать путаницы у глобальных переменных есть дополнительное свойство - Пространство имён.
Иными словами изменения внесённые в глобальную переменную в PM не будут видны в ZP, и наоборот.
Json
Эти переменные так же генерируются автоматически, но в процессе парсинга JSON.
В режиме Парсинг у экшена Обработка JSON/XML можно из JSON текста сразу разложить значения по автоматически созданным переменным с соответствующими узлами.

Далее в проекте можно использовать эти переменные через префикс { -Json….- }.
Либо в C# посредством объекта project.Json;

Xml
Переменные XML автоматически создаются в соответствующем табе после парсинга XML документа. В режиме Парсинг у экшена Обработка JSON/XML разбираем XML, который, в свою очередь, тоже может находиться в переменной.

Как и в случае с JSON, переменные XML можно использовать через префикс { -XML….- }.
Либо в C# через свойства объекта project.XML;

Фильтр

Открывает и закрывает поле фильтрации
Поле фильтрации
Если проект имеет большое количество переменных, то поиск нужной переменной может занимать много времени. Поэтому в окне переменных предусмотрена многофункциональная фильтрация. Каждый столбец можно отфильтровать по разному одним из 12-ти способов.

Очистка сортировки

Сбрасывает отсортированные переменные.
Добавить

Открывает диалоговое окно в которое можно ввести имя создаваемой переменной.
А также цифр и символа нижнего подчёркивания. Но обязательно должно начинаться с буквы.
Удалить

Удаляет выделенную переменную, предварительно выведя подтверждающее окно. Чтобы выделить переменную достаточно кликнуть по любому месту в строке этой переменной.
Переименовать
Двойной клик по строке переменной в области столбца Имя.
Выводит диалоговое окно с возможностью отредактировать имя переменной.

Переименование доступно только для типов Свои и Глобальные.
Очистка неиспользуемых переменных

Часто в больших проектах создаются переменные, которые позднее никак не участвуют в работе шаблона. Чтобы не занимать место в памяти и визуально не занимать ценное рабочее пространство, можно периодически удалять такие переменные. ZennoPoster найдёт все неиспользуемые переменные и выведет их список с предложением удалить их. Каждую очистку необходимо делать для каждого типа переменных.
Ручн ая сортировка переменных (Drag & Drop)

Вы можете расположить переменные так как вам удобно с помощью кнопок Вверх и Вниз, либо с помощью мыши (Drag & Drop).
Свой порядок работает тогда, когда выключена сортировка по столбцам (для этого нажмите на кнопку Очистка сортировки).
Пример

Заголовки столбцов
Одновременно служат как для фильтрации переменных, так и для сортировки. Достаточно кликнуть по заголовку столбца и произойдёт сортировка как по возрастанию имени переменной, так и по убыванию, как по возрастанию значения переменной, так и по убыванию. Повторный клик меняет направление сортировки.
Кликнув ПКМ по заголовку любого столбца появится меню в котором можно выбрать отображаемые колонки.

Колонка «Имя»
То появится диалоговое окно для переименования.
Здесь отображаются имена переменных используемых в проекте
Name, NAME, name - три разных переменных.
Колонка «Значение»
Выводит текущие значения переменных. Кликнув по значению выбранной переменной можно прямо в поле ввода отредактировать данные.
Колонка «Значение по-умолчанию»
Если требуется, чтобы при запуске проекта переменная уже имела какое-то значение (при старте проекта все переменные пустые), то необходимо ввести его в это поле.
Колонка «Примечание»
По умолчанию данная колонка скрыта.
Можно использовать для пометок к переменным. Например, тут можно указать для какой цели используется переменная.
Скопировать макрос переменной в буфер обмена

Быстрый способ скопировать макрос типа
{ -Variable.value- } кликнуть по такой иконке в строке переменной.
Контекстное меню
Кликнув ПКМ напротив переменной появится контекстное меню.
| Вкладки Свои и Глобальные | Вкладка Авто |
|---|---|
Копирование переменных в другой проект
Нередко требуется создать новый проект используя переменные из старого шаблона. Копировать их по одной - крайне неэффективное занятие. Поэтому есть возможность скопировать сразу все переменные одного проекта и вставить их в другом.
- Откройте старый проект.
- Кликните правой клавишей мыши на кнопке Переменные проекта в Панели Статических блоков и нажмите Скопировать переменные.

- Затем откройте новый проект и опять кликните ПКМ → Переменные проекта в Панели Статических блоков и нажмите Вставить переменные.

- В появившемся окне выберите чекбоксами переменные, какого типа нужно вставить в проект, и подтвердите их вставку.
Работа с переменными
Макросы переменных
В ProjectMaker можно использовать переменные посредством макросов, которые имеют вид { -Variable.myVariable- }. Указанный макрос при исполнении проекта передаст значение переменной myVariable. Достаточно вставить макрос переменной в любое поле свойств экшена (там где это возможно) и при исполнении экшена в поле подставится значение соответствующей переменной.

У глобальных переменных нужно указать в макросе область видимости - { -GlobalVariable.someNamespace.text- }
Операции с переменными с помощью C# и JS экшенов
В основном переменные в ZennoPoster бывают трёх типов:
- Числовые (
0, 1, 12.652, 10500). - Текстовые (
"Hello World","<div>Hello World</div>"). - Логические (
True,False).
Производить различные операции с переменными можно как в кубике C#, так и в кубике JavaScript, но нужно иметь в виду, что в C# все переменные попадают в текстовом виде и, чтобы их конвертировать в числа или в логические переменные, потребуется конвертация или приведение в нужный тип.
Например, вот так выглядит приведение строковых переменных в C# к целочисленному (int) типу двумя разными способами, сложение их и возврат в строковую переменную для дальнейшего использования в проекте:

Для операций со строками в кубике JavaScript необходимо текстовые переменные обернуть в кавычки - '{ -Variable.value1- }'
Рекомендации по именованию переменных
Старайтесь давать переменным названия по которым сразу становится понятна задача и область применения переменной. Не нужно называть переменные короткими и бессмысленными именами -
f1, qwerty - этим вы значительно усложните исправление и поддержку проекта как для себя, так и для других разработчиков, которые будут иметь доступ к шаблону.
Если переменная часто используется в проекте, то желательно назвать её коротко, но понятно - counter, username, proxy.
Для названий имеющих в основе два и более слова старайтесь разделять их либо заглавной буквой (secondPassword), либо символом нижнего подчеркивания (page_html).
Это общепринятые практики, которые значительно улучшат читабельность и эффективность работы с вашим проектом.
Присвоение значения
Простейший пример использования переменных заключается в комбинации статического текста, своих переменных и переменных окружения с помощью экшена Обработка переменных.

В данном примере имя берется из переменной окружения { -Profile.Name- }, день недели из { -TimeNow.DayOfWeek- }, а возр аст из своей переменной count. После запуска кубика результат сохраняется в переменной result.
Арифметические операции над числами
Используя синтаксис языка JavaScript и соответствующий кубик можно производить различные математические операции над числами.

В данном случае в переменных value1 и value2 находятся целые числа, которые нужно сложить и потом умножить на 10. Результат вычислений попадает в переменную result.
Использование переменных
Старайтесь использовать переменные вместо жёстко прописанного текста в тех местах, где значение может когда-то измениться.
В качестве примера можно привести пути файлов - на Вашем компьютере путь один, а у клиента он другой. Если необходимый файл находится в одной директории с проектом (или в одной из его поддиректорий) то хорошим решением будет использовать макрос { -Project.Directory- } - путь к директории где сохранён шаблон. Вот как может выглядеть путь - { -Project.Directory- }file.txt