Имя: Пароль:
1C
 
Передача текста заявки через http сервис в 1с
,
0 kIR
 
25.04.16
16:56
Доброго дня!
Есть желание через вебморду стороннюю получать заявки из колл-центра, принимать их в 1с,обрабатывать и выдавать сотрудникам
Вроде все более менее ясно,но непонятно,как будет выглядеть передача собтственно текста заявки?
Почти все материалы в Интернете говорят об отчетности или передаче/получении информации о товаре

Но ка же будет тогда выглядеть текст заявки,когда его будут передавать?
Неужели что то типа "http://localhost:8090/Platform8Demo/text=ХренПоймиКакойОгромныйТекстНаСтоТыщЗнаков";?
Или как то по другому передать это все можно?


Спасибо
1 Fragster
 
гуру
25.04.16
16:58
используй webсервисы, а не http-
2 Fragster
 
гуру
25.04.16
16:59
ну, или http://v8.1c.ru/o7/201312rest/index.htm

Создание нового элемента данных выполняется POST-запросом. В качестве значения ссылки передается нулевой GUID. При создании и модификации объектов значения свойств передаются в теле запроса в формате XML (здесь текст запроса приведён полностью):

POST  /OData_Tests_Infobase/odata/standard.odata/Catalog_Goods HTTP/1.1
Content-Type: application/atom+xml
DataServiceVersion: 3.0;NetFx
MaxDataServiceVersion: 3.0;NetFx
Accept: application/atom+xml,application/xml
Accept-Charset: UTF-8
User-Agent: 1C-Enterprise
Host: test-host:8090
Content-Length: 1610

<?xml  version="1.0" encoding="utf-8"?>
<entry  xmlns=http://www.w3.org/2005/Atom  
        xmlns:d=http://schemas.microsoft.com/ado/2007/08/dataservices  
        xmlns:m=http://schemas.microsoft.com/ado/2007/08/dataservices/metadata  
        xmlns:georss=http://www.georss.org/georss  
        xmlns:gml=http://www.opengis.net/gml&gt;

   <category term="EnterpriseV8.CatalogGoods"  scheme=http://schemas.microsoft.com/ado/2007/08/dataservices/scheme />
   <id />
   <title />
   <updated>2013-08-12T11:48:25Z</updated>
   <author>
      <name />
   </author>
   <content type="application/xml">
      <m:properties>
         <d:Code>157</d:Code>
         <d:DeletionMark>false</d:DeletionMark>
         <d:Description>Майка синяя</d:Description>
         <d:IsFolder>false</d:IsFolder>
         <d:Parent_Key m:null="true" />
         <d:Ref_Key m:type="Edm.Guid">00000000-0000-0000-0000-000000000000</d:Ref_Key>
         <d:Артикул m:null="true" />
         <d:Поставщик_Key>F400322D-7AE8-4803-A7BE-0D80E525E8C2</d:Поставщик_Key>
      </m:properties>
   </content>
</entry>
3 kIR
 
25.04.16
17:01
(1) не,мне ж потом нужно пользователю отправить ответ с принятой заявкой и ее номером - это как минимум
4 Fragster
 
гуру
25.04.16
17:02
(3) ну так отправляй
5 kIR
 
25.04.16
17:04
(4) ну вот поэтому и http
6 kIR
 
25.04.16
17:04
Но с сутью задачи так и не разобрался
7 Fragster
 
гуру
25.04.16
17:04
(5) не, я понял, почему не подходит (2). но почему не подходит (1)?
8 YAGolova
 
25.04.16
17:05
(5) web сервисы так же прекрасно увеют возвращать значения)
9 YAGolova
 
25.04.16
17:06
(5) и http сервис тоже можешь сам написать, который будет выполняться методом POST и возвращать то что тебе нужно
10 kIR
 
25.04.16
17:10
(7)(8) ага,ну тогда и веб подойдет,эт я просто не разобрался,значит)

Но все таки - как будет выглядеть строка, в которой будут передаваться данные с текстом заявки? не допру - вот хоть убейте
11 YAGolova
 
