Удаление элементов или снятие активности при импорте данных из 1С — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
 
(не показаны 2 промежуточные версии 2 участников)
Строка 1: Строка 1:
 
  [[category:Интеграция с 1С]]
 
  [[category:Интеграция с 1С]]
 +
Актуально для 2.9.6
 +
 +
----
 +
 
В XSL-Шаблоне импорта xsl/import/commerceML2.xsl, в шаблоне "Товары/Товар", прописан следующий блок:
 
В XSL-Шаблоне импорта xsl/import/commerceML2.xsl, в шаблоне "Товары/Товар", прописан следующий блок:
 
<source lang="xml">
 
<source lang="xml">
Строка 8: Строка 12:
 
данные строки добавляют в узел <page> атрибут is-deleted="1" в том случае, если в системе 1С для какого либо элемента (раздел, номенклатура) была поставлена "Пометка удаления". В итоге, при обработке данных, UMI.CMS помеченный элемент переместит в "Корзину", но он по прежнему будет существовать в системе и при повторном импорте данных, помещенный элемент в корзину будет обновляться. Для полного удаления элемента его необходимо удалить из Корзины.
 
данные строки добавляют в узел <page> атрибут is-deleted="1" в том случае, если в системе 1С для какого либо элемента (раздел, номенклатура) была поставлена "Пометка удаления". В итоге, при обработке данных, UMI.CMS помеченный элемент переместит в "Корзину", но он по прежнему будет существовать в системе и при повторном импорте данных, помещенный элемент в корзину будет обновляться. Для полного удаления элемента его необходимо удалить из Корзины.
  
 +
Некоторые версии 1С передают статус "Удален" не как отдельный элемент <Статус>Удален</Статус> в xml-дереве товара, а как атрибут у элемента <Товар Статус="Удален">. В этом случае для удаления товара при импорте из 1С, если он помечене на удаление, нужно в скопировать темплейт <xsl:template match="Товары/Товар"> из файла /xsl/import/commerceML2.xsl в файл /xsl/import/custom/commerceML2.xsl и добавить после условия
 +
<source lang="xml">
 +
<xsl:if test="Статус = 'Удален'">
 +
<xsl:attribute name="is-deleted">1</xsl:attribute>
 +
</xsl:if>
 +
</source>
 +
 +
дополнительное условие
 +
<source lang="xml">
 +
<xsl:if test="@Статус='Удален'">
 +
<xsl:attribute name="is-deleted">1</xsl:attribute>
 +
</xsl:if>
 +
</source>
  
 
В некоторых случаях, требуется не удаления элемента в корзину, а изменение его активности, т.е. установления статуса "Не активен". Для этого необходимо весь шаблон "Товары/Товар" скопировать в файл xsl/import/custom/commerceML2.xsl, в корневой узел <stylesheet>. И потом изменить строчку:
 
В некоторых случаях, требуется не удаления элемента в корзину, а изменение его активности, т.е. установления статуса "Не активен". Для этого необходимо весь шаблон "Товары/Товар" скопировать в файл xsl/import/custom/commerceML2.xsl, в корневой узел <stylesheet>. И потом изменить строчку:
<pre>
+
<source lang="xml">
 
<xsl:attribute name="is-deleted">1</xsl:attribute>
 
<xsl:attribute name="is-deleted">1</xsl:attribute>
</pre>
+
</source>
 
на:
 
на:
<pre>
+
<source lang="xml">
 
<xsl:attribute name="is-active">0</xsl:attribute>
 
<xsl:attribute name="is-active">0</xsl:attribute>
</pre>
+
</source>
 +
 
 +
Если Вы хотите, чтобы товары, помеченные как удаленные, не попадали в корзину, а сразу удалялись из системы, то можете применить решением из статьи [[Удаление_товаров_из_системы_при_импорте]].

Текущая версия на 11:15, 25 декабря 2015

Актуально для 2.9.6


В XSL-Шаблоне импорта xsl/import/commerceML2.xsl, в шаблоне "Товары/Товар", прописан следующий блок:

<xsl:if test="Статус = 'Удален'">
  <xsl:attribute name="is-deleted">1</xsl:attribute>
</xsl:if>

данные строки добавляют в узел <page> атрибут is-deleted="1" в том случае, если в системе 1С для какого либо элемента (раздел, номенклатура) была поставлена "Пометка удаления". В итоге, при обработке данных, UMI.CMS помеченный элемент переместит в "Корзину", но он по прежнему будет существовать в системе и при повторном импорте данных, помещенный элемент в корзину будет обновляться. Для полного удаления элемента его необходимо удалить из Корзины.

Некоторые версии 1С передают статус "Удален" не как отдельный элемент <Статус>Удален</Статус> в xml-дереве товара, а как атрибут у элемента <Товар Статус="Удален">. В этом случае для удаления товара при импорте из 1С, если он помечене на удаление, нужно в скопировать темплейт <xsl:template match="Товары/Товар"> из файла /xsl/import/commerceML2.xsl в файл /xsl/import/custom/commerceML2.xsl и добавить после условия

<xsl:if test="Статус = 'Удален'">
<xsl:attribute name="is-deleted">1</xsl:attribute>
</xsl:if>

дополнительное условие

<xsl:if test="@Статус='Удален'">
<xsl:attribute name="is-deleted">1</xsl:attribute>
</xsl:if>

В некоторых случаях, требуется не удаления элемента в корзину, а изменение его активности, т.е. установления статуса "Не активен". Для этого необходимо весь шаблон "Товары/Товар" скопировать в файл xsl/import/custom/commerceML2.xsl, в корневой узел <stylesheet>. И потом изменить строчку:

<xsl:attribute name="is-deleted">1</xsl:attribute>

на:

<xsl:attribute name="is-active">0</xsl:attribute>

Если Вы хотите, чтобы товары, помеченные как удаленные, не попадали в корзину, а сразу удалялись из системы, то можете применить решением из статьи Удаление_товаров_из_системы_при_импорте.