Очистка справочника Незарегистрированный покупатель по cron

Материал из Umicms
Перейти к:навигация, поиск

Актуально для версии 20

Задача

Проводить очистку справочника "Незарегистрированный покупатель" при запуске cron.

Решение

В первую очередь, нам необходимо назначить обработчик события запуска cron в файле ~/classes/components/config/custom_events.php (если файла нет - необходимо создать его). Обработчик назначается таким образом:

<?php 
	new umiEventListener('cron', 'config', 'deleteUnregisteredCustomers');

Затем нам нужно описать функцию, которая будет очищать справочник. В файле ~/classes/components/config/customMacros.php создаём функцию, которую мы назначили на обработку события запуска cron. В нашем случае это функция deleteUnregisteredCustomers, выглядит она вот так:

public function deleteUnregisteredCustomers(iUmiEventPoint $e)
{
	if ($e->getMode() == 'process') {
		// Получить объекты справочника
		$unregisteredCustomersData = umiObjectsCollection::getInstance()->getGuidedItems(<здесь нужно указать идентификатор справочника>);
 
		// Массив содержит значения вида идентификатор => значение
		$ids = array_keys($unregisteredCustomersData);
		$objectsCollection = umiObjectsCollection::getInstance();
		// Проходимся по всем найденным объектам в справочнике "Незарегистрированный покупатель" и удаляем их
		// Тут можно настроить кол-во удаляемых за раз объектов, заменив foreach на for и указав ограничения
		foreach($ids as $id)
		{
			$objectsCollection->delObject($id);
		}
	}
}

Обратите внимание, что в функции необходимо указать идентификатор справочника "Незарегистрированный покупатель", а не какого-либо другого, иначе можно удалить другие, возможно, нужные Вам данные другого справочника. Идентификатор справочника Вы можете узнать, открыв справочник "Незарегистрированный покупатель" для просмотра и посмотрев последнее число в адресной строке. В нашем случае это число 88:

Screenshot 10.png

После всех этих действий справочник "Незарегистрированный покупатель" будет очищаться каждый раз по запуску cron.