Есть еще StepImportCreateGoods (создание товаров), вот его вы можете использовать для записи в лог каких товаров нет в БД, так как в момент вызова этого метода во временной таблице останутся только необновленные товары (то есть для которых нет товаров на сайте).
Теперь к сути: у вас в качестве ключа используется 1С-артикул, но по умолчанию modMonitor использует externalKey. Тем не менее, это совсем не проблема, externalKey ему не обязателен, связка товаров может быть реализована по любой кастомной логике. В вашем случае, для начала, надо артикул записать в качестве externalKey во временную таблицу (на уровне метода StepWriteTmpGoods). Смотрите, в StepImportUpdateGoods есть данные артикула.
В методе StepWriteTmpGoods надо просто заменить строчку
$id=(string)$xml->Ид;
на
$id=(string)$xml->Артикул;
Таким образом во временной таблице у вас в качестве ключа будет на 1С-ключ системный, а Артикул.
А в методе StepWriteTmpGoods надо заменить строчку
$q->innerJoin("modResource","resource","resource.template = {$good_template_id} AND resource.externalKey = {$alias}.tmp_external_key");
на
/*
Этот код надо перепроверить. Назначение - поиск минишоп-товара по артикулу.
*/$q->innerJoin("msProductData","ProductData","ProductData.article = {$alias}.tmp_external_key");$q->innerJoin("modResource","resource", "resource.id = ProductData.id;
В итоге у вас должно происходить обновление товаров по артикулу, а не 1С-ключу. Конечно, все это вам для примера, и придется покопаться с кодом, но повторюсь, проблемы в целом нет никакой, задача вполне реализуемая.
P.S. Вопрос еще в формате импорта. У вас XML-файл или что?