Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
14 Дек 2017, 03:45
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Ошибка при передаче информации на сайт из 1С  (Прочитано 4567 раз)

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

Оффлайн seregarem

  • *
  • Сообщений: 3
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-12-01
  • Сайт: 
  • Профессия: Разработчик 1С
При выполнении обмена данными выполняется скрипт (код выборочно взят из Битрикса):
$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

  • ****
  • Сообщений: 285
  • РЕПУТАЦИЯ: 38
  • КПД: 13%
  • Регистрация: 2011-09-08
  • Сайт: comol.livejournal.com
  • Профессия: Программист 1С
очень похоже на кривое имитирование на стороне сайта загрузки в битрикс...
Если на вскидку... дело в том что 1с использует механизм регистрации изменений, выгружает данные на сайт (как говорите выгрузилось), потом с сайта должен быть получен ответ хотя бы о том что все изменения успешно загружены. Этого ответа 1с не находит. о чём вам и пишет. Собственно файлик с сайта должен быть... чтобы 1с затерла все зарегистрированные изменения, иначе всё повтороно будет выгружаться и объём выгрузки расти

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

Оффлайн seregarem

  • *
  • Сообщений: 3
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-12-01
  • Сайт: 
  • Профессия: Разработчик 1С
все нормально, разобрался


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
178 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
51 Сообщений
alex0402
49 Сообщений
andron81_81
39 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
34 Сообщений
BuhRust
29 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 184
  • Точка Скрытых: 0
  • Точка Пользователей: 4
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal