{{=substr({=System:Now},3,2)}}
{=System:Now}
), начиная с 3 символа (третий символ - точка) мы возьмем 2.ob_start();
echo "<pre>";
var_dump( array(
'ENTITY_ID' => 'LEAD',
'VALUE' =>$em ,
'COMPLEX_ID' => 'EMAIL_WORK'
));
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/test_bp_val.txt', ob_get_clean(), FILE_APPEND);
use \Bitrix\Main;
use \Bitrix\Crm;
/* @var string Email, который будем искать */
$sEmail = 'swap@google.com';
/* @var array ID лидов, которые попадаются под условия */
$arLeadIds = [];
if ( Main\Loader::IncludeModule('crm') )
{
// Формируем критерий, подсовываем Email
$criterion = new Crm\Integrity\DuplicateCommunicationCriterion( Crm\CommunicationType::EMAIL_NAME, $sEmail);
// Выполняем поиск первых 20 клиентов
$duplicate = $criterion->find( \CCrmOwnerType::Lead, 20);
// Если найдены entity проитерируем их
$entities = $duplicate->getEntities();
if ( !empty($entities) )
{
foreach($entities as $entity)
{
$arLeadIds[] = $entity->getEntityID();
}
}
}
// А тут будут ID сделок
var_dump($arLeadIds);
CModule::IncludeModule("socialnetwork");
$arFields = array(
"TITLE" => "Заголовок записи",
"DETAIL_TEXT" => "Тело сообщения",
"BLOG_ID" => 1, //ID отправителя
"AUTHOR_ID" => 1, //ID блога, в котором будет запись
"DATE_PUBLISH" => '11.02.2014 09:08', // дада
"PUBLISH_STATUS" => BLOG_PUBLISH_STATUS_PUBLISH, // Читаем в API
"ENABLE_TRACKBACK" => 'N',
"ENABLE_COMMENTS" => 'Y'
);
$arEvent = array (
'EVENT_ID' => 'blog_post',
'=LOG_DATE' => 'now()',
'TITLE_TEMPLATE' => '#USER_NAME# добавил(а) сообщение "#TITLE#" в блог',
'TITLE' => "Заголовок записи",
'MESSAGE' => "Текст записи",
'TEXT_MESSAGE' => "Текст записи",
'MODULE_ID' => 'blog',
'CALLBACK_FUNC' => false,
'SOURCE_ID' => $ID,
'ENABLE_COMMENTS' => 'Y',
'RATING_TYPE_ID' => 'BLOG_POST',
'RATING_ENTITY_ID' => $newID,
'ENTITY_TYPE' => 'U',
'ENTITY_ID' => '1',
'USER_ID' => '1',
'URL' => '/company/personal/user/1/blog/'.$ID.'/',
);
// Выдает права
CSocNetLogRights::Add ( $eventID, array ("G3") );
// Отправляет уведомление о новом сообщении
CSocNetLog::SendEvent ( $eventID, 'SONET_NEW_EVENT' );
//region Try to extract user action data
// We have to extract them before call of CGridOptions::GetFilter() or the custom filter will be corrupted.
$actionData = array(
'METHOD' => $_SERVER['REQUEST_METHOD'],
'ACTIVE' => false
);
if(check_bitrix_sessid())
{
$postAction = 'action_button_'.$arResult['GRID_ID'];
$getAction = 'action_'.$arResult['GRID_ID'];
//We need to check grid 'controls'
$controls = isset($_POST['controls']) && is_array($_POST['controls']) ? $_POST['controls'] : array();
if ($actionData['METHOD'] == 'POST' && (isset($controls[$postAction]) || isset($_POST[$postAction])))
{
CUtil::JSPostUnescape();
$actionData['ACTIVE'] = true;
if(isset($controls[$postAction]))
{
$actionData['NAME'] = $controls[$postAction];
}
else
{
$actionData['NAME'] = $_POST[$postAction];
unset($_POST[$postAction], $_REQUEST[$postAction]);
}
...
...
...
$actionData['AJAX_CALL'] = $arResult['IS_AJAX_CALL'];
}
}
//endregion
// POST & GET actions processing -->
if($actionData['ACTIVE'])
{
if ($actionData['METHOD'] == 'POST')
{
if($actionData['NAME'] == 'delete')
{
...
elseif($actionData['NAME'] == 'assign_to')
{
if(isset($actionData['ASSIGNED_BY_ID']))
{
$arIDs = array();
if ($actionData['ALL_ROWS'])
{
$arActionFilter = $arFilter;
$arActionFilter['CHECK_PERMISSIONS'] = 'N'; // Ignore 'WRITE' permission - we will check it before update.
$dbRes = CCrmDeal::GetListEx(array(), $arActionFilter, false, false, array('ID'));
while($arDeal = $dbRes->Fetch())
{
$arIDs[] = $arDeal['ID'];
}
}
elseif (isset($actionData['ID']) && is_array($actionData['ID']))
{
$arIDs = $actionData['ID'];
}
foreach($arIDs as $ID)
{
if (!CCrmDeal::CheckUpdatePermission($ID, $userPermissions))
{
continue;
}
$DB->StartTransaction();
$arUpdateData = array(
'ASSIGNED_BY_ID' => $actionData['ASSIGNED_BY_ID']
);
if($CCrmDeal->Update($ID, $arUpdateData, true, true, array('DISABLE_USER_FIELD_CHECK' => true)))
{
$DB->Commit();
$arErrors = array();
CCrmBizProcHelper::AutoStartWorkflows(
CCrmOwnerType::Deal,
$ID,
CCrmBizProcEventType::Edit,
$arErrors
);
}
else
{
$DB->Rollback();
}
}
}
}
...
}
}
// <-- POST & GET actions processing
/* @var array Список контактов */
$arContacts = array();
if ( \Bitrix\Main\Loader::IncludeModule('crm') )
{
/* @var array Сортировка полученного списка контактов */
$arOrder = array('ID' => 'DESC');
/* @var array Условия получаемого списка контактов */
$arFilter = array(
"NAME" => "Имя",
"LAST_NAME" => "Фамилия",
'CHECK_PERMISSIONS' => 'N' // Данный ключ необходим для того чтобы получить всех пользоватей,
// иначе, будет найден только если ответственным за него является тот,
// под кем запускается скрипт в битриксе
);
/* @var array Получаемые поля для списка контактов */
$arSelect = array(
'ID'
);
// NOTE: Запрашивайте только необходимые поля
$res = CCrmContact::GetList( $arOrder, $arFilter, $arSelect );
while( $arContact = $res->fetch() )
{
$arContacts[ $arContact['ID'] ] = $arContact['ID'];
}
}
// Тут в $arContacts либо пустой массив, либо массив с ID контактами, которые соответствуют условию поиска
use \Bitrix\Main\Loader;
use \Bitrix\Crm;
/* @var array Список контактов */
$arContacts = array();
if ( Loader::IncludeModule('crm') )
{
$resContacts = Crm\ContactTable::getList(array(
'select' => array('ID'),
'filter' => array(
"NAME" => "Имя",
"LAST_NAME" => "Фамилия",
),
'order' => array('ID' => 'DESC')
));
while( $arContact = $resContacts->fetch() )
{
$arContacts[ $arContact['ID'] ] = $arContact['ID'];
}
/*
Начиная с 17 версии (вроде бы), можно делать так:
foreach( $resContacts as $arContact)
{
$arContacts[ $arContact['ID'] ] = $arContact['ID'];
}
вместо while цикла
*/
}