# Изменение одного поля в зависимости от значения другого

**URL:** <https://community.itop-itsm.ru/t/izmenenie-odnogo-polya-v-zavisimosti-ot-znacheniya-drugogo/616>\
**Category:** Использование\
**Created:** [10.Февраль.2017 16:24:21 UTC](https://community.itop-itsm.ru/t/izmenenie-odnogo-polya-v-zavisimosti-ot-znacheniya-drugogo/616 "2017-02-10T16:24:21Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![react](https://community.itop-itsm.ru/letter_avatar_proxy/v4/letter/r/ecccb3/32.png) [@react](https://community.itop-itsm.ru/u/react)\
**Post date:** [10.Февраль.2017 16:24:21 UTC](https://community.itop-itsm.ru/t/izmenenie-odnogo-polya-v-zavisimosti-ot-znacheniya-drugogo/616/1 "2017-02-10T16:24:21Z")

</div>

Доброго дня.  
Есть задача изменять поле otvetstvenniy в зависимости от поля file\_data (file\_data изменяется периодически через интерфейс itop).  
В класс добавляю метод :

```
 <method id="OnUpdate">
   <static>false</static>
     <access>protected</access>
   <type>Overload-DBObject</type>
    <code><![CDATA[	protected function OnUpdate()
  { $name=$this->Get('name');
		$file2 = DBSearch::FromOQL('SELECT file_data FROM documentbuhdoc JOIN document ON documentbuhdoc.id=document.id WHERE name=$name');
		
if (!empty($file2))
 	{
	$this->Set('otvetstvenniy', '11');
	$this->DBUpdate();
		
	}
 	

 }]]></code>
     </method>

```

Ввиду малого кол-ва информации не получается правильно выстроить $file2 = DBSearch::FromOQL(‘SELECT file\_data FROM documentbuhdoc JOIN document ON documentbuhdoc.id=document.id WHERE name=$name’);

Кто подскажет ? Или может есть другой способ решить задачу ?

---

<div class="post-metadata">

**Author:** ![react](https://community.itop-itsm.ru/letter_avatar_proxy/v4/letter/r/ecccb3/32.png) [@react](https://community.itop-itsm.ru/u/react)\
**Post date:** [13.Февраль.2017 11:49:49 UTC](https://community.itop-itsm.ru/t/izmenenie-odnogo-polya-v-zavisimosti-ot-znacheniya-drugogo/616/2 "2017-02-13T11:49:49Z")

</div>

Отвечаю сам себе , может кому пригодится ,плюс общие полезные моменты опишу.  
Моя первоначальная ошибка - полагал что OQL позволяет общаться с mysql напрямую , что не так , общение происходит посредством itop (через классы , OQL далее преобразует этот звпрос в запрос mysql) .  
Разобраться помог этот инструмент :

 ![](https://community.itop-itsm.ru/uploads/default/original/1X/75e8d0fd65a42ce74bf7260690ef5dfa42ba0b43.JPG)

Просмотрев саму таблицу в SQL , а также модель данных

 ![](https://community.itop-itsm.ru/uploads/default/original/1X/d9b5fe188f6e83fbec9d6da70a74e0c511bea84a.JPG)

стало понятно что нужное мне поле (file на скриншоте) непредставляется возможным(если кто знает как это сделать поделелитесь) выдернуть посредством OQL ( работает с классами , а не с sql напрямую) , тк на выходе идет blob сочетающий в себе 3 поля данных mysql( проверял используя  
$file=$this-\>Get(‘file’);  
if (!empty($file)) )  
и результат был всегда присутствие данных , даже в случае когда файла не было загружено .

Мне нужно было проверять file на отсутствие данных , и в случае отсутствия менять поле файл загружен с Нет на Да .  
В итоге воспользовался полем documenttype\_name , оно текстовое , простое (1 столбец в mysql) , и пустое когда файла не загружено.

```
$oDevice = MetaModel::GetObject('DocumentBUHDOC', $this->Get('id'));
		if (is_object($oDevice))
		
		$is_file_loaded=$this->Get('documenttype_name');		
		{
		if (!empty($is_file_loaded))
		{
		$this->Set('file_loaded', 'yes');
		$this->DBUpdate();
		
		}
```
