Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
23 сен 2021, 23:08

Ошибка при передаче информации на сайт из 1С

Автор seregarem, 01 дек 2011, 21:00

0 Пользователей и 1 гость просматривают эту тему.

seregarem

При выполнении обмена данными выполняется скрипт (код выборочно взят из Битрикса):
$type=$_GET[type];
$mode=$_GET[mode];
$file=$_GET[filename];
$fp = fopen('data.txt', 'a');
fwrite($fp, "Type: ".$type."\n");
fwrite($fp, "Mode: ".$mode."\n");
fwrite($fp, "File: ".$file."\n");
fwrite($fp, "\n");

ob_start();

if($_GET["mode"] == "checkauth"){
echo "success\n";
echo session_name()."\n";
echo session_id() ."\n";
}

if($_GET["mode"] == "init"){
echo "zip=yes"."\n";
echo "file_limit=0\n";
}

if($_GET["mode"] == "file"){
if(isset($_GET["filename"]) && (strlen($_GET["filename"])>0)){
$filename = trim(str_replace("\\", "/", trim($_GET["filename"])), "/");
$FILE_NAME = $filename;
if((strlen($FILE_NAME) > 1)){
$ABS_FILE_NAME = $FILE_NAME;
$WORK_DIR_NAME = substr($ABS_FILE_NAME, 0, strrpos($ABS_FILE_NAME, "/")+1);
}
}

if($ABS_FILE_NAME){
if(function_exists("file_get_contents")){
$DATA = file_get_contents("php://input");
file_put_contents($ABS_FILE_NAME,$DATA);
}
$file_name=$FILE_NAME;
if(function_exists("zip_open")){
$hZip = zip_open($file_name);
if($hZip){
while($entry = zip_read($hZip)){
$entry_name = zip_entry_name($entry);
if(zip_entry_filesize($entry) && strpos($entry_name,".xml") !== false){
$ABS_FILE_NAME = $dir_name.$entry_name;
$file_name = $dir_name.$entry_name;
$fout = fopen($file_name, "wb");
if($fout){
while($data = zip_entry_read($entry, 102400)){
$result = fwrite($fout, $data);
if($result !== (function_exists("mb_strlen")? mb_strlen($data, 'latin1'): strlen($data)))
return false;
}
}
}
zip_entry_close($entry);
}
zip_close($hZip);
}
}
else echo "error\n";
}
}
fclose($fp);
$contents = ob_get_contents();
ob_end_clean();

$str = (function_exists("mb_strlen")? mb_strlen($contents, 'latin1'): strlen($contents));
if($_GET["mode"] == "query"){
header("Content-Type: application/xml; charset=windows-1251");
header("Content-Length: ".$str);
}
else{
header("Content-Type: text/html; charset=windows-1251");
}
echo $contents;
die();


Для теста в файл сохраняются запросы от 1С. Вот, что выдает 1С:
Type: catalog
Mode: checkauth
File:

Type: catalog
Mode: init
File:

Type: catalog
Mode: file
File: v8_2D93_6b.zip

Type: catalog
Mode: import
File: import.xml

В журнале в 1С пишет:
Интерактивный обмен
01.12.2011 20:50:05 Запуск выгрузки товаров
01.12.2011 20:50:05 Завершено формирование файлов выгрузки товаров
Выгружено товаров: 1
предложений: 0
картинок: 0
файлов: 0

В том числе для каталога Основной каталог товаров:
товаров: 1
предложений: 0
картинок: 0
файлов: 0

01.12.2011 20:50:05 Выгрузка на сайт завершилась с ошибками.
Получение данных с сервера: Получен пустой ответ сервера.
import.xml: Не удалось получить текущее состояние процесса обмена. Данные обмена отправлены, но не загружены.
01.12.2011 20:50:05 Завершена выгрузка товаров

Сам архив и xml-файл нормально сохраняется на сайте, дальнейшая его обработка, в принципе, понятна. Но почему выдается ошибка в журнале? Не совсем понятно как отсылать данные в 1С - подскажите, пожалуйста. Посмотрите корректность кода.

comol

очень похоже на кривое имитирование на стороне сайта загрузки в битрикс...
Если на вскидку... дело в том что 1с использует механизм регистрации изменений, выгружает данные на сайт (как говорите выгрузилось), потом с сайта должен быть получен ответ хотя бы о том что все изменения успешно загружены. Этого ответа 1с не находит. о чём вам и пишет. Собственно файлик с сайта должен быть... чтобы 1с затерла все зарегистрированные изменения, иначе всё повтороно будет выгружаться и объём выгрузки расти

Но это только предположение. на самом деле нужно конечно указать о чём идёт речь:
1) Штатный обмен с битриксом? Какой выбран транспорт?
2) Что понимается под запросами от 1с?
3) Как организована выгрузка на стороне 1С если она не штатная?
Статьи по оптимизации 1С: http://comol.livejournal.com/

seregarem


Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск