# Версии элементов

#### &#x20;Шаг 1

Есть возможность для элементов (**страницы и документы**, **групп магазина, товары магазина, группы информационных систем, элементы информационных систем**) полностью подменить содержимое текста для текущего региона. В ЦА сайта переходим в раздел и нужного элемента кликаем на «Версии» (1)

<div data-full-width="true"><img src="/files/sWRov7PrVDGEJvmZHnIE" alt="Страницы и документы"></div>

<div data-full-width="true"><img src="/files/YToqUBapunESMXXndOde" alt="Интернет-магазины"></div>

#### Шаг 2

Теперь в раздел «Мультирегиональные версии» кликаем «Добавить» (1)

<div data-full-width="true"><img src="/files/UDgFCzV0qnm4aP75i7QL" alt="Мультирегиональные версии (Страницы и документы)"></div>

<div data-full-width="true"><img src="/files/vTV64Y668L66nFkcdIeQ" alt="Мультирегиональные версии (Интернет-магазины)"></div>

#### Шаг 3

Заполняем параметры для новой версии

<div data-full-width="true"><img src="/files/6dUqntjigV4F9nqQnqgm" alt="Редактирование версии (Страницы и документы)"></div>

<div data-full-width="true"><img src="/files/NDcQLc4e8FSEnnmPWJfw" alt="Редактирование версии (Информационные системы)"></div>

* ***Название** — название документа для региона*
* ***Содержимое документа** — текст для региона*
* ***Мультирегион** – регион которому принадлежит версия документа*
* ***Активность** - активность элемента (только для ИМ и ИС)* $$^{1}$$

$$^{1}$$ Для того чтобы исключить для выборки (так же **ошибка 404**) определенные группы/элементы внесите в ТДС (настройки страницы) следующий код:

{% tabs %}
{% tab title="ТДС \[Настройки страницы]" %}
{% code lineNumbers="true" %}

```php
// для ИМ после ->parseUrl() вставьте
if(Core::moduleIsActive('multiregion'))
{
    if($Shop_Controller_Show->item)
    {
        $oMultiRegion_Shop_Item = Core_Page::instance()->multiregion->MultiRegion_Shop_Items->getByentity_id($Shop_Controller_Show->item);
        
        if(!is_null($oMultiRegion_Shop_Item) && !$oMultiRegion_Shop_Item->active)
        {
            $Shop_Controller_Show->error404();
            
            return ;
        }
    }
    
    if($Shop_Controller_Show->group)
    {
        $oMultiRegion_Shop_Group = Core_Page::instance()->multiregion->MultiRegion_Shop_Groups->getByentity_id($Shop_Controller_Show->group);
        
        if(!is_null($oMultiRegion_Shop_Group) && !$oMultiRegion_Shop_Group->active)
        {
            $Shop_Controller_Show->error404();
            
            return ;
        }
    }
    
    $Shop_Controller_Show
        ->shopGroups()
            ->queryBuilder()
                ->leftJoin('multiregion_shop_groups','multiregion_shop_groups.entity_id','=','shop_groups.id', array(
                    array('AND' => array('multiregion_shop_groups.multiregion_id','=', Core_Page::instance()->multiregion->id))
                ))
                ->open()
                    ->where('multiregion_shop_groups.active', '=', 1)
                    ->setOr()
                    ->where('multiregion_shop_groups.id', 'IS', NULL)
                ->close();
                
    $Shop_Controller_Show
        ->shopItems()
            ->queryBuilder()
                ->leftJoin('multiregion_shop_items','multiregion_shop_items.entity_id','=','shop_items.id', array(
                    array('AND' => array('multiregion_shop_items.multiregion_id','=', Core_Page::instance()->multiregion->id))
                ))
                ->open()
                    ->where('multiregion_shop_items.active', '=', 1)
                    ->setOr()
                    ->where('multiregion_shop_items.id', 'IS', NULL)
                ->close();
}

// для ИС после ->parseUrl() вставьте
if(Core::moduleIsActive('multiregion'))
{
    if($Informationsystem_Controller_Show->item)
    {
        $oMultiRegion_Informationsystem_Item = Core_Page::instance()->multiregion->MultiRegion_Informationsystem_Items->getByentity_id($Informationsystem_Controller_Show->item);
        
        if(!is_null($oMultiRegion_Informationsystem_Item) && !$oMultiRegion_Informationsystem_Item->active)
        {
            $Informationsystem_Controller_Show->error404();
            
            return ;
        }
    }
    
    if($Informationsystem_Controller_Show->group)
    {
        $oMultiRegion_Informationsystem_Group = Core_Page::instance()->multiregion->MultiRegion_Informationsystem_Groups->getByentity_id($Informationsystem_Controller_Show->group);
        
        if(!is_null($oMultiRegion_Informationsystem_Group) && !$oMultiRegion_Informationsystem_Group->active)
        {
            $Informationsystem_Controller_Show->error404();
            
            return ;
        }
    }
    
    $Informationsystem_Controller_Show
        ->informationsystemGroups()
            ->queryBuilder()
                ->leftJoin('multiregion_informationsystem_groups','multiregion_informationsystem_groups.entity_id','=','informationsystem_groups.id', array(
                    array('AND' => array('multiregion_informationsystem_groups.multiregion_id','=', Core_Page::instance()->multiregion->id))
                ))
                ->open()
                    ->where('multiregion_informationsystem_groups.active', '=', 1)
                    ->setOr()
                    ->where('multiregion_informationsystem_groups.id', 'IS', NULL)
                ->close();
                
    $Informationsystem_Controller_Show
        ->informationsystemItems()
            ->queryBuilder()
                ->leftJoin('multiregion_informationsystem_items','multiregion_informationsystem_items.entity_id','=','informationsystem_items.id', array(
                    array('AND' => array('multiregion_informationsystem_items.multiregion_id','=', Core_Page::instance()->multiregion->id))
                ))
                ->open()
                    ->where('multiregion_informationsystem_items.active', '=', 1)
                    ->setOr()
                    ->where('multiregion_informationsystem_items.id', 'IS', NULL)
                ->close();
}
```

