Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Выгрузка из 1С на сайт под OWOX          
onsamuy Подменю пользователя
сообщение 07.03.14, 12:54
Сообщение #1

Оратор
Иконка группы
Группа: Местный
Сообщений: 264
Спасибо сказали: 69 раз
Рейтинг: 0

Пишу обмен с сайтом на движке OWOX. Столкнулся с переносом/обновлением остатков - очень сложных механизм. Есть кто нибудь кто делал подобное? Может хоть посоветуюсь...

onsamuy Подменю пользователя
сообщение 12.03.14, 12:10
Сообщение #2

Оратор
Иконка группы
Группа: Местный
Сообщений: 264
Спасибо сказали: 69 раз
Рейтинг: 0

Собственно, мне предоставили пример http запроса, каким он должен быть (это не 1С код, а просто текст);

POST /Goods/ HTTP/1.1\r\n
Connection: Keep-Alive\r\n
Content-Type: multipart/form-data; boundary=onesboundarydelimiter\r\n
Accept: */*\r\n
Authorization: Basic {password_hash}\r\n
User-Agent: 1C+Enterprise/8.2\r\n
Content-Length: {content_length}\r\n
Host: api.somedomain.com\r\n
\r\n
--onesboundarydelimiter\r\n
Content-Disposition: form-data; name="file"; filename="{filename_with_xml}"\r\n
Content-Type: application/octet-stream\r\n
Content-Transfer-Encoding: binary\r\n
\r\n
<?xml version="1.0" encoding="UTF-8"?>\r\n
<Goods>
<records>
  <record>
   <fields>
    <title>New goods</title>
    <details>
     <record>
      <record>
       <id>1853</id>
       <fields>
        <value>3600</value>
       </fields>
      </record>
     </record>
    </details>
    <attachments>
     <images>
   <record>
    <fields>
<href>{image url}</href>
</fields>
      </record>
     </images>
    </attachments>
                  <order>12</order>
   </fields>
  </record>
</records>
</Goods>

--onesboundarydelimiter--


после двухдневного рысканья по интернету решил делать так: все, что заключено в boundary (то есть текст шаблона между строками "--onesboundarydelimiter" и "--onesboundarydelimiter--") записываю в файл "C:\1c8\otpravka.xml". Далее делаю в 1С HTTPЗапрос, отправляю его через HTTPСоединение.ОтправитьНаОбработку (метод POST), вуаля. Вот мой текст модуля:
        //ЗАДАЕМ НЕОБХОДИМЫЕ ПЕРЕМЕННЫЕ...
    
    //а) Разделитель (Boundary) - может  быть любая уникальная строка, будем считать что это GUID константы, она неизменная
    Boundary = СтрЗаменить(Константы.ВалютаУправленческогоУчета.Получить().УникальныйИдентификатор(), "-", "");
    
    //б) Размер файла отправки
    ФайлОтправки = Новый Файл("C:\1c8\otpravka.xml");
    РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер());
    
    //1. УСТАНАВЛИВАЕМ СОЕДИНЕНИЕ С СЕРВЕРОМ...
    Сервер = "api.testm.mysite.ua";
    ИмяПользователя = "demo";
    Пароль = "mypassword";
    
    Соединение = Новый HTTPСоединение(Сервер,,ИмяПользователя,Пароль);
    
    //2. ФОРМИРУЕМ http-запрос СРЕДСТВАМИ 1С...
    
    //а) заголовки
    Заголовки = Новый Соответствие();
    Заголовки.Вставить("Content-Type", "multipart/form-data; boundary="+boundary);
    Заголовки.Вставить("Content-Lenght", РазмерФайлаОтправки);
    
    //б) сам запрос
    Запрос = Новый HTTPЗапрос("/Goods",Заголовки);
    Запрос.УстановитьИмяФайлаТела("C:\1c8\otpravka.xml");
    
    //3. ОТПРАВЛЯЕМ ЗАПРОС НА СЕРВЕР МЕТОДОМ POST СРЕДСТВАМИ 1С...
    Ответ = Соединение.ОтправитьДляОбработки(Запрос);
    
    ТекстОтвета = Ответ.ПолучитьТелоКакСтроку();
    
    ЭлементыФормы.ПолеHTMLДокумента1.УстановитьТекст(ТекстОтвета);//выведем ответ от сервера в поле формы


Получаю текст ответа : Internal Server Error
Сервер временно недоступен по техническим причинам. Пожалуйста, зайдите позже.
Хотя через advanced REST Client - дополнение Google chrome запрос отправляется норм. Что Я Делаю Не Так?
Понимаю, что многабукав, но все таки, если разберемся, будет неплохой опыт читателям форума...

вот содержимое файла otpravka.xml:
--82a55a64fe9111de806e001d7da552f5
Content-Disposition: form-data; name="file"; filename="C:\otpravka.xml"
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary

<?xml version="1.0" encoding="UTF-8"?>
<Goods>
    <records>
        <record>
            <fields>
                <title>ACCESS, ACCESS TI2 Desktop hardware synthesizer, </title>
                <parent>
                    <id>165360</id>
                </parent>
                <price>31104</price>
                <producer>
                    <id/>
                </producer>
                <status>locked</status>
                <sell_status>unavailable</sell_status>
                <docket>ACCESS TI2 DESKTOP Синтезатор аналогового моделирования, настольно/рековый</docket>
                <tags/>
                <ext_id>204765</ext_id>
            </fields>
        </record>
    </records>
</Goods>
--82a55a64fe9111de806e001d7da552f5--


добавлю, через Advanced REST Client отправляю только файл с таким содержимым

<?xml version="1.0" encoding="UTF-8"?>
<Goods>
    <records>
        <record>
            <fields>
                <title>ACCESS, ACCESS TI2 Desktop hardware synthesizer, </title>
                <parent>
                    <id>165360</id>
                </parent>
                <price>31104</price>
                <producer>
                    <id/>
                </producer>
                <status>locked</status>
                <sell_status>unavailable</sell_status>
                <docket>ACCESS TI2 DESKTOP Синтезатор аналогового моделирования, настольно/рековый</docket>
                <tags/>
                <ext_id>204765</ext_id>
            </fields>
        </record>
    </records>
</Goods>

Vofka Подменю пользователя
сообщение 12.03.14, 13:29
Сообщение #3

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Узнайте у администратора сайта/сервера, почему Internal Server Error ?

Спасибо сказали: flint,

onsamuy Подменю пользователя
сообщение 20.03.14, 13:22
Сообщение #4

Оратор
Иконка группы
Группа: Местный
Сообщений: 264
Спасибо сказали: 69 раз
Рейтинг: 0

Вобщем, проблема была в кириллице.
Не так просто в моем случае оказалось скормить мой xml-файл который вмещает строки на кириллице (сформированный с помощью ЗаписьXML) объекту HTTPЗапрос.
Обошел проблему таким образом:
Сначала читаю файл в текстовыйДокумент, обязательно с виндовс кодировкой!
ФайлДляПередачи = Новый ТекстовыйДокумент;
ФайлДляПередачи.Прочитать(имяФайлаОтправки, КодировкаТекста.ANSI);

Затем устанавливаю полученный текст как тело HTTPЗапроса:
HTTPЗапрос.УстановитьТелоИзСтроки(ФайлДляПередачи.ПолучитьТекст());

И не забываем передать корректные заголовки, уточняем у разработчика сайта.

Спасибо сказали: flint, Vofka,

Maclaud Подменю пользователя
сообщение 22.04.14, 11:36
Сообщение #5

Молчаливый
*
Группа: Пользователи
Сообщений: 3
Спасибо сказали: 1 раз
Рейтинг: 0


 ! 

Правила, пункт 1
 


Сообщение отредактировал Vofka - 22.04.14, 11:44

flint Подменю пользователя
сообщение 18.06.14, 15:13
Сообщение #6

Молчаливый
*
Группа: Пользователи
Сообщений: 5
Спасибо сказали: 0 раз
Рейтинг: 0

Доброго времени суток!

Так же, пишу обмен 1С с сайтом на базе OWOX

И столкнулся с проблемой корректной отправки HTTPзапросов.

Программисты сайта как-то не охотно идут на контакт.

Хочу спросить, на Ваш взгляд, где у меня ошибка:

Ответ сервера:
Цитата
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>500 Internal Server Error</title>
</head><body>
<h1>Internal Server Error</h1>
<p>Сервер временно недоступен по техническим причинам. Пожалуйста, зайдите позже.</p>
<hr>
{prod SERVER}
</body></html>



Boundary = СтрЗаменить(Константы.ВалютаРегламентированногоУчета.Получить().УникальныйИдентификатор(), "-", "");

    
    //б) Размер файла отправки
    РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер());
    
    
    //2. ФОРМИРУЕМ http-запрос СРЕДСТВАМИ 1С...
    
    //а) заголовки
    Заголовки = Новый Соответствие();
    Заголовки.Вставить("POST /GOODS/ HTTP/1.1");
    Заголовки.Вставить("Connection","Keep-Alive");
    Заголовки.Вставить("Content-Type","multipart/form-data; boundary="+Boundary);
    Заголовки.Вставить("Accept", "*/*");
    Заголовки.Вставить("Authorization",СокрЛП(НастройкаСсылка.ЗаголовкиAuthorization));
    Заголовки.Вставить("User-Agent", СокрЛП(НастройкаСсылка.ЗаголовкиUser));
              Заголовки.Вставить("Content-Length", РазмерФайлаОтправки);
    Заголовки.Вставить("Host",Соединение.Сервер);
          
    ИмяФайлаЗапросHTTP = ПолучитьИмяВременногоФайла();
    
    ЗапросHTTP = Новый ЗаписьТекста;
    ЗапросHTTP.Открыть(ИмяФайлаЗапросHTTP, КодировкаТекста.ANSI);
    ЗапросHTTP.ЗаписатьСтроку("--"+Boundary + Символы.ВК);
    ЗапросHTTP.ЗаписатьСтроку("Content-Disposition: form-data; name=""file""; filename=" + Символ(34) + ФайлОтправки.Имя + Символ(34) + Символы.ВК);
    ЗапросHTTP.ЗаписатьСтроку("Content-Type: application/octet-stream" + Символы.ВК);
    ЗапросHTTP.ЗаписатьСтроку("Content-Transfer-Encoding: binary" + Символы.ВК);
    ЗапросHTTP.ЗаписатьСтроку(Символы.ВК);
    
    ФайлДляПередачи = Новый ТекстовыйДокумент;
    ФайлДляПередачи.Прочитать(ФайлОтправки.ПолноеИмя, КодировкаТекста.ANSI);
    
    ТекстСтрока = ФайлДляПередачи.ПолучитьТекст();
    СимволыНачало = Найти(ТекстСтрока, "<?xml version=""1.0"" encoding=""UTF-8""?>");
    СимволыНачало = Прав(ТекстСтрока, СтрДлина(ТекстСтрока) - СимволыНачало + 1);
    
    ЗапросHTTP.ЗаписатьСтроку(СимволыНачало);     
    
    ЗапросHTTP.ЗаписатьСтроку(Символы.ВК);
    ЗапросHTTP.ЗаписатьСтроку("--"+Boundary+"--");
    ЗапросHTTP.Закрыть();
    
    ОтветСервера = Неопределено;
    ИмяФайлаОтвета = ПолучитьИмяВременногоФайла();
    
    //б) сам запрос
    Запрос = Новый HTTPЗапрос("/Goods",Заголовки);
    Запрос.УстановитьИмяФайлаТела(ИмяФайлаЗапросHTTP);    

    Попытка
        Соединение.ОтправитьДляОбработки(Запрос, ИмяФайлаОтвета);
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;


