Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Форум .::NoWa.cc::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Веб - Программирование > PHP

Уважаемые пользователи nowa.cc. Мы работаем для вас более 20 лет и сейчас вынуждены просить о финансовой помощи по оплате за сервер.
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: Z021474945171 Webmoney WME: E159284508897 Webmoney WMUSDT: T206853643180
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!

Ответ
 
Опции темы Опции просмотра Language
Старый 19.03.2011, 07:47   #1
Пользователь
 
Пол:Мужской
Регистрация: 10.03.2008
Сообщений: 60
Репутация: 10
По умолчанию 1С и CMS нужна помощь в доработке скрипта

Всем привет!

Разбирался с Битриксом и обменом с 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..
wesper вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама:


Старый 23.03.2011, 14:23   #2
girtl
Новичок
 
Пол:Мужской
Регистрация: 19.08.2009
Сообщений: 5
Репутация: -1
По умолчанию Re: 1С и CMS нужна помощь в доработке скрипта

вероятно я туплю... Но что надо то?
girtl вне форума
 
Ответить с цитированием Вверх
Старый 23.03.2011, 21:54   #3
wesper
Пользователь
 
Пол:Мужской
Регистрация: 10.03.2008
Сообщений: 60
Репутация: 10
По умолчанию Re: 1С и CMS нужна помощь в доработке скрипта

честно говоря, не знаю как подступиться к XML - поэтому нужен простой и действенный скрипт по принципу:

Подключение БД
подключение файла XML
Пока не дошли до конца файла
Нач Цикла
Проверяем наличие ИД в БД магазина
Если найден переходим в соотв строку
Обновляем данные: Наименование, описание, картинка товара, группа товара
Если нет добавляем новую строку
данные: Наименование, описание, картинка товара, группа товара
Кон Цикла


То же самое для файла с ценами и для групп товаров.

Алгоритм легко написать, а в PHP нужно переводить.
Я использую ShopCMS - к ней подключу дальше сам. А так, все можно использовать для любой CMS.
wesper вне форума
 
Ответить с цитированием Вверх
Старый 23.03.2011, 23:49   #4
voven_fe
Неактивный пользователь
 
Пол:Мужской
Регистрация: 07.02.2011
Сообщений: 7
Репутация: 6
По умолчанию Re: 1С и CMS нужна помощь в доработке скрипта

Цитата:
Сообщение от wesper Посмотреть сообщение
честно говоря, не знаю как подступиться к XML

Проще всего подступиться к XML будет через PHP расширение SimpleXML. О расширении не плохо написано в книге Д.Котерова и А.Костарева PHP 5 в подлиннике
voven_fe вне форума
 
Ответить с цитированием Вверх
Ответ


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь в создании скрипта для парсинга 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

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 08:47. Часовой пояс GMT +3.


Copyright ©2004 - 2026 NoWa.cc

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2026, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.05068 секунды с 13 запросами