25.04.16
17:13
если запрос методом POST, то в строке вызова можешь ваще ничего не передавать, а в теле запроса передать что нужно в каком тебе удобно виде
12 kIR
 
25.04.16
17:14
(11) а есть ссылочка какая нибудь на пример?) для полноты восприяти?
13 YAGolova
 
25.04.16
17:16
(12) http://catalog.mista.ru/public/516810/ там про POST мельком, но все-таки есть чуток
14 kIR
 
25.04.16
17:21
(13) ага!
То есть через тело post запроса я получаю данные заявки, как мне нужно ее обрабатываю, а потом post/get(?) запросом возвращаю данные о состоянии этой заявки юзверю. так?
15 YAGolova
 
25.04.16
17:24
(14) зачем тебе еще раз какой то запрос? у тебя 1 http сервис, который работает через метод post и возвращает то, что тебе надо
16 kIR
 
25.04.16
17:30
(15) значит,я еще не совсем все понял)
Ладно,буду реализовывать - там уже буду распрашивать дотошнее)пока просто в голове соберу все)
17 kIR
 
25.04.16
17:31
спасибо!
18 4St
 
25.04.16
23:35
(14) https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo
Им можно отправлять POST-запросы, например.
POST-запросы ничего интересного в строке адреса не содержат. Все содержимое лежит именно в теле ответа, которое так просто браузером не посмотреть. По сути там лежит просто какой-то произвольный текст.

Далее, обработчик данного запроса в http-сервисе будет примерно такой:


Функция rootPOST(Запрос)
    
    ТелоЗапроса = Запрос.ПолучитьТелоКакСтроку();//это и есть "невидимое" содержимое POST запроса

//что-то делаем с ТелоЗапроса: валидируем, заявку создаем и т.д.
    
    Ответ = Новый HTTPСервисОтвет(200);
    Ответ.УстановитьТелоИзСтроки("заявка успешно создана");
    Возврат Ответ;

КонецФункции
19 H A D G E H O G s
 
26.04.16
01:25
все же держат в уме шифрование?
20 Fragster
 
гуру
26.04.16
09:22
(19) а? ты про то, что то, что выставлено наружу должно быть через https?
21 oleg_km
 
26.04.16
09:51
(20) логично
22 kIR
 
26.04.16
11:29
(19) вот теперь все)
(18) да,я как то так себе и стал потом это представлять))спасибо за ссылку)
23 kIR
 
27.04.16
11:26
А что с аутентификацией делать? как то при запросе передавать логин/пароль? или в настройках сервиса можно указать использование без аутентификации?
24 4St
 
27.04.16
14:25
А ты откуда в этот сервис стучаться будешь?
Если из 1С, то надо указывать логин/пароль тут:
"Соединение  = Новый HTTPСоединение(<порядок параметров не помню>).

Если из другого места, то используй basic схему авторизации. Т.е. в заголовках запроса должен быть такой:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Где абракадабра - это на самом деле base64(user:pass).
(ЕМНИП)
25 kIR
 
28.04.16
09:14
(24) а пример ссылки с абракадаброй есть? для общего понимания?
26 4St
 
28.04.16
09:29
(25) она не в ссылке передаётся. В синтаксис помощнике ищи "httpсоединение.установитьзаголовки()". А про заголовки в общем - на вики есть, загугли " заголовки http запросов".
27 kIR
 
28.04.16
09:30
(26) спасибо)
28 oleg_km
 
28.04.16
09:54
(26) По-моему просто в HTTPСоединение указываешь пользователя и пароль, а он уже сам использует или Basic-авторизацию или Digest какую сервер запросит.
29 4St
 
28.04.16
10:02
(28) да,так и есть. Но ТС, судя по (0), будет отправлять запросы не через 1с.
30 oleg_km
 
28.04.16
10:07
(29) Ну практически во всех языках API для работы с HTTP имеет средства для стандартных способов авторизации, так чтобы не надо было испекать заголовки.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn