![]() |
|
| Правила Форума редакция от 22.06.2020 |
|
|||||||
|
|
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже. |
|
![]() |
|
|
Опции темы | Опции просмотра |
Language
|
|
|
#1
|
|
Пользователь
Пол:
Регистрация: 10.03.2008
Сообщений: 60
Репутация: 10
|
Всем привет!
Разбирался с Битриксом и обменом с 1С - в версии 8.1 у 1С-ки есть очень хорошая выгрузка, которую себе использует битрикс. Но по-сути для встречи данных из 1с достаточно написать простой скрипт и положить его на свой сайт - в результате нехитрых настроек встроенная функция 1С позволяет выливать на сайт все данные из каталога в виде одной картинки и двух XML файлов (описание товаров и характеристики + каталог цен). С выгрузкой я разобрался и написал упрощенный встречный скрипт - предлагаю его на обзор всем желающим, скрипт рабочий после небольшой шлифовки (встроить функцию пароля) можно смело выкладывать на сайт и выгружать данные. Скрипт смотрите ниже, суть моей просьбы: самому оказалось немного лень, да и для меня программирование скорее увлечение, поэтому нужно сделать обработчик XML файла который бы отделял соответствующие позиции, проверял наличие данной позиции в MySQL базе товаров - если нет, то записывал новый элемент, если да, то обновлял старые данные: Техническая информация здесь http://v8.1c.ru/edi/edi_stnd/131/ ---------------------------- Скрипт встречи данных 1С: <? switch ($mode) { case "checkauth": session_save_path($_SERVER['DOCUMENT_ROOT'].'/session'); session_start(); // это равносильно HEADERS() и SETCOOKIES(), до вызова функции $s="user_ok"; // ничего на экран не выводить session_register("s"); // объявляем, что $s является частью сессии echo "success\n"; echo "PHPSESSID\n"; echo $s; break; // проверяем в каком виде принимаются данные - есть возможность получать в архивном виде case "init": echo "zip=no\n"; echo "file_limit=2900800\n"; break; //выгружаем файлы case "file": $uploaddir = $_SERVER["DOCUMENT_ROOT"]."/bitrix/upload/"; $uploadfile = $filename; if (strstr ($uploadfile,"/")) { $uploadfile = substr($filename,16); } //$uploadfile = $uploaddir.basename($filename1); $DATA = &$GLOBALS["HTTP_RAW_POST_DATA"]; if($fp = fopen($uploaddir.$uploadfile, "a+")) { $result = fwrite($fp, $DATA); } fclose($fp); echo "success\n"; echo $uploadfile; break; // после выгрузки можно обработать файлы - пока сессия не завершена case "import": include '$_SERVER["DOCUMENT_ROOT"]'."/bitrix/upload/".'picture_resize.php'; echo "success\n"; break; } ?> ----------------------------------- Далее в 1С прописываете путь к данному скрипту, нажимаете выгрузить (здесь без проверки паролей, но встроите функцию - будет с проверкой) и у вас на сайте в указанной папке появляются соответствующие файлы картинки и 2 XML Вот обработчика XML и не хватает. Файлы вида: import.xml --------- ?xml version="1.0" encoding="UTF-8"?> <КоммерческаяИнформация ВерсияСхемы="2.03" ДатаФормирования="2010-06-17"> <Классификатор> <Ид>8e8e84d7-481f-11dd-89b3-001a4d468053</Ид> <Наименование>Классификатор (Каталог товаров)</Наименование> <Группы> <Группа> <Ид>bebc5b12-4833-11dd-89b3-001a4d468053</Ид> <Наименование>Режущие плоттеры (каттеры)</Наименование> <Группы> <Группа> <Ид>bebc5b13-4833-11dd-89b3-001a4d468053</Ид> <Наименование>Redsail</Наименование> </Группа> <Группа> <Ид>6fc1a299-57b4-11dd-a475-001a4d468053</Ид> <Наименование>PCUT</Наименование> </Группа> <Группа> <Ид>924cea60-7b3c-11de-bdfe-fb8a070233dd</Ид> <Наименование>Foison</Наименование> </Группа> </Группы> </Группа> </Группы> </Классификатор> <Каталог> <Ид>8e8e84d7-481f-11dd-89b3-001a4d468053</Ид> <ИдКлассификатора>8e8e84d7-481f-11dd-89b3-001a4d468053</ИдКлассификатора> <Наименование>Каталог товаров</Наименование> <Товары> <Товар> <Ид>924cea61-7b3c-11de-bdfe-fb8a070233dd</Ид> <Артикул>Foison C48</Артикул> <Наименование>Foison C48 режущий плоттер</Наименование> <БазоваяЕдиница Код="796" НаименованиеПолное="Штука" МеждународноеСокращение="PCE">шт</БазоваяЕдиница> <ЗначенияРеквизитов> <ЗначениеРеквизита> <Наименование>ВидНоменклатуры</Наименование> <Значение>Оборудование</Значение> </ЗначениеРеквизита> <ЗначениеРеквизита> <Наименование>ТипНоменклатуры</Наименование> <Значение>Товар</Значение> </ЗначениеРеквизита> <ЗначениеРеквизита> <Наименование>Полное наименование</Наименование> <Значение>Foison C48 режущий плоттер</Значение> </ЗначениеРеквизита> </ЗначенияРеквизитов> <СтавкиНалогов> <СтавкаНалога> <Наименование>НДС</Наименование> <Ставка>18</Ставка> </СтавкаНалога> </СтавкиНалогов> <Группы> <Ид>924cea60-7b3c-11de-bdfe-fb8a070233dd</Ид> </Группы> <Описание>Оборудование Режущий плоттер (каттер) Модель С48 </Описание> <Картинка/> </Товар> </Товары> <СодержитТолькоИзменения>false</СодержитТолькоИзменения> </Каталог> </КоммерческаяИнформация> ------------------------------- offers.xml ------------------------------ <?xml version="1.0" encoding="UTF-8"?> <КоммерческаяИнформация ВерсияСхемы="2.03" ДатаФормирования="2010-06-17"> <ПакетПредложений> <Ид>8e8e84d7-481f-11dd-89b3-001a4d468053#</Ид> <Наименование>Пакет предложений</Наименование> <ИдКаталога>8e8e84d7-481f-11dd-89b3-001a4d468053</ИдКаталога> <ИдКлассификатора>8e8e84d7-481f-11dd-89b3-001a4d468053</ИдКлассификатора> <ТипыЦен> <ТипЦены> <Ид>bebc5b3a-4833-11dd-89b3-001a4d468053</Ид> <Наименование>Партнерские</Наименование> <Валюта>RUB</Валюта> <Налог> <Наименование>НДС</Наименование> <УчтеноВСумме>true</УчтеноВСумме> </Налог> </ТипЦены> <ТипЦены> <Ид>bebc5b39-4833-11dd-89b3-001a4d468053</Ид> <Наименование>Розничные</Наименование> <Валюта>RUB</Валюта> <Налог> <Наименование>НДС</Наименование> <УчтеноВСумме>true</УчтеноВСумме> </Налог> </ТипЦены> </ТипыЦен> <Предложения> <Предложение> <Ид>6fc1a29a-57b4-11dd-a475-001a4d468053</Ид> <Артикул>CT1200</Артикул> <Наименование>Режущий плоттер PCUT CT 1200</Наименование> <БазоваяЕдиница Код="796" НаименованиеПолное="Штука" МеждународноеСокращение="PCE">шт</БазоваяЕдиница> <Цены> <Цена> <Представление>32 000 RUB за шт</Представление> <ИдТипаЦены>bebc5b3a-4833-11dd-89b3-001a4d468053</ИдТипаЦены> <ЦенаЗаЕдиницу>32000</ЦенаЗаЕдиницу> <Валюта>RUB</Валюта> <Единица>шт</Единица> <Коэффициент>1</Коэффициент> </Цена> </Цены> <Количество>0</Количество> </Предложение> </Предложения> <СодержитТолькоИзменения>false</СодержитТолькоИзменения> </ПакетПредложений> </КоммерческаяИнформация> ---------------------------- Вообщем если не сложно скиньте какой-нибудь несложный скрипт обработки этих файлов Последний раз редактировалось wesper; 19.03.2011 в 07:53.. |
|
|
|
| Реклама: |
|
|
#2
|
|
Новичок
Пол:
Регистрация: 19.08.2009
Сообщений: 5
Репутация: -1
|
вероятно я туплю... Но что надо то? |
|
|
|
|
|
#3
|
|
Пользователь
Пол:
Регистрация: 10.03.2008
Сообщений: 60
Репутация: 10
|
честно говоря, не знаю как подступиться к XML - поэтому нужен простой и действенный скрипт по принципу:
Подключение БД подключение файла XML Пока не дошли до конца файла Нач Цикла Проверяем наличие ИД в БД магазина Если найден переходим в соотв строку Обновляем данные: Наименование, описание, картинка товара, группа товара Если нет добавляем новую строку данные: Наименование, описание, картинка товара, группа товара Кон Цикла То же самое для файла с ценами и для групп товаров. Алгоритм легко написать, а в PHP нужно переводить. Я использую ShopCMS - к ней подключу дальше сам. А так, все можно использовать для любой CMS. |
|
|
|
|
|
#4
|
|
Неактивный пользователь
Пол:
Регистрация: 07.02.2011
Сообщений: 7
Репутация: 6
|
|
|
|
|
![]() |
Похожие темы
|
||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| Нужна помощь в создании скрипта для парсинга | PuPsAn | Скорая помощь | 1 | 06.10.2011 22:08 |
| Помощь в написании скрипта | Shatll | Программирование | 7 | 13.12.2010 23:42 |
| ищу помощь по доработке (добавить в языков. панель русский язык) | MPOINT | Windows XP | 1 | 11.10.2008 12:13 |
| Нужна помощь | gbvftyn | Вeб Дизайн | 2 | 03.12.2007 13:44 |
| Нужна помощь в ответе на вопрос, причем нужна сегодня(15 марта). | prosmith | Архив | 1 | 15.03.2007 20:57 |
|
|