UMIhelp

Разработка сайта на UMI.CMS => Настройка системы и модулей => Тема начата: AlexMc от 17 Апреля 2012, 01:27:44

Название: Импорт из 1С
Отправлено: AlexMc от 17 Апреля 2012, 01:27:44
Вопрос по расположению данных при импорте из 1С. Импорт идет, данные транслируются. Но при этом для демосайта ( demodizzy ) данные попадают не в существующий каталог, а создается новый. Заставить писать в один каталог не удалось.
И в догонку - если ставить новый сайт без демо  и импортировать туда данные, то запись файлов ( import.xml и offer.xml ) происходит, но каталог при этом не создается.
Настройки в config.ini менять пробовал, но это не принесло результата. Топик про ихменение commerceML2 читал, тоже не помогло. Хотелось бы понять эти тонкости
Название: Re:Импорт из 1С
Отправлено: KTI от 18 Апреля 2012, 15:19:29
Я тоже не до конца понял, но мне кажется, что привязка идет по "Ид" классификатора. я не заморачивался, удалил демокаталог, и загрузил свой, и обозвал его так-же (например shop)
Потом все выгрузки идут в этот каталог (если "Ид не поменяешь")

то запись файлов ( import.xml и offer.xml ) происходит, но каталог при этом не создается.
попробуй очисти корзину, этот каталог может там лежать
Название: Re:Импорт из 1С
Отправлено: AlexMc от 18 Апреля 2012, 21:20:14
Ну, во первых, я не хочу удалять каталог, я хочу разобраться в причинах, почему так происходит. Во вторых - для сайта без демо - в корзину заглянул, хоть и незачем - она пустая, там ничего и не может быть.
Я в итоге то разберусь, но откровенно жаль времени, потому как документация преотвратно написана. Отдельные проблески не в счет.
Название: Re:Импорт из 1С
Отправлено: KTI от 19 Апреля 2012, 15:50:25
Не понимаю зачем нужен демокаталог, в конце концов его можно не удалять, а просто сделать не активным.
Привязка корневого каталога идет по ИД каталога.
Ваша выгрузка в любом случае будет с другим ИД, и поэтому создается другой корневой каталог.
Во вторых можно перенести (мышкой) ваши товары (вернее группы) в нужный вам каталог, тогда при следующей выгрузке, те товары которые перенесли будут там обновляться, а новые создаваться в прежнем каталоге.
В общем, товар ищется по всей базе, и там где его находит, там и обновляет. Если не находит, то ищет каталог (по ИД),  если не находит, то создает новый.

Каталог (новый) не создается, потому, что он нашел этот товар в другом разделе (каталоге), в том числе и в корзине, или в любом другом разделе. Можно "нечайно" мышкой перенести его куда нибудь, и потом долго думать почему не создается каталог.
Как-то так, если что спрашивай, на счет документации согласен
PS в config.ini никаких настоек по импорту нет, кроме управления видимостью и активностью по умолчанию
кстати, вы где не видите каталог? в меню не сайте или в админке в структуре.
Название: Re:Импорт из 1С
Отправлено: AlexMc от 19 Апреля 2012, 19:59:20
По импорту. На момент "запихивания" файлов в import.xml и offer.xml я ИД каталога не нашел. Значит, за это отвечает обработка comerceML2, а, значит, есть способ привязать выгрузку уже к существующему каталогу. Будут у кого идеи - буду пробовать чужие идеи, а пока свои варианты перебираю понемногу - выход найдется.
По второму моменту - вероятно, я не точно все объяснил. Я пробовал сделать импорт на сайт, который поставлен вообще без демок. То есть там нет никакого дополнительного кода и шаблонов. Если следовать логике, то после импорта в админке должен появиться новый каталог со всеми необходимыми свойствами. Но он не появляется. Причина - возможно нужен еще какой-то шаблон, либо нужно менять существующий. Ошибок в 1С не попадает - с точки зрения системы - все корректно.
По документации - после первого развернутого сайта видимо придется писать свою. Идея сделать CMS через XSLT действительно хороша, тем более, что тут получается 3 в одном - и TPL, и API, и XSLT.
В принципе, можно на XSLT забить и решить все вопросы через API, да еще и свою базу добавить - но пока есть желание выяснить, насколько поддатливым будет сама CMS. Время покажет.
 
Название: Re:Импорт из 1С
Отправлено: KTI от 20 Апреля 2012, 07:46:41
На момент "запихивания" файлов в import.xml и offer.xml я ИД каталога не нашел.
Не совсем понятно про что речь, где вы искали этот ИД. Он должен быть в  import.xml. В нем должно быть, что-то типа:

<Каталог СодержитТолькоИзменения="false">
  <Ид>70bf2ec1-87dc-4acd-8777-7a12cd56158c</Ид>
  <ИдКлассификатора>70bf2ec1-87dc-4acd-8777-7a12cd56158c</ИдКлассификатора>
  <Наименование>Каталог товаров</Наименование>