{% endcode %}
{% endtab %}

{% tab title="любой др. код" %}
{% code lineNumbers="true" %}

```php
// для групп ИМ перед $Shop_Controller_Show->show() вставьте
Core::moduleIsActive('multiregion') && $Shop_Controller_Show
    ->shopGroups()
        ->queryBuilder()
            ->leftJoin('multiregion_shop_groups','multiregion_shop_groups.entity_id','=','shop_groups.id', array(
                array('AND' => array('multiregion_shop_groups.multiregion_id','=', Core_Page::instance()->multiregion->id))
            ))
            ->open()
                ->where('multiregion_shop_groups.active', '=', 1)
                ->setOr()
                ->where('multiregion_shop_groups.id', 'IS', NULL)
            ->close();

// для товаров ИМ перед $Shop_Controller_Show->show() вставьте
Core::moduleIsActive('multiregion') && $Shop_Controller_Show
    ->shopItems()
        ->queryBuilder()
            ->leftJoin('multiregion_shop_items','multiregion_shop_items.entity_id','=','shop_items.id', array(
                array('AND' => array('multiregion_shop_items.multiregion_id','=', Core_Page::instance()->multiregion->id))
            ))
            ->open()
                ->where('multiregion_shop_items.active', '=', 1)
                ->setOr()
                ->where('multiregion_shop_items.id', 'IS', NULL)
            ->close();

// для элементов ИС перед $Informationsystem_Controller_Show->show() вставьте
Core::moduleIsActive('multiregion') && $Informationsystem_Controller_Show
    ->informationsystemItems()
        ->queryBuilder()
            ->leftJoin('multiregion_informationsystem_items','multiregion_informationsystem_items.entity_id','=','informationsystem_items.id', array(
                array('AND' => array('multiregion_informationsystem_items.multiregion_id','=', Core_Page::instance()->multiregion->id))
            ))
            ->open()
                ->where('multiregion_informationsystem_items.active', '=', 1)
                ->setOr()
                ->where('multiregion_informationsystem_items.id', 'IS', NULL)
            ->close();
            
// для структуры сайта перед $Structure_Controller_Show->show() вставьте
Core::moduleIsActive('multiregion') && $Structure_Controller_Show
    ->structure()
        ->queryBuilder()
            ->leftJoin('multiregion_structures','multiregion_structures.entity_id','=','structures.id', array(
                array('AND' => array('multiregion_structures.multiregion_id','=', Core_Page::instance()->multiregion->id))
            ))
            ->open()
                ->where('multiregion_structures.active', '=', 1)
                ->setOr()
                ->where('multiregion_structures.id', 'IS', NULL)
            ->close();
```

{% endcode %}
{% endtab %}
{% endtabs %}

## Любая другая логика работы с версиями элементов

{% code lineNumbers="true" fullWidth="true" %}

```php
// Получние версий элемента по региону
$oMultiRegion = Core_Entity::factory('MultiRegion', 123);
$oShop_Item = Core_Entity::factory('Shop_Item', 456);

$aMultiRegion_Shop_Items = $oMultiRegion->MultiRegion_Shop_Items->getByentity_id($oShop_Item->id, FALSE); // возвращает object или NULL

// Получние всех версий элемента
$oDocument = Core_Entity::factory('Document', 123);

$oMultiRegion_Documents = Core_Entity::factory('MultiRegion_Document');
$oMultiRegion_Documents
    ->queryBuilder()
        ->where('entity_id','=',$oDocument->id);
        
$aMultiRegion_Documents= $oMultiRegion_Documents->findAll(); // возвращает массив
```

{% endcode %}


---

# Agent Instructions: 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:

```
GET https://support.morozovpimnev.ru/multiregion/versii-elementov.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
