...Человеческий поиск в разработке...
- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/activity/provider/wait.php
- Класс: Bitrix\Crm\Activity\Provider\Wait
- Вызов: Wait::checkFields
static function checkFields($action, &$fields, $id, $params = null) { $result = new Main\Result(); $bindings = isset($fields['BINDINGS']) && is_array($fields['BINDINGS']) ? $fields['BINDINGS'] : array(); if(!empty($bindings)) { foreach($bindings as $binding) { $ownerTypeID = isset($binding['OWNER_TYPE_ID']) ? (int)$binding['OWNER_TYPE_ID'] : 0; $ownerID = isset($binding['OWNER_ID']) ? (int)$binding['OWNER_ID'] : 0; $query = new Query(ActivityTable::getEntity()); $query->addSelect('ID'); $query->addFilter('=IS_HANDLEABLE', 'Y'); $query->setLimit(1); $query->registerRuntimeField( '', new ReferenceField('B', ActivityBindingTable::getEntity(), array( '=ref.ACTIVITY_ID' => 'this.ID', '=ref.OWNER_ID' => new SqlExpression($ownerID), '=ref.OWNER_TYPE_ID' => new SqlExpression($ownerTypeID) ), array('join_type' => 'INNER') ) ); $dbResult = $query->exec(); if(is_array($dbResult->fetch())) { $result->addError( new Main\Error(Loc::getMessage('CRM_ACT_PROVIDER_WAIT_SCHEDULE_NOT_EMPTY_ERROR')) ); return $result; } } } if ( $action === self::ACTION_UPDATE && isset($fields['COMPLETED']) && $fields['COMPLETED'] === 'Y' && isset($params['PREVIOUS_FIELDS']) && empty($params['PREVIOUS_FIELDS']['END_TIME']) ) { $end = new Main\Type\DateTime(); $fields['END_TIME'] = $end->toString(); } //Only END TIME can be taken for DEADLINE! if (isset($fields['END_TIME']) && $fields['END_TIME'] !== '') { $fields['DEADLINE'] = $fields['END_TIME']; } //Wait is not handleabele always. $fields['IS_HANDLEABLE'] = 'N'; return $result; }