Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Разработка расширений / TYPO3 extension development (http://forum.typo3.ru/forumdisplay.php?f=38)
-   -   Интеграция с Typo3 (CommerceML, CML, XML, 1С) (http://forum.typo3.ru/showthread.php?t=5945)

azukari 02.03.2008 18:12

Интеграция с Typo3 (CommerceML, CML, XML, 1С)
 
Привет всем.

Немного истории

Потребовалось мне замутить интеграцию 1С и Тайпо3. Я поспрашивал среди ребят, как кто с этим сталкивался. Делом откликнулся Паша Антонов, подарил свой бэкенд модуль для обработки формата XML по стандарту CommerceML и внесения данных в базу, за что ему благодарность, уважение и их воплощение в виде моего интересного расширения. Теперь о главном.

Bodytext

Я начал адаптировать расширение к своим нуждам. Короче говоря, получился у меня модуль для внесения в БД Тайпо3 любого массива данных в формате XML.

Я бы хотел поделиться этим расширением с сообществом, дабы нам всем вместе сделать его более универсальным, богатым всякими возможностями и примочками. Что же мы имеем сейчас?

Расширение

Сейчас расширение представляет из себя be-модуль, который берет входящий файл XML и на основе админской конфигурации вносит изменения в БД. Рассмотрим, что же поддерживает модуль. Я буду говорить применительно к 1С, но это может быть любая программа, способная экспортировать данные в XML.

Поддерживается внесение нескольких таблиц с внешними ключами. То есть на основе внешних ключей можно создавать связи между таблицами.

Поддерживаются дополнительные ключи. Например, в 1С записи стыкуются по полю, скажем, xmlid. На основе полученных с помощью этого поля связей модуль проставляет соответствующие pid товарам на страницах.

Поддерживается еще вот такая фигня. Например есть в 1С таблица, которая в БД Тайпо3 не нужна. Но с ней есть связь, например, товаров и какому-то полю в таблице товаров следует задать значение определенного поля связанной записи во внешней таблице.

Поддерживается предпроцессинг существующих записей. Например, всем существующим записям, которым больше 1 месяца, проставить поле hidden=1, скрыть.

Поддерживается постпроцессинг. То есть полученная структура данных со связями и иерархией отдается пользовательской функции, которая может эти данные модифицировать как угодно.

Поскольку мне достался нормальный такой XML на примерно 25 тыс. записей, его парсинг пришлось сделать поэтапным. То есть запускаешь модуль и он там шарашит и информаирует, что он сейчас конкретно делает.

Все действия держатся в сессиях и внутренних файлах. То есть если во время парсинга у вас вырубится интернет, ничего страшного - через пару минут (или через месяц) вы придете и продолжите работу. Возможно есть и другие решения например запуск cli-скрипта по крону или без крона.

Чего не хватает?

Не хватает гибкости предпроцессинга. Не хватает четкости в обслуживании сессий и временных файлов. Нет поддержки М-М отношений.

Что будем делать?

Будем фигачить. Для этого предлагаю воспользоваться ресурсом assembla.com, который предоставляет SVN, tickets, wiki и другие полезные в разработке сервисы.

Сейчас пытаюсь найти время чтобы залить модуль в SVN, дабы широкая общественность получила в нему доступ и соответственно попыталась улучшить ситуацию.

UPD

Я выложил версию xml_import

Проект
http://www.assembla.com/spaces/xml_import

SVN
http://svn2.assembla.com/svn/xml_import

На данный момент образец xml предоставить не могу, да и оригинальный не нужен такой - файл весит 11мб. Зато образец конфигурации лежит в doc/ Этот файл надо включить в localconf.php

Все желающие пишут сюда свои логины assembla и получают доступ на запись.

filippoff 28.03.2008 22:38

а как насчёт организации прямого взаимодествия typo3 с базой 1С?

azukari 29.03.2008 00:07

Цитата:

Сообщение от filippoff (Сообщение 18095)
а как насчёт организации прямого взаимодествия typo3 с базой 1С?

Посмотреть надо. Честно говоря по 1С даже по форматам экспорта материалов маловато. Ни примеров, ни человеческого объяснения, ни мануалов, нихрена. Не думаю, что с протоколами взаимодействия дела обстоят лучше.

filippoff 29.03.2008 00:21

ну, я примерно так и полагаю, что ничего не понятно.
просто как-раз всплыла примерно такая задача: предприятие работает на 1С, предполагается создание сайта на локальном сервере, на PostgreSQL.. местный системный администратор уверяет, что нет ничего проще, чем тягать данные прямо из существующей базы.. но меня терзают смутные сомнения. все решения, с которыми я сталкивался основаны именно на импорте экспортированных из 1С файлов, вряд ли все специально создают себе такие сложности.

azukari 29.03.2008 00:35

Цитата:

Сообщение от filippoff (Сообщение 18098)
ну, я примерно так и полагаю, что ничего не понятно.
просто как-раз всплыла примерно такая задача: предприятие работает на 1С, предполагается создание сайта на локальном сервере, на PostgreSQL.. местный системный администратор уверяет, что нет ничего проще, чем тягать данные прямо из существующей базы.. но меня терзают смутные сомнения. все решения, с которыми я сталкивался основаны именно на импорте экспортированных из 1С файлов, вряд ли все специально создают себе такие сложности.

А ну в принципе задача интересная. Это будет такой конкретный камень в огород битрикса.

filippoff 29.03.2008 01:21

пока не ясно даже в принципе как это всё будет выглядеть. typo3 на postgre вещь относительно нестандартная, да и о dbal у меня доволно смутные представления.
вообще, у 1С есть web-расширение, позволяющее как я понял, использовать данные базы на любом сайте. но документации я не нашёл, только общие слова.

azukari 29.03.2008 01:49

Я выложил версию xml_import

Проект
http://www.assembla.com/spaces/xml_import

SVN
http://svn2.assembla.com/svn/xml_import

На данный момент образец xml предоставить не могу, да и оригинальный не нужен такой - файл весит 11мб. Зато образец конфигурации лежит в doc/ Этот файл надо включить в localconf.php

Все желающие пишут сюда свои логины assembla и получают доступ на запись.

Pavel Antonov 29.03.2008 14:23

Цитата:

Сообщение от filippoff (Сообщение 18100)
пока не ясно даже в принципе как это всё будет выглядеть. typo3 на postgre вещь относительно нестандартная, да и о dbal у меня доволно смутные представления.
вообще, у 1С есть web-расширение, позволяющее как я понял, использовать данные базы на любом сайте. но документации я не нашёл, только общие слова.

Лучше решение было бы реализовать выгрузку/загрузку через Web-сервисы того же CommerceML.

void 29.03.2008 15:20

Мой логин - voidus

filippoff 29.03.2008 19:38

Цитата:

Сообщение от Pavel Antonov (Сообщение 18108)
Лучше решение было бы реализовать выгрузку/загрузку через Web-сервисы того же CommerceML.

выгрузку - через файлы? речь шла о прямой работе с базой 1С предприятия. правда, я вижу реальную возможность делать только чтение, поскольку встаёт вопрос о проводках и прочих радостях.


Часовой пояс GMT +4, время: 19:57.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot