Здравствуйте. Я так понимаю, у вас товары появилис

Здравствуйте. Я так понимаю, у вас товары появились не из импорта? То есть товары уже есть на сайте, и вы решили к этому прикрутить modImporter?

Смотрите, вот файл для примера: https://gist.github.com/Fi1osof/5e8cc4fb684c474db87f#file-processor-class-php-L184

В нем два важных метода:

  1. StepWriteTmpGoods (это первичная запись данных товаров в таблицу).
  2. StepImportUpdateGoods (непосредственно обновление товаров).

Есть еще StepImportCreateGoods (создание товаров), вот его вы можете использовать для записи в лог каких товаров нет в БД, так как в момент вызова этого метода во временной таблице останутся только необновленные товары (то есть для которых нет товаров на сайте).

Теперь к сути: у вас в качестве ключа используется 1С-артикул, но по умолчанию modMonitor использует externalKey. Тем не менее, это совсем не проблема, externalKey ему не обязателен, связка товаров может быть реализована по любой кастомной логике. В вашем случае, для начала, надо артикул записать в качестве externalKey во временную таблицу (на уровне метода StepWriteTmpGoods). Смотрите, в StepImportUpdateGoods есть данные артикула.

            $article = $raw_data['Артикул'];
            $pagetitle = $tmp_object->tmp_title;
            $alias = "{$pagetitle}";
            
            $data = array(
                "class_key" => 'msProduct',
                "published" => 1,
                "isfolder"  => 0,
                "template"  => $good_template_id,
                "parent"    => $tmp_object->parent,
                "externalKey" => $tmp_object->tmp_external_key,
                "article" => $article,
                "pagetitle" => $pagetitle,
                "alias"     => $alias,
                "content" => !empty($raw_data['Описание']) ? $raw_data['Описание'] : '',
                "vendor" => $tmp_object->vendor_id,
            );

В методе 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-файл или что?