Разработка модуля импорта/экспорта для Ubercart

Прислано: Zadira

ср, 19/05/2010 - 00:07

Требуется разработать модуль импорта/экспорта товаров в Drupal 6 + Ubercart 2.2:

1. Обмен данными с 1С8 (каталог и заказы)
2. Загрузка товаров из таблицы xml и csv
3. Понимать кодировку Windows

Более подробно:
- Загрузка товаров должна производиться по Артикулу. Если товара с данным артикулом не существует, то создается новый. Если существует, то информация о товаре обновляется.
- Товары, которые не присутствуют в загружаемом файле, удаляются из базы. Изображения которые ему принадлежат тоже должны быть удалены с сервера.
- Свойства товара, которые есть у товара на сайте, но которых нет в загружаемой таблице - не меняются. То есть если пользователь добавил изображение через сайт, а при загрузке поле "Изображение" в таблице пустое, то первоначально введенные данные не стираются.
- Товары должны импортироваться сохраняя структуру каталога.
- Ошибки экспорта должны выводиться на экран с указанием какой товар не может экспортироваться и почему.
- Экспорт должен производиться простым способом с минимальным количеством шагов.

Жду предложений по цене и срокам

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано glu2006 в ср, 19/05/2010 - 05:12.

По срокам около месяца по деньгам примерно выльется в 1500 - 2000 не наших денег. Контакты в профиле.


Опубликовано Zadira в чт, 20/05/2010 - 12:30.

Да за такие деньги проще лицензию битрикса купить....


Опубликовано glu2006 в пт, 21/05/2010 - 04:57.

Zadira написал(а):

Да за такие деньги проще лицензию битрикса купить....

Ну так купите :)
У Всех почему-то складывается мнение что если CMS free то и разработки решений под нее тоже нихрена не стоят.
Неделя работы специалиста кодера друпал стоит около 500 долларов (40 часов), на написание Вашего модуля уйдет никак не меньше 2,5 - 3х недель. Вот и делайте выводы.

Конечно можно написать какую нибудь полукостыльную версию а потом в процессе работы ее допиливать и т.д., тогда будет дешевле.
Вообще тема импорта данных в уберкарт и из него поднималась неоднократно и у меня есть наработки по этой теме, но к примеру я уперся в разматывание xml для большого количества товаров, ложится сервер. А как разматывать xml в батч процессе решения нет, + еще и нехватка времени и денег на продолжение разработок.


Опубликовано MGMaster в пт, 21/05/2010 - 05:40.

А если без xml?
Если только CVS (но в кодировке Windows)


Опубликовано glu2006 в пт, 21/05/2010 - 08:40.

MGMaster написал(а):

А если без xml?
Если только CVS (но в кодировке Windows)

А что великий труд пересохранить файл в другой кодировке?
По моему нет, и тогда можно смело юзать node_import у него есть конечно свои минусы, но за отсутсвием альтернативы...


Опубликовано MGMaster в пт, 21/05/2010 - 11:15.

Если предоставлять как сервис неискушенному человеку, то node_import не подходит
Мало того что человеку нужно устанавливать дополнительное программное обеспечение для перевода в другую кодировку, так ему чтобы сделать загрузку нужно пройти множество шагов модуля node_import.

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

Скорее для первоначальной загрузки подходит.


Опубликовано glu2006 в пт, 21/05/2010 - 12:38.

MGMaster написал(а):

Скорее для первоначальной загрузки подходит.

Я это все прекрасно знаю, но!
Альтернативы нет + о каком дополнительном софте для перекодирования вы говорите :) с этим даже стандартный notepad из винды справляется.
Вообще интеграция с 1С это одна большая задница, поскольку разновидностей конфигурирования как грязи, и гораздо проще взять за жабры 1С-ника чтоб он сконфигурировал свою систему под выгрузку чем подстраиваться.
Либо придется писать маппинг как в node_import но только писать так чтоб он сохранялся, далее надо создать и написать функционал для ведения таблицы соответствия внешних SKU и NID поскольку без нее мы получим кашу при импорте и экспорте, причем эта таблица должна так-же хранить и соответствие ID категорий каталога и не только таксономии, ведь еще есть и модуль category.
Далее необходимо засунуть всю процедуру импорта или экспорта в batch процесс чтоб импорт не прерывался по time выполнения скриптов на сервере.
Вот три веселеньких задачки решив которые мы получим на выходе полноценный импорт - экспорт.

