Задать вопрос
@sevnet
Системный аналитик, бизнес-консультант

Как написать на PHP автоматическое объединение дублей объектов CRM?

Хочу в PHP коде сделать автоматическое объединение дублей, ни как не могу разобраться в работе методов классов
\Bitrix\Crm\Merger
\Bitrix\Crm\Integrity

Сам абстрактный класс \Bitrix\Crm\Merger\EntityMerger имеет функцию merge, в которую необходимо передать 3 параметра, первые 2 это ID сущностей CRM, а вот что передавать в третий (" Integrity\DuplicateCriterion $targCriterion") ни как не пойму... Что это вообще такое и что в него передать? Подскажите примером, что это и как пользоваться?
И второй вопрос, если у меня не 2, а более 2х дубликатов как действовать? Функция то подразумевает всего 2 ID для объединения, хотя на фронт энде можно и больше 2х дубликатов объединять...

/**
	 * Merge entities.
	 * @param int $seedID Seed entity ID.
	 * @param int $targID Target entity ID.
	 * @param Integrity\DuplicateCriterion $targCriterion Criterion.
	 * @return void
	 * @throws EntityMergerException
	 * @throws Main\ArgumentException
	 * @throws Main\LoaderException
	 * @throws Main\NotImplementedException
	 */
	public function merge($seedID, $targID, Integrity\DuplicateCriterion $targCriterion)
  • Вопрос задан
  • 56 просмотров
Подписаться 1 Средний 1 комментарий
Решения вопроса 1
@sevnet Автор вопроса
Системный аналитик, бизнес-консультант
EntityMerger абстрактный класс. Надо вызывать его дочерний класс ContactMerger

$typeID = Crm\Integrity\DuplicateIndexType::PERSON;
$matches = array('NAME' => '');
$criterion = Crm\Integrity\DuplicateManager::createCriterion($typeID, $matches);
$Merger = new Crm\Merger\ContactMerger( 1);
try
{
$Merger->merge(168516, 168515, $criterion);
}
catch(Crm\Merger\EntityMergerException $e)
{
$errorMessage = $e->getLocalizedMessage();
}
catch(\Exception $e)
{
$errorMessage = $e->getMessage();
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы