> For the complete documentation index, see [llms.txt](https://wfsys.gitbook.io/workflow-forms-syntax/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wfsys.gitbook.io/workflow-forms-syntax/workflow_forms/objects/variable.md).

# Variable

## Шаблон Variable <a href="#template" id="template"></a>

Перечень всех возможных тэгов объекта:

```xml
<MyObject Name="" Type="Variable" Assembly="SimpleControls" ChangeForm="">
  <!--Тэги, общие для всех графических объектов-->
  <Change User="" Source="" ValueSet="" />
  <!--Тэги, специфичные для Variable-->
  <SaveOnFormClose Value=""/>
  <Value></Value>
</MyObject>
```

## Описание Variable <a href="#description" id="description"></a>

```xml
<MyObject Name="" Type="Variable" Assembly="SimpleControls" ChangeForm="True">
  <!--Тэги, общие для всех графических объектов-->
  <!--Тэги, специфичные для Variable-->
</MyObject>
```

Значением Variable считается значение, указанное в тэге [`<Value>`](#value).

### Получение значения <a href="#get-value" id="get-value"></a>

Для получения значения объекта используется get-проперти [Value](#get_value):

```xml
<Object Name="VariableName">
  <Property Name="Value" />
</Object>
```

Рекомендуется использовать сокращенный вариант записи:

```xml
<Object Name="VariableName" />
```

### Задание значения <a href="#set-value" id="set-value"></a>

Для задания значения объекту используется set-проперти [Value](#set_value):

```xml
<Object Name="VariableName">
  <Property Name="Value">Новое значение</Property>
</Object>
```

Рекомендуется использовать сокращенный вариант записи:

```xml
<Object Name="VariableName">Новое значение</Object>
```

## Тэги, специфичные для Variable <a href="#specific-tags" id="specific-tags"></a>

### Value <a href="#value" id="value"></a>

Значение объекта Variable.

Необязательный тэг. Ожидается любое значение.

По умолчанию используется значение NULL.

```xml
<Value>Value</Value>
```

### SaveOnFormClose <a href="#save_on_form_close" id="save_on_form_close"></a>

Настройка сохранения значения переменной в базе данных в таблице public.user\_form\_info.

Необязательный тэг. В качестве значения атрибута `Value` ожидается логическое значение.

По умолчанию используется значение False.

```xml
<SaveOnFormClose Value="True"/>
```

## Get-проперти для получения свойств <a href="#get-properties" id="get-properties"></a>

### Value <a href="#get_value" id="get_value"></a>

Возвращает значение объекта Variable, если он его имеет.

```xml
<Object Name="VariableName">
  <Property Name="Value" />
</Object>
```

### ValueChanged <a href="#get_value_changed" id="get_value_changed"></a>

Возвращает признак того, было ли изменено значение объекта Variable в процессе работы.

```xml
<Object Name="VariableName">
  <Property Name="ValueChanged" />
</Object>
```

Есть 3 способа изменить значение объекта:

1. Изменить значение прямым образом в графическом интерфейсе формы, с помощью set-проперти [`ValueChanged`](#valuechanged-1).
2. Указать источник значения (ссылка на любые данные на форме). В случае изменения значения в источнике, автоматически изменится значение и самого объекта.
3. Присвоить значение объекту посредством команды [`ValueSetCommand`](/workflow-forms-syntax/workflow_forms/commands/value_set_command.md).

## Set-проперти для динамического задания свойств <a href="#set-properties" id="set-properties"></a>

### Value <a href="#set_value" id="set_value"></a>

Задает значение объекта Variable.

Ожидается любое значение.

```xml
<Object Name="VariableName">
  <Property Name="Value">Value</Property>
</Object>
```

### ValueChanged <a href="#set_value_changed" id="set_value_changed"></a>

Задает признак изменения значения объекта Variable.

Ожидается логическое значение.

```xml
<Object Name="VariableName">
  <Property Name="ValueChanged">False</Property>
</Object>
```

### Refresh

Обновляет значение объекта Variable.

```xml
<Object Name="ConstVariable">
  <Property Name="Refresh" />
</Object>
```

## Примеры <a href="#examples_variable" id="examples_variable"></a>

Работают только со числами. Со строками не работают вообще.

### Пример 1. Работающий. <a href="#example_1" id="example_1"></a>

```xml
<MyObject Name="Variable" Type="Variable" Assembly="SimpleControls">
  <Value>
	<Calculate>
	  <Expression>if({0}={1}, 1, 2)</Expression>
	  <Items>
		<Item>1</Item>
		<Item>0</Item>
	  </Items>
	</Calculate>
  </Value>
</MyObject>
```

### Пример 2. Не работающий. <a href="#example_2" id="example_2"></a>

```xml
<MyObject Name="Variable" Type="Variable" Assembly="SimpleControls">
  <Value>
	<Calculate>
	  <Expression>if({0}='test', 1, 2)</Expression>
	  <Items>
		<Item>test</Item>
		<Item>0</Item>
	  </Items>
	</Calculate>
  </Value>
</MyObject>
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://wfsys.gitbook.io/workflow-forms-syntax/workflow_forms/objects/variable.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