Вы считаете что это не 2,5 - 3 недели разработки? И с большего не важно в каком формате будет файл для импорта, хоть txt (просто с XML это еще геморроя добавит на 3-4 дня).
Я еще не заикался про картинки, остатки и цены.


Опубликовано ASV в сб, 22/05/2010 - 01:55.

"glu2006" написал(а):

Вы считаете что это не 2,5 - 3 недели разработки? И с большего не важно в каком формате будет файл для импорта, хоть txt (просто с XML это еще геморроя добавит на 3-4 дня).

возьми и сделай Модуль импорта Товаров из CommerceML 1С D6

"glu2006" написал(а):

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

у 1с даже стандарт есть для магазинов CommerceML


Опубликовано glu2006 в сб, 22/05/2010 - 07:33.

ASV написал(а):

возьми и сделай Модуль импорта Товаров из CommerceML 1С D6

Я подозреваю что Ваш модуль сядет на попу при импорте 20 - 30.000 товарных позиций (попробуйте его используя XML файл размером 4-5Мб), ничего нового в нем для себя не открыл, для корректной работы данного модуля на любых хостингах нужен batch process которого у Вас просто нет а значит импорт умрет на тайм лимит по скриптам.

ASV написал(а):

у 1с даже стандарт есть для магазинов CommerceML

Про это я тоже знаю но во первых не все организации его пользуют, во вторых для любого стандарта необходимо делать маппинг, т.е. выставлять соответствие полей номенклатуры и ССК полей товара. И усложню задачу :) если у нас несколько разных групп товаров с разным набором ССК полей, как тогда быть?


Опубликовано ASV в сб, 22/05/2010 - 09:22.

"glu2006" написал(а):

Я подозреваю что Ваш модуль сядет на попу при импорте 20 - 30.000 товарных позиций (попробуйте его используя XML файл размером 4-5Мб)

в 4 Мб входит только 4000 позиций товара. в обновлении уже есть лимит по количеству загружаемых нод.


Опубликовано gumk в сб, 22/05/2010 - 11:01.

to glu2006 а можете на словах хотябы рассказать как вы batch собираетесь реализовывать? через php?


Опубликовано volocuga@drupal.org в сб, 22/05/2010 - 11:13.

"Zadira" написал(а):

Да за такие деньги проще лицензию битрикса купить....

Именно. Многие ведутся на opensource статус Drupal, но разработка на Друпал часто ПРЕВЫШАЕТ стоимость аналогичного и узко заточенного коммерческого решения.

Друпал - это в некотором смысле развод (ща начнётся :). Покупая коммерческий продукт, человек автоматически получает право качать права, для Друпал такое не проканает: не платишь - закрой рот, тебе никто ничего не должен.

Именно поэтому Майкрософт честнее Линукса :)


Опубликовано v1adimir@drupal.org в сб, 22/05/2010 - 12:14.

volocuga@drupal.org написал(а):
"Zadira" написал(а):

Да за такие деньги проще лицензию битрикса купить....

Именно. Многие ведутся на opensource статус Drupal, но разработка на Друпал часто ПРЕВЫШАЕТ стоимость аналогичного и узко заточенного коммерческого решения.

Зачем битрикс? phpshop -- старт от 3990 руб. лепота!


Опубликовано Zadira в сб, 22/05/2010 - 12:38.

"v1adimir@drupal.org" написал(а):

Зачем битрикс? phpshop -- старт от 3990 руб. лепота!

Нужна гибкость при разработке, и все возможные фильтры каталога да и не совсем чистый магазин делаем, по мимо магазина еще контента много.


