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С предприятия. правда, я вижу реальную возможность делать только чтение, поскольку встаёт вопрос о проводках и прочих радостях.

Pavel Antonov 29.03.2008 20:16

Цитата:

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

Нецелесообразно.
  1. А с какой базой? PostgreSQL почти никто не использует... на данный момент.
  2. 1C обычно стоит локально. Никто выставлять ее не будет наружу для всеобщего обозрения.
  3. Копаться в базе, которая имеет кучу логики в скриптах, тоже по-моему дело последнее.
И выгрузка не через файлы, а через 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

Тогда может другим способом отправите файл?


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

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