Вот по этому ИД и ищется каталог, если не находит создает новый с названием в теге <Наименование>
Узнать ИД каталога можно открыв любой товар (есс-но в этом каталоге) и посмотреть поле "Идентификатор каталога 1С". Теперь если сделать выгрузку с этим ИД, то товар попадет в этот каталог.
Значит, за это отвечает обработка comerceML2, 
Нет, обработка отвечает только за "перевод" данных в формате comerceML2 во внутренний формат umiDump 2.0 (тоже xml). Это просто шаблон, а за создание базы данных отвечают уже внутренние механизмы umi
Название: Re:Импорт из 1С
Отправлено: admin от 22 Апреля 2012, 11:35:38
AlexMC, если я правильно понял суть ваших действий,  то вы хотите иметь возможность задать системе правило, при котором все импортирующиеся разделы, подразделы и товары создавались внутри какого-то уже существующей страницы с типом данных "Раздел каталога".

Покопавшись немного в файле который преобразует cml в umidump2.0 можно увидеть что головной раздел в любом случае будет создаваться. Это видно из следующих строчек:

головной шаблон нового umidump20 файла выглядит так:
<xsl:template match="/">

<umidump xmlns:xlink="http://www.w3.org/TR/xlink" version="2.0">
<xsl:apply-templates select="КоммерческаяИнформация/Классификатор" />
<xsl:apply-templates select="КоммерческаяИнформация/Каталог" />

<xsl:apply-templates select="КоммерческаяИнформация/ПакетПредложений" />

<xsl:if test="count(КоммерческаяИнформация/Документ)">
<xsl:apply-templates select="КоммерческаяИнформация" mode="document" />
</xsl:if>
</umidump>

</xsl:template>
в нем мы видим вызов шаблонов для создание umidump20 записей для каталога <xsl:apply-templates select="КоммерческаяИнформация/Каталог" />

разбираясь дальше, мы видим что следующий шаблон выглядит так
<xsl:template match="Каталог">
<pages>
<!-- groups -->
<!-- catalog root -->
<page id="{$catalog-id}" type-id="root-catalog-category-type">
<default-active><xsl:value-of select="$catalog_rubric_activity" /></default-active>
<default-visible><xsl:value-of select="$catalog_rubric_visible" /></default-visible>
<basetype module="catalog" method="category">Разделы каталога</basetype>
<name><xsl:value-of select="Наименование" /></name>

<xsl:if test="string-length($catalog_rubric_template)">
<default-template><xsl:value-of select="$catalog_rubric_template" /></default-template>
</xsl:if>

<properties>
<group name="common">
<title>Основные параметры</title>
<property name="title" type="string">
<title>Поле TITLE</title>
<value><xsl:value-of select="Наименование" /></value>
</property>
<property name="h1" type="string">
<title>Поле H1</title>
<value><xsl:value-of select="Наименование" /></value>
</property>
</group>
</properties>
</page>

<xsl:apply-templates select="/КоммерческаяИнформация/Классификатор/Группы" mode="groups" />

<!-- goods -->
<xsl:apply-templates select="Товары/Товар" />
</pages>
</xsl:template>

здесь мы видим <page id="{$catalog-id}" type-id="root-catalog-category-type"> что является началом создания того самого корневого раздела каталога, который и будет создаваться в любом случае.

P.S. Опишите подробнее, что именно произошло когда вы сделали выгрузку из 1с в систему без демо сайта. Не создалось вообще ничего или не создался только корневой каталог, а вре подразделы (группы номенклатур) и товары появились? Как до и после импорта выглядел список типов данных (в частности интересует типы данных "Раздел каталога", "Объект каталога" и дочерние к ним типы). Импорт происходил из самой 1с или имитировался через модуль "Обмен данными" используя файл import.xml?
Название: Re:Импорт из 1С
Отправлено: KTI от 23 Апреля 2012, 13:57:46
здесь мы видим <page id="{$catalog-id}" type-id="root-catalog-category-type"> что является началом создания того самого корневого раздела каталога, который и будет создаваться в любом случае.

он (корневой раздел каталога) будет создаваться (в любом случае) только в выходном файле (в формате umiDump2), потом идет импорт из этого файла в базу данных. И если такой каталог (с этим id) существует, то он просто обновляется, не создается. А товары и разделы обновляются и создаются в соответствии с ИдРодителя.
Название: Re:Импорт из 1С
Отправлено: admin от 23 Апреля 2012, 14:21:20
Спасибо KTI, действительно не написал, что все описанное мною касается первого импорта (или импорта после того как вы удалили из структуры и из корзины то что собираетесь импортировать), потом все созданные при импорте разделы, подразделы и товары связанны по id