Опубликовано v1adimir@drupal.org в сб, 22/05/2010 - 12:54.

блин, да это ж я глумлюсь!


Опубликовано glu2006 в сб, 22/05/2010 - 15:44.

У Друпала уже есть встроенное в ядро batchAPI, главное правильно эти данные ему подсунуть ;) почитать тут http://api.drupal.org/api/group/batch
Я писал миграцию со стороннего форума на друпаловский, великолепно работает :) 25.000 юзеров более 400.000 постов и комментов. Все через стандартные функции друпала т.е. user_save, node_save, comment_save.


Опубликовано gumk в сб, 22/05/2010 - 18:02.

это я знаю, просто вопрос наверное не правильно задал, batch как то должен "резать" файл xml для этого как я понимаю он все равно должен загрузить весь файл в память, должна возникнуть таже проблема с нехваткой ресурсов, или я чего то не понимаю.


Опубликовано glu2006 в сб, 22/05/2010 - 18:57.

gumk написал(а):

это я знаю, просто вопрос наверное не правильно задал, batch как то должен "резать" файл xml для этого как я понимаю он все равно должен загрузить весь файл в память, должна возникнуть таже проблема с нехваткой ресурсов, или я чего то не понимаю.

Так вот я и писал в комментах что затык с batch именно с xml и решения на эту тему просто пока нет к сожалению.


Опубликовано gumk в вс, 23/05/2010 - 11:55.

http://webi.ru/webi_articles/big_xml.html а такой велосипед не пробовали?


Опубликовано glu2006 в вс, 23/05/2010 - 12:40.

Судя по тексту и комментам должно работать. При написании очередного импорта обязательно попробую, спасибо за ссылку.


Опубликовано gumk в вс, 23/05/2010 - 21:00.

проблему со временем можно решить с помощью batch? вы планируете выпустить модуль, который анонсировали почти год назад?


Опубликовано glu2006 в пн, 24/05/2010 - 04:19.

gumk написал(а):

проблему со временем можно решить с помощью batch? вы планируете выпустить модуль, который анонсировали почти год назад?

Не можно, а именно batch процесс и решает проблему времени на скрипты, а модуль тоже планируем выпустить, он бы давно увидел свет, но мешала проблема с xml + времени наскрести на него, поскольку спасибами за его разработку сыт не будешь, а инвесторы так и не нашлись.


Опубликовано Mirocow в пн, 31/05/2010 - 18:24.

цена вопроса 500 так как все уже написано
Если надо что то дописать то за дополнительную плату

Все это умеет
1. Обмен данными с 1С8 (каталог и заказы)
2. Загрузка товаров из таблицы xml и csv
3. Понимать кодировку Windows

и даже больше
Контакты в личке


Опубликовано glu2006 в вт, 01/06/2010 - 04:46.

Mirocow написал(а):

цена вопроса 500 так как все уже написано
Если надо что то дописать то за дополнительную плату

Все это умеет
1. Обмен данными с 1С8 (каталог и заказы)
2. Загрузка товаров из таблицы xml и csv
3. Понимать кодировку Windows

и даже больше
Контакты в личке

Если не секрет, как Вы в batch процесс засунули xml?
Хотя бы суть механизма, код и сами написать можем.


Опубликовано Mirocow в вт, 01/06/2010 - 06:59.

делил кусками


Опубликовано glu2006 в вт, 01/06/2010 - 07:44.

Mirocow написал(а):

делил кусками

Руками или программно?


Опубликовано Mirocow в вт, 01/06/2010 - 08:09.

Конечно программно


Опубликовано realburnis в пт, 04/06/2010 - 12:18.

очень ветка полезная. отпишусь для трекера.
может быть скинемся на разработку в скором времени? Если разработки не против таких инвестиций.
+ потом выложим даже в свободный доступ.....

