Выгрузка из 1С информации по складам — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «'''Актуально 18''' Если Вы хотите чтобы из 1С в систему выгружалась информация из тегов: <source…»)
 
 
(не показано 5 промежуточных версий 4 участников)
Строка 1: Строка 1:
'''Актуально 18'''
+
'''Актуально для версии 20.'''
  
Если Вы хотите чтобы из 1С в систему выгружалась информация из тегов:
+
== Задача ==
 +
Импортировать из 1С в карточки товара информацию о количестве на складах из тегов:
 
<source lang='xml'>
 
<source lang='xml'>
 
<Склад ИдСклада="6257b501-c90c-11e2-bd93-001e67494c74" КоличествоНаСкладе="84"/>
 
<Склад ИдСклада="6257b501-c90c-11e2-bd93-001e67494c74" КоличествоНаСкладе="84"/>
Строка 7: Строка 8:
 
</source>
 
</source>
  
То вам необходимо добавить следующий шаблон в файл /xsl/import/custom/commerceML2.xsl
+
== Решение ==
 +
===Добавляем шаблон в файл /xsl/import/custom/commerceML2.xsl===
 
<source lang='xml'>
 
<source lang='xml'>
 
<xsl:template match="ПакетПредложений">
 
<xsl:template match="ПакетПредложений">
 
<objects>
 
<objects>
 
<xsl:for-each select="Склады/Склад">
 
<xsl:for-each select="Склады/Склад">
<object id="{Ид}" type-id="81" name="{Наименование}" />
+
<object id="{Ид}" type-id="81" name="{Наименование}" /> <!-- type-id - идентификатор справочника "Склад" -->
 
</xsl:for-each>
 
</xsl:for-each>
 
</objects>
 
</objects>
Строка 19: Строка 21:
 
</pages>
 
</pages>
 
<options>
 
<options>
      <entity page-id="{Предложения/Предложение/Ид}" field-name="stores_state">
+
<xsl:apply-templates select="Предложения/Предложение" mode="stores_state" />
<xsl:for-each select="Предложения/Предложение/Склад">
 
<option int="{@КоличествоНаСкладе}" float="0" object-id="{@ИдСклада}" />
 
</xsl:for-each>
 
</entity>
 
 
   </options>
 
   </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>
 
</xsl:template>
 
</source>
 
</source>
[[category:Интеграция с 1С]]
+
 
 +
===Добавляем в базу данных запись в таблицу cms3_import_types:===
 +
<source lang='sql'>
 +
INSERT INTO `cms3_import_types` (`source_id`, `old_id`, `new_id`)
 +
VALUES ('5', '71', '71');
 +
</source>
 +
 
 +
Для source_id нужно указать id записи из таблицы cms3_import_sources, где source_name имеет значение 'commerceML2'. Получить это значение можно запросом:
 +
<source lang='sql'>
 +
SELECT id FROM cms3_import_sources WHERE source_name = 'commerceML2';
 +
</source>
 +
 
 +
Для `old_id` и `new_id` нужно указать идентификатор справочника "Склад".
 +
 
 +
[[category:Интеграция с 1С]]

Текущая версия на 08:59, 20 декабря 2019

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