Импорт-экспорт для Virtuemart и не только

Тема в разделе "Магазины, электронная коммерция", создана пользователем BAndy, 08.12.2009.

  1. Offline

    BAndy Недавно здесь

    Регистрация:
    03.11.2009
    Сообщения:
    8
    Симпатии:
    0
    Пол:
    Мужской
    Предлагается offline программа на .NET 2.0 для импорта-экспорта данных между Источниками Данных.
    В терминах Joomla-VM - можно загружать товары из различных систем автоматизации торговли, выгружать счета и еще наверно что-нибудь найдется.
    Все проиходит очень быстро за счет прямой работы с базами данных.
    На тестовом примере из 1С SQL базы >3000 записей в MySql VM базу вставлено за 1 мин, с использованием транзакций будет на порядок быстрее.

    Основные недостатки: 1) необходима информация для MySql севера (ip,user,password) т.е если сервер не работает реально на вашем компе, sever=localhost не сработает.
    2) для разработки сценария необходимы минимальные знания SQL и структуры баз данных с которыми надо взаимодействовать.
    С решением последней проблемы готов поспособствовать по мере сил ;)

    Во вложенном примере из 1С 7.7 SQL (можно и DBF) базы на локальном сервере передается справочник товаров (таблица SC33) на Joomla 1.5 + VM 1.1 MySql базу тоже на локалке.
    Предварительно из MySql базы вычищаются товары, поэтому НА РАБОЧЕЙ БД ПРОБОВАТЬ НЕ СТОИТ.
    Для того чтобы попробовать программу надо будет поправить информацию по коннектам Источников Данных (DS).

    Приветствуются конструктивные идеи по развитию программы.

    PS Прогу загружать из поста от 11.12.09
     
    Последнее редактирование: 14.12.2009
  2.  
  3. Gronpipmaster
    Offline

    Gronpipmaster специалист

    Регистрация:
    21.01.2009
    Сообщения:
    1 392
    Симпатии:
    62
    Пол:
    Мужской
    BAndy, по русски пишите что положили, я может и понял но другие могут и не понять я про
     
  4. Offline

    BAndy Недавно здесь

    Регистрация:
    03.11.2009
    Сообщения:
    8
    Симпатии:
    0
    Пол:
    Мужской
    Да это-ж классно что понял! Начало положено. Сразу скажу, прога не откатанная, слова не отточенные, и я надеюсь на вас, народ! На вашу активность. :D

    Я тут на форуме посмотрел люди хотят и статьи в Joomla автоматом закачивать. И сразу пришла мысь. Можно добавить команду типа 'Папка с файлами' и в цикле по этим файлам загонять в jos_content.
    В связи с этим и вопрос: тема актуальная?

    Прогу обновил и добавил еще один примерчик O3_1c_IU.xml. Здесь можно не только добавлять товары, но и корректировать и подливать новые. Но я бы советовал для начала разбираться и примером O3_1c.xml, он совсем простой, на одном экране весь текст.

    PS Прогу загружать из поста от 11.12.09
     
    Последнее редактирование: 14.12.2009
  5. Offline

    BAndy Недавно здесь

    Регистрация:
    03.11.2009
    Сообщения:
    8
    Симпатии:
    0
    Пол:
    Мужской
    Я очень извиняюсь, но в предидущие посты попала программа старой версии еще и с ошибкой инсталятора.

    В качестве бонуса в новой версии реализовал команду 'Folder'. В команде надо указать папку с файлами, с этими файлами оперирует тело команды (например команда 'InsOrUpd' для записи и обновления).
    Новая функция 'FileToField' - позволяет записать файл в текстовое поле базы данных, если расширение файла '.doc' - предврительно конвертирует MS Word документ в формат HTML.
    Таким способом можно автоматически закачивать статьи в Joomla.
    Пример применения команды в файле O3_1c_F.xml
     

    Вложения:

    Последнее редактирование: 14.12.2009
  6. Gronpipmaster
    Offline

    Gronpipmaster специалист

    Регистрация:
    21.01.2009
    Сообщения:
    1 392
    Симпатии:
    62
    Пол:
    Мужской
    BAndy, надо через личный кабинет удалить файлики они из поста из чезнут, по встраиванию мне главное чтобы были типы свои, щас пока изучаю Jseblod так что не до вирта
     
  7. Offline

    cybernn Недавно здесь

    Регистрация:
    15.02.2009
    Сообщения:
    3
    Симпатии:
    0
    Пол:
    Мужской
    А можно ткнуть носом в информацию о том как соединяться с DBF базой 1С, и получать из нее данные?
     
  8. Offline

    BAndy Недавно здесь

    Регистрация:
    03.11.2009
    Сообщения:
    8
    Симпатии:
    0
    Пол:
    Мужской
    Надо создать ODBC источник (Панель управления/Администрирование/Источники данных (ODBC)).
    При создании выбрать драйвер для файлов .dbf (например Microsoft dBase Driver (.dbf));
    каталог файлов выбрать тот где лежат ДВФы от 1С; обозвать источник как DBF1C (так прописано в моей проге, но это не догма).
    В примере O3_1c.xml есть уже заготовка с dsn=DBF1C. Чтобы ее активизировать надо убить DS с Name=dsF и заготовку DS Name=dsFdbf переименовать в Name=dsF, ну и сделать ее активной (Enable=true)

    Собственно все, вообще-то можно прописать полную строку коннекта, но про это дольше рассказывать :)

    Если 1С с нестандартной (правленной) конфигурацией возможно понадобится править имя таблицы Справочника Товаров в примере это sc33, свое имя ищи в файле 1cv7.ddc (могу ошибиться)

    Удачи!
     
  9. Offline

    cybernn Недавно здесь

    Регистрация:
    15.02.2009
    Сообщения:
    3
    Симпатии:
    0
    Пол:
    Мужской
    При выгрузке по шаблону O3-1C.xml из dbf базы получаю ошибку (во вложении), вот лог программы:

    Код (CODE):
    1. dsT: (0,0047 sec)    Delete From jos_vm_category Where category_id<=0 or category_id>5
    2. dsT: (0,0013 sec)    Delete From jos_vm_category_xref Where category_parent_id<=0 or category_parent_id>5 or category_child_id<=0 or category_child_id>5
    3. dsT: (0,0012 sec)    Delete From jos_vm_product Where product_id<0 or product_id>20
    4. dsT: (0,0011 sec)    Delete From jos_vm_product_category_xref Where product_id<0 or product_id>20
    5. dsT: (0,0011 sec)    Delete From jos_vm_product_price Where product_id<0 or product_id>20
    6. dsF: (0,0417 sec)    select top 10 * from sc84 where isfolder=1 order by parentid,id
    7. dsT: (0,0030 sec)        Insert Into jos_vm_category (category_id,category_publish,category_name,list_order,category_flypage,category_browsepage) Values(41779,'Y','└тшрьюфхыш',1,'','browse_1')
    8. dsT: (0,0013 sec)        Insert Into jos_vm_category_xref (category_parent_id,category_child_id) Values(60,41779)


    причем в таблицу jos_vm_category записана 1 категория (вопрос с кодировкой)
    в таблицу jos_vm_category_xref записана 1 запись
     

    Вложения:

    • error.png
      error.png
      Размер файла:
      40.6 КБ
      Просмотров:
      15
    • O3_1c.rar
      Размер файла:
      881 байт
      Просмотров:
      28
    Последнее редактирование: 11.01.2010
  10. Offline

    BAndy Недавно здесь

    Регистрация:
    03.11.2009
    Сообщения:
    8
    Симпатии:
    0
    Пол:
    Мужской
    Очень радостно, что ты не оставляешь попыток!
    Я смотрю даже существенно поправил текст .xml
    Проблема возникла именно из за этого. В O3-1C.xml строка
    <Select En="0" DS="dsFdbf" t="select * from sc84 where isfolder=2 and parentid='{1:ID}' order by id">
    надо переименовать DS="dsFdbf" в DS="dsF".
    Я потом поправлю чтобы не вылетало по ошибке.
    Еще, наверно понятно, что этот селект недоступен, т.е. товары в данной конфигурации вставляться не будут!

    Насчет кодировки надо поиграться с 'charset=cp1251;' в строке
    <DS En="" Name="dsT" cT="MySql" cS="user id=root;password=team;database=u4153800_hobby;server=mserver;pooling=false;" />
    charset надо добавить именно в строку, не нажимая на ... (без диалога) (я бы лучше поправил xml до запуска проги :)
    какой поставить charset зависит от того какая кодировка в 1С и какая на MySql, возможно это не cp1251, я тут не большой спец :[

    Дерзай!
     
    Последнее редактирование: 12.01.2010
  11. Offline

    cybernn Недавно здесь

    Регистрация:
    15.02.2009
    Сообщения:
    3
    Симпатии:
    0
    Пол:
    Мужской
    Блин, просмотрел параметр dsTdbf, спасибо!

    Еще несколько вопросов:
    1) Возможно ли добавить в программу функцию перекодировки текста (В 1С - cp1251 а в MySQL - UTF-8), либо автоматическое определение по параметрам соединения dsT и dsF?
    2) Возможно ли добавление вычисляемых полей, например в 1С хранится имя файла, в базу надо вставить строку("каталог" + "имя файла")

    Надеюсь, я не слишком наглый.
     
    Последнее редактирование: 12.01.2010
  12. Offline

    fineartem Недавно здесь

    Регистрация:
    13.01.2010
    Сообщения:
    1
    Симпатии:
    0
    Пол:
    Мужской
    перезалейте пожалуйста=)) архивчик битый.
     
  13. Offline

    BAndy Недавно здесь

    Регистрация:
    03.11.2009
    Сообщения:
    8
    Симпатии:
    0
    Пол:
    Мужской
    нормальный архив, все распаковывается и инсталится

    Не знаю как это по параметрам соединения определить кодировку, в любом соединении может быть любая кодировка.
    А перекодировать можно, надо только понять что во что :)
    Перекинь мне sc84.dbf и выясни какая все-же кодировка на MySQL.

    Это ваще легко:
    например у тебя есть поле P_FILE в селекте 2 уровня (товары например) и надо сформировать поле product_file
    для InsOrUpd пишешь
    Код (CODE):
    1. <map fld="product_file" val="'c:\catalog\{2:P_FILE}.ext'" />

    это все в терминах XML, так проще писать, а на самом деле естесно можно и из проги все выставить.
    Надо воспринимать то что в скобках {} как макрос, который будет заменен вычисленным значением, а то что вокруг - это все прилепится к строке результата
    макроса.

    PS полезно оказывается заглядывать в форум, иначе я не увидел бы твоих вопросов ;)
     

    Вложения:

    Последнее редактирование: 07.03.2012

Поделиться этой страницей

Загрузка...