Интеграция django и 1c

350 views
Skip to first unread message

Иван Земцов

unread,
Oct 1, 2013, 7:37:01 AM10/1/13
to google groups
Помогите с интеграцией .

Делаю полную выгрузку товаров
Выгружено товаров: 490
Выгружено картинок: 70
Выгружено файлов: 0
Выгружено предложений: 488
{Обработка.ОбменССайтом.МодульОбъекта(322)}: Ошибка при вызове метода контекста (ОтправитьДляОбработки): Ошибка работы с Интернет:  Failed sending data to the peer
Произошла ошибка: . По причине: 

Отправка файла на сервер: Получен пустой ответ сервера.
Не удалось получить ответ сервера. Файл не отправлен (C:\Documents and Settings\admin\Local Settings\Temp\v8_1_83.zip).
Обмен не выполнен
Выгрузка товаров завершена с ошибками!!!
Такие запросы получаю от 
[01/Oct/2013 15:28:13] "GET /1c/test/?type=catalog&mode=checkauth HTTP/1.1" 200 29
[01/Oct/2013 15:28:36] "GET /1c/test/?type=catalog&mode=checkauth HTTP/1.1" 200 29
[01/Oct/2013 15:28:46] "GET /1c/test/?type=catalog&mode=init HTTP/1.1" 200 29
[01/Oct/2013 15:28:52] "POST /1c/test/?type=catalog&mode=file&filename=v8_1_cd.zip HTTP/1.1" 200 7
[01/Oct/2013 15:28:53] "GET /1c/test/?type=catalog&mode=import&filename=import.xml HTTP/1.1" 200 7
[01/Oct/2013 15:28:55] "GET /1c/test/?type=catalog&mode=import&filename=offers.xml HTTP/1.1" 200 7
В request.FILES файлов нет. С этого же компьютера файл отправлял, файлы приходят, но от  не приходят, даже снифер включал, не приходят! Base авторизация работает.
Вьюха http://pastebin.com/JuNBXFYa
Есть у кого какие идеи?

--
С уважением, Иван

Иван Земцов

unread,
Oct 1, 2013, 7:39:45 AM10/1/13
to google groups


2013/10/1 Иван Земцов <inz...@gmail.com>



--
С уважением, Иван

shiva

unread,
Oct 1, 2013, 8:03:35 AM10/1/13
to django-...@googlegroups.com
Судя по доке: ".. который загружает на сервер файл обмена, посылая содержимое файла в виде POST.", то есть данные в request.FILES не попадут. Надо искать их в request.body. Нагуглился php'шный вариант выгрузки: https://github.com/pikusov/Simpla/blob/master/simpla/cml/1c_exchange.php#L47 (строка 47, как раз читается RAW_POST_DATA).

Вообще у битриксоводов есть скрипт для тестирования выгрузки (скрипту эмулирует работу 1С, используя ранее подготовленные файлы выгрузки). Основная ветка на форуме тут: http://dev.1c-bitrix.ru/community/blogs/carter/2285.php . Если ничего не путаю, устанавливать битрикс для этого нет необходимости, но могу напутать. Так как давно им пользовался и пользовался именно для тестирования выгрузки в битрикс.


1 октября 2013 г., 15:39 пользователь Иван Земцов <inz...@gmail.com> написал:
--
Вы получили это сообщение, поскольку подписаны на группу Django russian.
 
Чтобы отказаться от подписки на эту группу и перестать получать из нее сообщения, отправьте электронное письмо на адрес django-russia...@googlegroups.com.
Настройки подписки и доставки писем: https://groups.google.com/groups/opt_out.

shiva

unread,
Oct 1, 2013, 8:42:36 AM10/1/13
to django-...@googlegroups.com
Обманул. Битрикс для  скрипта тестирования импорта нужен.


1 октября 2013 г., 16:03 пользователь shiva <shavri...@gmail.com> написал:

Иван Земцов

unread,
Oct 1, 2013, 8:45:32 AM10/1/13
to google groups
Спасибо, ща попробую


2013/10/1 shiva <shavri...@gmail.com>



--
С уважением, Иван

Иван Земцов

unread,
Oct 2, 2013, 1:35:05 AM10/2/13
to google groups
Заработало, нужно было raw data, как shiva Сказал. Т.е request.read() вместо request.FILES
shiva спасибо!


2013/10/1 Иван Земцов <inz...@gmail.com>



--
С уважением, Иван

Ivan Fedorov

unread,
Oct 2, 2013, 2:46:34 AM10/2/13
to django-...@googlegroups.com
у меня подобная проблема была если я не ошибаюсь с таким инпутом

<input type="file" name="file" />
не стал дальше разбираться в чем дело просто дал другое имя 


2 октября 2013 г., 8:35 пользователь Иван Земцов <inz...@gmail.com> написал:

Иван Земцов

unread,
Oct 2, 2013, 3:55:26 AM10/2/13
to google groups
тут инпуты не причем, 1с-ка выгружает данные передавая POST запрос Raw data
HttpRequest.body

The raw HTTP request body as a byte string. This is useful for processing data in different ways than conventional HTML forms: binary images, XML payload etc. For processing conventional form data, use HttpRequest.POST.

You can also read from an HttpRequest using a file-like interface. See HttpRequest.read().



2013/10/2 Ivan Fedorov <deve...@ifedorov.com>



--
С уважением, Иван
Reply all
Reply to author
Forward
0 new messages