Выгрузка из 1С информации по складам

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

Актуально для версии 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` нужно указать идентификатор справочника "Склад".