• Модуль: timeman
  • Путь к файлу: ~/bitrix/modules/timeman/lib/monitor/history/entity.php
  • Класс: BitrixTimemanMonitorHistoryEntity
  • Вызов: Entity::record
static function record($entities): array
{
	$publicCodes = array_column($entities, 'PUBLIC_CODE');

	$existingEntities = MonitorEntityTable::getList([
		'select' => [
			'ENTITY_ID' => 'ID',
			'TYPE',
			'TITLE',
			'PUBLIC_CODE',
		],
		'filter' => [
			'@PUBLIC_CODE' => $publicCodes,
		]
	])->fetchAll();

	$existingPublicCodes = array_column($existingEntities, 'PUBLIC_CODE');

	$newCodes = self::findNewCodes($publicCodes, $existingPublicCodes);

	$newEntities = [];
	foreach ($entities as $entity)
	{
		if (in_array($entity['PUBLIC_CODE'], $newCodes, true))
		{
			$newEntities[] = $entity;
		}
	}

	foreach ($newEntities as $index => $newEntity)
	{
		$entityAddResult = MonitorEntityTable::add([
			'TYPE' => $newEntity['TYPE'],
			'TITLE' => $newEntity['TITLE'],
			'PUBLIC_CODE' => $newEntity['PUBLIC_CODE']
		]);

		if ($entityAddResult->isSuccess())
		{
			$newEntities[$index]['ENTITY_ID'] = $entityAddResult->getId();
		}
	}

	return array_merge($existingEntities, $newEntities);
}