Имя: Пароль:
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 имеет средства для стандартных способов авторизации, так чтобы не надо было испекать заголовки.