//***************************

Цитата
Тело запроса - файл ИмяФайлаЗапросHTTP:
--8b44649d892311dbaf51c8c4e85d49d2
Content-Disposition: form-data; name="file"; filename="PostGoods.xml"
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary

<?xml version="1.0" encoding="UTF-8"?>
<Goods>
<records>
<record>
<fields>
<title>Stanley</title>
<code>STT1-714</code>
<docket>Stanley test</docket>
<prices>
<record>
<id>3</id>
<title>Opt</title>
<value>2420</value>
</record>
<record>
<id>2</id>
<title>Roznica</title>
<value>2860</value>
</record>
</prices>
<tags>test</tags>
<status>new</status>
</fields>
</record>
</records>
</Goods>

--8b44649d892311dbaf51c8c4e85d49d2



 ! 

Выделяйте код
 


Сообщение отредактировал Vofka - 18.06.14, 16:46

Acid Подменю пользователя
сообщение 19.06.14, 10:33
Сообщение #7

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 377 раз
Рейтинг: 260.7

Цитата(flint @ 18.06.14, 16:13) *

не пойму зачем вам такой велосипед?

Если вы пишете обмен, то это работа с БД. В этом случае вам вообще не нужно смотреть в сторону HTTPзапросов


Signature

Документируйте Код! мать вашу...


