• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/activity.php
  • Класс: Bitrix\Crm\ActivityTable
  • Вызов: ActivityTable::getMap
static function getMap()
{
	global $DB;

	$datetimeNull = 'CAST(NULL AS DATETIME)';

	return array(
		'ID' => array(
			'data_type' => 'integer',
			'primary' => true,
			'autocomplete' => true
		),
		'TYPE_ID' => array(
			'data_type' => 'integer'
		),
		'PROVIDER_ID' => array(
			'data_type' => 'string'
		),
		'PROVIDER_TYPE_ID' => array(
			'data_type' => 'string'
		),
		'PROVIDER_GROUP_ID' => array(
				'data_type' => 'string'
		),
		'DIRECTION' => array(
			'data_type' => 'integer'
		),
		'IS_MEETING' => array(
			'data_type' => 'boolean',
			'expression' => array(
				'CASE WHEN %s = '.\CCrmActivityType::Meeting.' THEN 1 ELSE 0 END',
				'TYPE_ID'
			),
			'values' => array(0, 1)
		),
		'IS_CALL' => array(
			'data_type' => 'boolean',
			'expression' => array(
				'CASE WHEN %s = '.\CCrmActivityType::Call.' THEN 1 ELSE 0 END',
				'TYPE_ID'
			),
			'values' => array(0, 1)
		),
		'IS_CALL_IN' => array(
			'data_type' => 'boolean',
			'expression' => array(
				'CASE WHEN %s = '.\CCrmActivityType::Call.
				' AND %s = '.\CCrmActivityDirection::Incoming.' THEN 1 ELSE 0 END',
				'TYPE_ID', 'DIRECTION'
			),
			'values' => array(0, 1)
		),
		'IS_CALL_OUT' => array(
			'data_type' => 'boolean',
			'expression' => array(
				'CASE WHEN %s = '.\CCrmActivityType::Call.
				' AND %s = '.\CCrmActivityDirection::Outgoing.' THEN 1 ELSE 0 END',
				'TYPE_ID', 'DIRECTION'
			),
			'values' => array(0, 1)
		),
		'IS_TASK' => array(
			'data_type' => 'boolean',
			'expression' => array(
				'CASE WHEN %1$s = '.\CCrmActivityType::Task.' THEN 1
				 WHEN %1$s = ' . \CCrmActivityType::Provider . ' AND %2$s = \'' . Task::getId() . '\' THEN 1
				 ELSE 0 END',
				'TYPE_ID', 'PROVIDER_ID'
			),
			'values' => array(0, 1)
		),
		'IS_EMAIL' => array(
			'data_type' => 'boolean',
			'expression' => array(
				'CASE WHEN %s = '.\CCrmActivityType::Email.' THEN 1 ELSE 0 END',
				'TYPE_ID'
			),
			'values' => array(0, 1)
		),
		'IS_EMAIL_IN' => array(
			'data_type' => 'boolean',
			'expression' => array(
				'CASE WHEN %s = '.\CCrmActivityType::Email.
				' AND %s = '.\CCrmActivityDirection::Incoming.' THEN 1 ELSE 0 END',
				'TYPE_ID', 'DIRECTION'
			),
			'values' => array(0, 1)
		),
		'IS_EMAIL_OUT' => array(
			'data_type' => 'boolean',
			'expression' => array(
				'CASE WHEN %s = '.\CCrmActivityType::Email.
				' AND %s = '.\CCrmActivityDirection::Outgoing.' THEN 1 ELSE 0 END',
				'TYPE_ID', 'DIRECTION'
			),
			'values' => array(0, 1)
		),
		'OWNER_ID' => array(
			'data_type' => 'integer'
		),
		'OWNER_TYPE_ID' => array(
			'data_type' => 'integer'
		),
		'ASSOCIATED_ENTITY_ID' => array(
			'data_type' => 'integer'
		),
		'SUBJECT' => array(
			'data_type' => 'string',
			'save_data_modification' => array('\Bitrix\Main\Text\Emoji', 'getSaveModificator'),
			'fetch_data_modification' => array('\Bitrix\Main\Text\Emoji', 'getFetchModificator'),
		),
		'DESCRIPTION' => array(
			'data_type' => 'string',
			'save_data_modification' => array('\Bitrix\Main\Text\Emoji', 'getSaveModificator'),
			'fetch_data_modification' => array('\Bitrix\Main\Text\Emoji', 'getFetchModificator'),
		),
		'DESCRIPTION_TYPE' => array(
			'data_type' => 'integer',
		),
		'COMPLETED' => array(
			'data_type' => 'boolean',
			'values' => array('N', 'Y')
		),
		'IS_HANDLEABLE' => array(
			'data_type' => 'boolean',
			'values' => array('N', 'Y')
		),
		'RESPONSIBLE_ID' => array(
			'data_type' => 'integer'
		),
		'ASSIGNED_BY' => array(
			'data_type' => 'Bitrix\Main\User',
			'reference' => array('=this.RESPONSIBLE_ID' => 'ref.ID')
		),
		'PRIORITY' => array(
			'data_type' => 'integer'
		),
		'NOTIFY_TYPE' => array(
			'data_type' => 'integer'
		),
		'NOTIFY_VALUE' => array(
			'data_type' => 'integer'
		),
		'LOCATION' => array(
			'data_type' => 'string'
		),
		'CREATED' => array(
			'data_type' => 'datetime'
		),
		'DATE_CREATED_SHORT' => array(
			'data_type' => 'datetime',
			'expression' => array(
				$DB->datetimeToDateFunction('%s'), 'CREATED'
			)
		),
		'LAST_UPDATED' => array(
			'data_type' => 'datetime'
		),
		'LAST_UPDATED_SHORT' => array(
			'data_type' => 'datetime',
			'expression' => array(
				$DB->datetimeToDateFunction('%s'), 'LAST_UPDATED'
			)
		),
		'DATE_FINISHED_SHORT' => array(
			'data_type' => 'datetime',
			'expression' => array(
				'CASE WHEN %s = \'Y\' THEN '.$DB->datetimeToDateFunction('%s').' ELSE '.$datetimeNull.' END', 'COMPLETED', 'END_TIME'
			)
		),
		'START_TIME' => array(
			'data_type' => 'datetime'
		),
		'START_TIME_SHORT' => array(
			'data_type' => 'datetime',
			'expression' => array(
				$DB->datetimeToDateFunction('%s'), 'START_TIME'
			)
		),
		'END_TIME' => array(
			'data_type' => 'datetime'
		),
		'END_TIME_SHORT' => array(
			'data_type' => 'datetime',
			'expression' => array(
				$DB->datetimeToDateFunction('%s'), 'END_TIME'
			)
		),
		'DEADLINE' => array(
			'data_type' => 'datetime'
		),
		'PARENT_ID' => array(
			'data_type' => 'integer'
		),
		'THREAD_ID' => array(
			'data_type' => 'integer'
		),
		'URN' => array(
			'data_type' => 'string'
		),
		'ORIGIN_ID' => array(
			'data_type' => 'string'
		),
		'ORIGINATOR_ID' => array(
			'data_type' => 'string'
		),
		'AUTHOR_ID' => array(
			'data_type' => 'integer'
		),
		'AUTHOR_BY' => array(
			'data_type' => 'Bitrix\Main\User',
			'reference' => array('=this.AUTHOR_ID' => 'ref.ID')
		),
		'EDITOR_ID' => array(
			'data_type' => 'integer'
		),
		'EDITOR_BY' => array(
			'data_type' => 'Bitrix\Main\User',
			'reference' => array('=this.EDITOR_ID' => 'ref.ID')
		),
		'RESULT_STATUS' => array(
			'data_type' => 'integer'
		),
		'RESULT_STREAM' => array(
			'data_type' => 'integer'
		),
		'RESULT_SOURCE_ID' => array(
			'data_type' => 'string'
		),
		'RESULT_MARK' => array(
			'data_type' => 'integer'
		),
		'RESULT_VALUE' => array(
			'data_type' => 'integer'
		),
		'RESULT_SUM' => array(
			'data_type' => 'float'
		),
		'RESULT_CURRENCY_ID' => array(
			'data_type' => 'string'
		),
		'AUTOCOMPLETE_RULE' => array(
			'data_type' => 'integer'
		),
		'BINDINGS' => array(
			'data_type' => '\Bitrix\Crm\ActivityBindingTable',
			'reference' => array(
				'=this.ID' => 'ref.ACTIVITY_ID'
			),
			'join_type' => 'INNER',
		),
		'ELEMENTS' => array(
			'data_type' => '\Bitrix\Crm\ActivityElementTable',
			'reference' => array(
				'=this.ID' => 'ref.ACTIVITY_ID'
			),
			'join_type' => 'INNER',
		),
		'SEARCH_CONTENT' => array(
			'data_type' => 'string'
		),

		(new ArrayField('SETTINGS'))
			->configureSerializeCallback([self::class, 'serializeSettings'])
			->configureUnserializeCallback([self::class, 'unserializeSettings']),

		(new Entity\StringField('STORAGE_ELEMENT_IDS')),
			// ->configureSerializeCallback([self::class, 'serializeSettings'])
			// ->configureUnserializeCallback([self::class, 'unserializeSettings']),

		new TextField('PROVIDER_PARAMS', [
			'serialized' => true
		]),

		new Entity\IntegerField('STORAGE_TYPE_ID'),
	);
}