ТОлько скинуться желательно будет не вдвоем -)
хотя опять же.
такое чувство часто, что в друпале каждый кучкуется малыми группами и НЕ ДЕЛИТСЯ СЕКРЕТНЫМИ технологиями _) очевидно из за того, что часто просто нет времени, часто - страшно.
И в итоге не всегда можно ощутить всю прелесть СИНЕРГИИ -)


Опубликовано fixit в пт, 04/06/2010 - 12:34.

"realburnis" написал(а):

ТОлько скинуться желательно будет не вдвоем -)

Subscribe

Кстати, было бы неплохо здесь вести поддержку заказов сообщества - приклеить тему, описать т.з., опубликовать бюджет-план, бюджет-факт и т.д.


Опубликовано PVasili в пт, 04/06/2010 - 13:03.

"fixit" написал(а):

приклеить тему, описать т.з., опубликовать бюджет-план, бюджет-факт и т.д.

- нереально. У всех свои подходы и способы внутреннего учета. Универсального не получится. Сделать обмен - не сложно. Сложно сделать универсально-настраиваемым на все случаи.


Опубликовано MGMaster в сб, 05/06/2010 - 02:04.

Так сделать базовую версию. А под себя кждый сможет допилилить код в нужных местах.
Код сделать с комментариями в нужных местах. И инструкцию какую-нибудь возможно...
Мне кажется это проще быстрее и дешевле будет реализовать, чем универсально-настраиваемый под каждого модуль.


Опубликовано t1mm1@drupal.org в ср, 04/08/2010 - 12:43.

batch api это гуд конечно

но как быть в ситуации, когда требуется вытягивать данные по orders из уберкарта на 10-20 тыс позиций, подтягиваемые из 4-5 таблиц...
просто вопрос с временем выполнения решается, а с аут оф мемори - fail. даже убивая временные массивы...
это про експорт правда. но суть не меняется.