Vofka Подменю пользователя
сообщение 19.06.14, 10:53
Сообщение #8

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Цитата(Acid @ 19.06.14, 11:33) *
Если вы пишете обмен, то это работа с БД. В этом случае вам вообще не нужно смотреть в сторону HTTPзапросов

Та ну smile.gif

flint Подменю пользователя
сообщение 19.06.14, 11:01
Сообщение #9

Молчаливый
*
Группа: Пользователи
Сообщений: 5
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Acid @ 19.06.14, 11:33) *
не пойму зачем вам такой велосипед?

Если вы пишете обмен, то это работа с БД. В этом случае вам вообще не нужно смотреть в сторону HTTPзапросов



Обмен интернет-ресурс с 1С

как бы заказчик предоставил инструкцию по работе с OWOX, обработав инструкцию и выводы onsamuy

реализовал "это дело" в 1С, но

в 1С - 500 Internal Server Error
а на RestClient - все классно - на базе моего тела запроса создал товар

(

Acid Подменю пользователя
сообщение 19.06.14, 12:22
Сообщение #10

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 377 раз
Рейтинг: 260.7

Я бы использовал ADO хотяб
http://pro1c.org.ua/index.php?showtopic=2111


Signature

Документируйте Код! мать вашу...


flint Подменю пользователя
сообщение 23.06.14, 9:31
Сообщение #11

Молчаливый
*
Группа: Пользователи
Сообщений: 5
Спасибо сказали: 0 раз
Рейтинг: 0

Всем спасибо, разобрался анализируя тело HTTP запроса с помощью Wireshark

Vofka Подменю пользователя
сообщение 23.06.14, 11:16
Сообщение #12

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

flint, так и что там было?

Сообщение отредактировал Vofka - 23.06.14, 11:17

Acid Подменю пользователя
сообщение 23.06.14, 11:51
Сообщение #13

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 377 раз
Рейтинг: 260.7

Это была реклама Wireshark smile.gif


Signature

Документируйте Код! мать вашу...


flint Подменю пользователя
сообщение 26.06.14, 8:58
Сообщение #14

Молчаливый
*
Группа: Пользователи
Сообщений: 5
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Vofka @ 23.06.14, 12:16) *
flint, так и что там было?


