Вход

Просмотр полной версии : Интеграция с Typo3 (CommerceML, CML, XML, 1С)


azukari
02.03.2008, 18:12
Привет всем.

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

Потребовалось мне замутить интеграцию 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
а как насчёт организации прямого взаимодествия typo3 с базой 1С?

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

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

azukari
29.03.2008, 00:35
ну, я примерно так и полагаю, что ничего не понятно.
просто как-раз всплыла примерно такая задача: предприятие работает на 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
пока не ясно даже в принципе как это всё будет выглядеть. typo3 на postgre вещь относительно нестандартная, да и о dbal у меня доволно смутные представления.
вообще, у 1С есть web-расширение, позволяющее как я понял, использовать данные базы на любом сайте. но документации я не нашёл, только общие слова.

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

void
29.03.2008, 15:20
Мой логин - voidus

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

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

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

Нецелесообразно.
А с какой базой? PostgreSQL почти никто не использует... на данный момент.
1C обычно стоит локально. Никто выставлять ее не будет наружу для всеобщего обозрения.
Копаться в базе, которая имеет кучу логики в скриптах, тоже по-моему дело последнее.И выгрузка не через файлы, а через web-сервисы. 1Cv8 поддерживает SOAP.

IMHO.

filippoff
29.03.2008, 22:41
Pavel Antonov
да, база 1С в PostgreSQL, typo3 тоже видимо будет ставится на Postgre, очень она нравится админситратору :о)

void
30.03.2008, 05:42
Установка TYPO3 на postgre весьма нетривиальна... Можете на огромное количество багов напороться. и DBAL не выручит. (Хотя расскажите тут о попытках, если получится). Ries van Twisk как-то делал XCLASS к t3lib_db, чтобы завести постридж... не помню, выкладывал ли в TER - поищите. С его решением ядро работало, но некоторые расширения отказывались.

filippoff
30.03.2008, 06:48
установить то я уже установил, осталось несколько вопросов к кодировкам, но пока вроде всё работает. серьёзно работать ещё не начинал, но вся базовая функциональность работает как положено.
устанавливал через MySQL :о)

anweb
21.11.2008, 20:20
Всем привет! Очень нужная тема. Что нового у автора? Буду рад присоединиться. Мой логин в assembla: anweb

azukari
21.11.2008, 21:06
Сейчас там можно работать тока над улучшением качества и количества функционала. А так работает вроде, успешно фунциклирует на сайте.

Ассембла кажется закрыла бесплатные аккаунты.

anweb
21.11.2008, 21:15
Тогда может другим способом отправите файл?