Из 1С в WordPress

Возник как-то вопрос о том, каким образом можно перенести часть базы из 1с v7.7 в wordpress. Необходимо было сделать один из справочников из 1С в wordpress в виде каталога.

Итак разберёмся. В wordpress можно экспортировать данные файлом xml, определённым образом построенным. В 1С базы обычно хранятся в файлах dbf. Существует несколько путей решения, можно работать с dbf напрямую (используя инструмент dbase ) или же переконвертировать нашу базу в удобоваримый формат (xml, mysql или даже txt), благо конвертеров из одного формата в другой хватает на просторах интернета. Если пойти первым путём, то сперва стоит покопаться в файле 1cv77.dd, это словарь данных, который описывает таблицы БД, открывается обычным блокнотом. По второму пути – соответственно поискать необходимый конвертер в интернете.

Моя задача осложнялась тем, что база хранилась в формате MS SQL(не путать с MySQL :)), и доступ к базе был только через интерфейс 1С. Через какое-то время нашёл решение - tool2dbf.zip - обработка выгрузки любого справочника платформы 1С:Предприятие в таблицу формата *.DBF. Позволяет выгрузить любую таблицу в dbf файл. С dbf я возиться не стал и воспользовался конвертировщиком в xml . С получившимся файлом удобно работать используя SimpleXML (ещё один удобный инструмент php, предназначен для работы с xml, как и следует из названия). Для пример кусок получившегося xml файла:

Теперь необходимо выстроить этот файл таким образом, чтобы его воспринял wordpress. Структуру внутри wordpress будем строить такую: наименование – это собственно пост, ну а папка, в которой лежит это наименование – это категория. Структруа же нашего xml файла содержит примерно такие поля: код(CODE), короткое описание(DESCR), код родителя(PARENT), группа (GROUP, пусто, если не группа, и 1, если группа), полное описание(FULLDESCR) и некоторые другие поля, которые нам не важны.
Пример файла, который необходим для импорта, вы можете получить просто экспортнув свои данные через админку. В этом файле содержится много полей для каждого поста, я же пошёл путём минимализма и проверил какой минимум необходим при импорте, чтобы wordpress воспринял посты нормально. В итоге получилась примерно следующая схема для поста:

Первые пункты понятны из описания, пункт wp:status отвечает за то, опубликован пост или ещё находится в черновиках, ну а последний пункт – это соответственно тип данных(пост или страница).
Категории же выглядят следующим образом:

Стоит отметить, что такая запись отличается, от стандартной, которую вы увидите при экспорте в xml. Например:

И кусок из item:

По подобному принципу я пытался сделать импорт, но почему то статьи не привязывались к рубрикам. Немного поэксперементировав пришёл к решению, которое описал выше, главное чтоб у вас стоял и был автивирован плагин rustolat, он сделают всю работу по добавлению к рубрикам короткого названия на латинице для урла.
Исходный файл известен, файл, который мы должны изучить, тоже известен, приступим к преобразованию из одного в другой.
Алгоритм работы следующий:
1) собираем все рубрики, для этого нам поможет признак в файле, дополнительно не забываем собрать id-шники рубрик, они нам пригодятся на следующем шаге,
2) после отсева рубрик собираем наши посты и присваиваем их определённой рубрике, рубрика указана id-шником в , вот тут нам и пригодятся собранные id-шники с именами рубрик, чтобы заменить уже циферку на название.
Используем простое и удобное средство для работы с xml файлами SimpleXML, весь код:

Скрипт открывает файл export.xml и работает с ним через инструменты, а с выходным файлом – как с обычным текстовым. Собрав все категории сперва заносит их в файл, а потом поочерёдно ситывает и заносит наши пункты справочника в виде постов. Остаётся только произвести импорт через админку Инструменты -> Импорт, выбираем пункт WordPress и далее наш получившийся файл. После завершения импорта можно взглянуть на результат своих трудов :).

5 мыслей о “Из 1С в WordPress”

  1. Буду знать, большое спасибо за помощь в этом вопросе.

  2. Я часто захожу сюда хотелось бы почаще видеть обновления .

  3. Спасибо за ценную информацию. Мне это очень пригодилось.

Добавить комментарий

Ваш e-mail не будет опубликован.