Для метода post при 500 ошибки: заголовки в xml. корректные разделитили(возврат корретки), кодировка файла

при ошибках в xml - в файле ответа уже более подробное описание

Для метода put: заголовки в xml - не нужны. корректные разделитили(возврат корретки), кодировка файла

n00bie Подменю пользователя
сообщение 04.07.14, 9:42
Сообщение #15

Молчаливый
*
Группа: Пользователи
Сообщений: 2
Спасибо сказали: 0 раз
Рейтинг: 0

500 ошибка это любая внутренняя ошибка сервера.

Судя по выложенному коду оно просто не должно работать.

Соединение = Новый HTTPСоединение("http://adres servera");
Соединение.ОтправитьДляОбработки("Путь к XML файлу", "/Goods/", "Путь к файлу ответа");

flint Подменю пользователя
сообщение 11.07.14, 9:11
Сообщение #16

Молчаливый
*
Группа: Пользователи
Сообщений: 5
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(n00bie @ 04.07.14, 10:42) *
500 ошибка это любая внутренняя ошибка сервера.

Судя по выложенному коду оно просто не должно работать.

Соединение = Новый HTTPСоединение("http://adres servera");
Соединение.ОтправитьДляОбработки("Путь к XML файлу", "/Goods/", "Путь к файлу ответа");


Альтернативный вариант синтаксиса появился в последних версиях платформы

n00bie Подменю пользователя
сообщение 11.07.14, 9:35
Сообщение #17

Молчаливый
*
Группа: Пользователи
Сообщений: 2
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(flint @ 11.07.14, 10:11) *
Альтернативный вариант синтаксиса появился в последних версиях платформы

Взял из конфигурации которую разрабатывал больше двух лет назад.

1сНеЛюбитМеня Подменю пользователя
сообщение 15.09.15, 11:41
Сообщение #18

Общительный
**
Группа: Пользователи
Сообщений: 25
Спасибо сказали: 2 раз
Рейтинг: 0

Доброго времени суток!

Где можно посмотреть документацию по owox. Есть доступы к документации, там текст
"Взаимодействие с внешними системами (API)

API - то функционал работы с данными модуля через обращение по URL. Нужно для того, чтобы клиент мог интегрировать интернет—магазин в его бизнес. Самый просто пример — актуализировать статус заказа после его обработки в 1С.

OwoxEngine дает возможность взаимодействовать с сиcтемой по двум стандартам XML-RPC и REST.
"
и т.п.
Вот а какие реквизиты брать, к чему обращаться непонятно. По каким мануалам пишите господа, по какому принципу.

Спасибо)

Acid Подменю пользователя
сообщение 15.09.15, 13:47
Сообщение #19

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 377 раз
Рейтинг: 260.7

чей то я не вижу у них открытого API.
в связи с этим, нужно OWOX нанять на обслуживание вам. Либо использовать что-то из открытых исходников.


Signature

Документируйте Код! мать вашу...


Sillanium Подменю пользователя
сообщение 20.01.18, 1:39
Сообщение #20

Молчаливый
*
Группа: Пользователи
Сообщений: 1
Спасибо сказали: 0 раз
Рейтинг: 0

flint, Добрый
Как вы решили задачу?
Мне необходимо обновить цену
Какую структуру должен содержать XML-файл?

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 12:16
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!