ломаю голову (


Опубликовано glu2006 в чт, 05/08/2010 - 04:59.

t1mm1@drupal.org написал(а):

batch api это гуд конечно

но как быть в ситуации, когда требуется вытягивать данные по orders из уберкарта на 10-20 тыс позиций, подтягиваемые из 4-5 таблиц...
просто вопрос с временем выполнения решается, а с аут оф мемори - fail. даже убивая временные массивы...
это про експорт правда. но суть не меняется.

ломаю голову (

Вычитывать небольшими пачками к примеру по 100 записей и все.


Опубликовано Mirocow в ср, 25/08/2010 - 22:54.

модуль написан, и в ближайшее время будет выложен на ваш суд
Модуль будет иметь API достаточное чтоб внести корректировку до и после обработки
Также модуль будет поддерживать 2 вида работы batch и обычный (если записей не более x)

поддержка cck - будет включена в базовый модуль и будет идти отдельно


Опубликовано Zadira в ср, 25/08/2010 - 23:18.

"Mirocow" написал(а):

модуль написан, и в ближайшее время будет выложен на ваш суд
Модуль будет иметь API достаточное чтоб внести корректировку до и после обработки
Также модуль будет поддерживать 2 вида работы batch и обычный (если записей не более x)

поддержка cck - будет включена в базовый модуль и будет идти отдельно

Отличная новость!


Опубликовано realburnis в пт, 27/08/2010 - 04:33.

А мы написали пока сторонний модуль, котрый пишет напрмяю в Базу. Думаю на друпале.ру нас затакое возненавидят но работает....!

Если будет время сделаем и интеграцию в Сам друпал.Первая версия как у нас по таймаутам отрубалась. Будем мыслить дальше.


Опубликовано Mirocow в пт, 27/08/2010 - 11:00.

"realburnis" написал(а):

По таймаутам - решение очень плохое и грозит потерей данных и битыми таблицами


Опубликовано Zonder в ср, 01/09/2010 - 12:14.

Mirocow написал(а):

модуль написан, и в ближайшее время будет выложен на ваш суд
Модуль будет иметь API достаточное чтоб внести корректировку до и после обработки
Также модуль будет поддерживать 2 вида работы batch и обычный (если записей не более x)

поддержка cck - будет включена в базовый модуль и будет идти отдельно

Ждем! Очень ждем!


Опубликовано RxB в ср, 01/09/2010 - 12:21.

"Zonder" написал(а):

Ждем! Очень ждем!

ООП Drupal тоже ждут уже около года.
Да, mdinc Mirocow?


Опубликовано o_tau@drupal.org в чт, 09/09/2010 - 08:51.

Была необходимость экспорта/импорта около 1400 материалов (в т.ч. и товаров) с недельку-две назад, очень ждал готового модуля в этой теме.
Потом стало поджимать время. В результате переделал под себя модуль Ubercart CSV/Excel Export. Поскольку никогда этим не занимался, переделал тупо, в лоб, получился страшно медленный, но работает. Импорт - стандартно через Node Import.
Рекомендую такой подход для нетерпеливых. Затрат - один-два вечера на разобраться, но зато все сделано под свои нужды.


Опубликовано Zonder в чт, 09/09/2010 - 10:49.

"o_tau@drupal.org" написал(а):

Была необходимость экспорта/импорта около 1400 материалов (в т.ч. и товаров) с недельку-две назад, очень ждал готового модуля в этой теме.
Потом стало поджимать время. В результате переделал под себя модуль Ubercart CSV/Excel Export. Поскольку никогда этим не занимался, переделал тупо, в лоб, получился страшно медленный, но работает. Импорт - стандартно через Node Import.
Рекомендую такой подход для нетерпеливых. Затрат - один-два вечера на разобраться, но зато все сделано под свои нужды.

А не подскажите где можно найти вами переделанный модуль?
Со стандартным не разобрался. Импорт то вроде есть. А вот формат файла мне не понятен и операции Экспорта он не осуществляет.


Опубликовано o_tau@drupal.org в чт, 09/09/2010 - 11:49.

Виноват, не совсем понял что Вы хотите найти...
Если Вы про модуль, который я взял для переделки как исходный, то здесь. Еще можно поискать варианты на ubercart.org, например, здесь.
Если Вы про модуль, который я получил после переделки, могу его выложить. Но к-хм... как бы это сказать... я не программист, это мой чуть ли не первый опыт в PHP и MySQL, поэтому извиняйте. Подход у меня было такой - сляпать, перегнать данные и забыть. Пользоваться повседневно им неудобно. И наверняка придется переделывать под себя.
Выложить?
PS Для Node Import входной формат файла - CSV. Этот модуль умеет только импортировать.


Опубликовано Zonder в чт, 09/09/2010 - 12:53.

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


Опубликовано glu2006 в чт, 09/09/2010 - 12:59.

Zonder написал(а):

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

Экспорт куда?
в файл, в 1С, в другую базу.


Опубликовано Zonder в чт, 09/09/2010 - 12:59.

В файл


Опубликовано o_tau@drupal.org в чт, 09/09/2010 - 14:08.

Варианты:
- из phpmyadmin экспорт выбранных таблиц в CSV;
- ну и не ругайте за поделку... :)

PS В закомментированной строке копируются в выбранную папку файлы изображений товаров. Если это нужно - раскомментировать.


Опубликовано Zonder в чт, 09/09/2010 - 14:35.

Пасиба. Пошел изучать


Опубликовано Zonder в чт, 09/09/2010 - 14:45.

Что-то это не то. Получил файл, в котором одной колбасой все ноды. Даже без разделения на поля. Просто текст сплошняком.


Опубликовано o_tau@drupal.org в чт, 09/09/2010 - 17:49.

Смотрите блокнотом? Скорее всего проблемы с кодировкой.
Попробуйте открыть с помощью excel, выбрать кодировку UTF-8 и соответствующие разделители. А еще лучше - OpenOffice-ом, у меня (правда, под линуксом) открывается по умолчанию без проблем.


Опубликовано Zonder в чт, 09/09/2010 - 18:19.

Сделал так как вы пишите. Лучше не стало. Прикрепил то, что получилось.


Новое на сайте

Ссылки партнёров