Удаление элементов или снятие активности при импорте данных из 1С — различия между версиями
Danil (обсуждение | вклад) |
Alexei (обсуждение | вклад) |
||
(не показаны 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>. И потом изменить строчку: | ||
− | < | + | <source lang="xml"> |
<xsl:attribute name="is-deleted">1</xsl:attribute> | <xsl:attribute name="is-deleted">1</xsl:attribute> | ||
− | </ | + | </source> |
на: | на: | ||
− | < | + | <source lang="xml"> |
<xsl:attribute name="is-active">0</xsl:attribute> | <xsl:attribute name="is-active">0</xsl:attribute> | ||
− | </ | + | </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>
Если Вы хотите, чтобы товары, помеченные как удаленные, не попадали в корзину, а сразу удалялись из системы, то можете применить решением из статьи Удаление_товаров_из_системы_при_импорте.