Выгрузка из 1С информации по складам
Материал из Umicms
Версия от 08:59, 20 декабря 2019; Aposio (обсуждение | вклад)
Актуально для версии 20.
Содержание
Задача
Импортировать из 1С в карточки товара информацию о количестве на складах из тегов:
<Склад ИдСклада="6257b501-c90c-11e2-bd93-001e67494c74" КоличествоНаСкладе="84"/>
<Склад ИдСклада="885f414e-4d67-11e5-ac2e-001e67494c75" КоличествоНаСкладе="20"/>
Решение
Добавляем шаблон в файл /xsl/import/custom/commerceML2.xsl
<xsl:template match="ПакетПредложений">
<objects>
<xsl:for-each select="Склады/Склад">
<object id="{Ид}" type-id="81" name="{Наименование}" /> <!-- type-id - идентификатор справочника "Склад" -->
</xsl:for-each>
</objects>
<pages>
<xsl:apply-templates select="Предложения/Предложение" />
</pages>
<options>
<xsl:apply-templates select="Предложения/Предложение" mode="stores_state" />
</options>
</xsl:template>
<xsl:template match="Предложения/Предложение" mode="stores_state">
<entity page-id="{Ид}" field-name="stores_state">
<xsl:for-each select="Склад">
<option int="{@КоличествоНаСкладе}" float="0" object-id="{@ИдСклада}" />
</xsl:for-each>
</entity>
</xsl:template>
Добавляем в базу данных запись в таблицу cms3_import_types:
INSERT INTO `cms3_import_types` (`source_id`, `old_id`, `new_id`)
VALUES ('5', '71', '71');
Для source_id нужно указать id записи из таблицы cms3_import_sources, где source_name имеет значение 'commerceML2'. Получить это значение можно запросом:
SELECT id FROM cms3_import_sources WHERE source_name = 'commerceML2';
Для `old_id` и `new_id` нужно указать идентификатор справочника "Склад".