Техническая сторона импорта данных из 1С

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

Перед выполнением обмена данными с Web-сайтом, можно настроить параметры импорта в конфигурационном файле config.ini (секция modules): [1]

Настройки позволяют указать:

  • будут ли активными разделы каталога или объекты, при создании их в системе.
  • какой шаблон будет назначен для объектов и разделов, указывается имя файла, допустим, inner.tpl или default.xsl.
  • какая Цена будет использоваться, актуально если в 1С у вас несколько цен, допустим Оптовая, Розничная, Мелко оптовая, и т.д.
  • видимость в меню создаваемых разделов каталога и объектов.


1. Подготовка данных. Когда сценарий обмена данными с Web-сайтом настроен и запущена команда «Выполнить обмен», система 1С подготавливает данные для отправки, во временной директории операционной системы пользователя. В директории хранятся исходные данные, разбитые на равные части, по 100Кб. Это части фалов import.xml, offers.xml и изображений (в случае если размер изображения более 100Кб). Для изучения, файлы import.xml и offers.xml можно получить, выбрав тип обмена данных «Выгрузка в каталог», а не «Выгрузка на сайт». В файле import.xml хранятся основные данные по каждой номенклатурной позиции, свойства, расположение в группе, наименование и др. В файле offers.xml сохраняются цены для каждой номенклатуры, их может быть несколько для одного элемента.


2. Передача данных. Далее, с использованием открытого протокола обмена данными ([2]) происходит отправка данных на сервер где установлена UMI.CMS. Управляющий метод auto() находится файле classes/modules/exchange/__auto.php. Метод принимает данные разбитые на части, собирает их постепенно в единое целое, сохраняя в определенных директориях. В папке sys-temp/1c_import/ собираются файлы import.xml и offers.xml. В папке /images/cms/data/ сохраняются изображения, обычно это папка import_files, в которой находятся вложенные папки с изображениями. В 1С, с помощью визуального интерфейса вы видите как на сервер, по частям, отправляются все данные.


3. Обработка данных. Как только все данные в UMI.CMS получены, происходит обработка полученных данных и непосредственно их импорт. Сначала обрабатывается xml-файл import.xml. По определенной логике считывается 25-ть элементов данных из файла, полученная структура преобразуется во внутренний формат системы UMIDump2.0 ([3]). Для конвертации xml данных используется шаблон /xsl/import/commerceML2.xsl и /xsl/import/custom/commerceML2.xsl. Xsl шаблон в папке custom используется в том случае, если необходимо поменять стандартный механизм преобразовании данных, допустим если вам надо импортировать не одну Цену товара, а сразу все [4]. Шаблон в папке custom не затирается при обновлении системы. После преобразования порции xml-данных в UMIDump2.0, происходит импорт полученных данных в систему. Постепенно происходит обработка всего файла import.xml, далее идет очередь за offers.xml.


4. Результаты импорта. После импорта данных на сайт, в структуре сайта появляются разделы каталога с объектами из 1C, а в модуле «Шаблоны данных», создаются дочерние типы данных по отношению к типу «Объект каталога», иерархия типов повторяет структуру разделов с элементами номенклатуры в 1С. Как можно изменить стандартное поведение системы, связанное с созданием Типа Данных на каждый Раздел Каталога описано в данной статье: [5]

При удалении, какого либо раздела или объекта каталога в корзину, он продолжает существовать в системе и его данные будут обновляться при повторном импорте. Для полноценного удаления раздела или объекта каталога, необходимо произвести удаление из корзины.

После импорта данных, разделы можно распределить по сайту на свое усмотрение, даже можно переместить раздел в другой домен той же системы, необходимая связь все равно сохранится и данные будут обновляться, также как и добавляться новые объекты каталога. Это достигается за счет того, что в базе данных, в таблице cms3_import_relations прописано соответствие между id раздела в 1С и id в UMI.CMS. Происходит импорт в тот же самый раздел, не важно где он находится, главное чтобы он существовал. В той же таблице прописаны соответствия element_id номенклатурных позиций в 1С и объектов каталога в UMI.CMS.