Имя: Пароль:
1C
1С v8
Мобильное приложение 1с+JavaScript+IIS ошибка 401.5
,
0 ТутЯ
 
03.02.17
15:15
Добрый день!
Мобильное приложение 1с.
В приложении есть объект "Поле HTML документа"
в котором пишу следующий код на JavaScript.

...
function Хwrite(){
var XHR = (""onload"" in new XMLHttpRequest()) ? XMLHttpRequest : XDomainRequest;
var invocation = new XHR();    
var invocation = new XMLHttpRequest();
var url = '"+URL+"';
var body = '<?xml version=""1.0"" encoding=""utf-8""?>'+
'<soapenv:Envelope xmlns:soapenv=""http://www.w3.org/2003/05/soap-envelope""; xmlns:sam=""http://www.sample-package.org"">; \
<soapenv:Header/> \
<soapenv:Body> \
<sam:Metka> \
<sam:СсылкаЗН>""{""#"",54b442b6-253a-4c8b-b790-6236a2ab5425,168:8ce2002590c0109011e6ab01fce44a21} ""</sam:СсылкаЗН> \
</sam:Metka> \
</soapenv:Body> \
</soapenv:Envelope> ';

invocation.onload = function () {
alert('1.'+invocation.responseText);
}

invocation.onerror = function () {
alert('2.'+this.responseText);
}

invocation.open(""POST"", url, true);

invocation.setRequestHeader('Content-Length', '381');
invocation.setRequestHeader('Host', 'ххххх.ххх.ххх');
invocation.setRequestHeader('Content-Type','text/xml; charset=utf-8');
invocation.setRequestHeader('Server','Microsoft-IIS/7.5');
invocation.setRequestHeader('X-Powered-By','ASP.NET');

invocation.setRequestHeader('Authorization', 'Basic V2ViU2....6MTIz');

invocation.send(body);

};
....
в логах IIS получаю ошибку 401.5.
Пишу тот же запрос и заголовки в Fiddler или в 1с через WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
и получаю 200-ОК.
ПОМОГИТЕ, пожалуйста.
1 Юрий Лазаренко
 
03.02.17
15:28
Кроссдоменный запрос?
https://learn.javascript.ru/xhr-crossdomain
2 ТутЯ
 
03.02.17
15:33
Вот я не могу ответить Кросс-доменные или нет, т.к. не понимаю. Заголовки пыталась ставить такие
    //WinHttp.setRequestHeader("Access-Control-Allow-Origin", "*");
    //
    //WinHttp.setRequestHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
    //WinHttp.setRequestHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
    //WinHttp.setRequestHeader("Access-Control-Max-Age", "1728000");
не помогло
3 ТутЯ
 
03.02.17
15:36
Все происходит на одном сервере.
Боевая база 8.2 и конфигурация 8.3.9 мобильная.
4 ТутЯ
 
03.02.17
15:36
Я путаюсь. Подскажите, пожалуйста.
5 ТутЯ
 
03.02.17
15:46
Мне нужно из "Поле HTML документа" в мобильном приложении (МП) каким-то образом записывать данные в 1с. Пытаюсь это сделать через веб сервис боевой базы, т.к. функция "При изменении" не работает в МП и нет у объекта "Поле HTML документа" нет "Документ".

Если есть какие-то варианты другие подскажите, пожалуйста.
Я уже практически плачу))).

Литературу, ссылки, хоть что-то...
6 ТутЯ
 
03.02.17
16:05
(1) Юрий, Вы скорее всего, хорошо разбираетесь в этом. Подскажите, пожалуйста, что нужно сделать в моем у случае.
7 ТутЯ
 
03.02.17
16:08
"Смотрю в книгу и вижу фигу".
Написано что ответ сервера должен быть с заголовком  "Access-Control-Expose-Headers". Это я не понимаю. Как это сделать?
8 Юрий Лазаренко
 
03.02.17
16:11
(7) Веб-сервис боевой базы возвращает какой-то ответ. У ответа есть заголовки, вот в этих заголовках надо прописать
Access-Control-Expose-Headers
9 svsvsv
 
03.02.17
16:11
(7) попробуй использовать событие не "ПриИзменении", а "ПриНажатии". Здесь нужно каким-то образом использовать ссылку
10 Юрий Лазаренко
 
03.02.17
16:12
+(8) В статье, ссылку на которую я кидал, об этом написано как раз.
11 ТутЯ
 
03.02.17
16:23
(9) у меня "При нажатии" не работает на мобильном
12 ТутЯ
 
03.02.17
16:26
Юрий, а ответ веб сервиса должен быть строка с текстом заголовков или нет?
13 ТутЯ
 
03.02.17
16:29
Я еще только начинаю работать с такими объектами. Не понимаю что происходит. Объект на явескрипт отправляет соап запрос веб сервису 1с. ИИС принимает "OPTIONS" и не проходит авторизацию (ошибка 401.5). До 1с мы не доходим. Разве нет?
14 ТутЯ
 
03.02.17
16:38
Меня смущает что расшифровка 401.5 — Авторизация не выполнена из-за приложения ISAPI/CGI.
Тут точно не в настройке IIS дело?
15 Юрий Лазаренко
 
03.02.17
16:39
(12) Я веб-сервисами давно не пользуюсь, вместо них есть http-сервисы, там все нормально можно устанавливать.
16 ТутЯ
 
03.02.17
16:40
8.2
17 Юрий Лазаренко
 
03.02.17
16:41
Жаль
18 ТутЯ
 
03.02.17
16:48
Кто-нибудь еще хочет что-то сказать? Высказывайтесь))). Как выкрутиться?
19 Tateossian
 
03.02.17
16:48
(5) Как вариант вместо мобильного приложения на 1С написать приложение в Android Studio.
20 ТутЯ
 
03.02.17
16:48
я уже пытаюсь, но родное не  бросаю)
21 ТутЯ
 
03.02.17
16:50
Приложение большое, но есть вот такие интересные объекты с которыми хочется работать. Возможно ли?
22 Tateossian
 
03.02.17
16:50
(20) Напиши прокси-сервис, который будет вызываться из 1С.
23 Tateossian
 
03.02.17
16:51
(21) Среднестатический 1Сник быстро разберется

https://developer.android.com/reference/android/content/Intent.html
24 Tateossian
 
03.02.17
16:52
(21) Полагаю, у тебя же не iOS?
25 ТутЯ
 
03.02.17
16:53
любое устройство может быть
26 Tateossian
 
03.02.17
17:05
Вот что пишут в stackoverflow:

this.xmlDoc.setRequestHeader('Authorization','Basic ' + Base64.encode("User:Password"));

Возможно, дело в неправильном авторизационном токене.
27 ТутЯ
 
03.02.17
17:07
беру Fiddler вставляю строку Authorization: Basic V2ViU2V....тут скроем...M6MTIz и получает ответ 200
28 ТутЯ
 
03.02.17
17:10
пишем в 1с кнопочку
WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
WinHttp.Option(2,"utf-8");
WinHttp.Open("POST",URL,0);
вставляем только WinHttp.setRequestHeader("Authorization","Basic V2Vi.....MTIz");
WinHttp.SEND(DOC);
    Если (WinHTTP.Status = 200) Тогда
        Ответ = WinHTTP.ResponseText;
    Иначе
        Сообщить("Статус ответа WinHttpRequest " + Строка(WinHTTP.Status) + ", произошла ошибка!"+ Символы.ПС+WinHTTP.ResponseText);
        Ответ = "";
    КонецЕсли;
и получаем ответ 200
29 ТутЯ
 
03.02.17
17:10
пишу символы явно
30 ТутЯ
 
03.02.17
17:12
т.е. везде работает а с мобильного через яву скрипт не работает. Что не так?
31 DitriX
 
03.02.17
17:12
Мне нужно из "Поле HTML документа" в мобильном приложении (МП) каким-то образом записывать данные в 1с. Пытаюсь это сделать через веб сервис боевой базы, т.к. функция "При изменении" не работает в МП и нет у объекта "Поле HTML документа" нет "Документ".

Вот тут по подробнее, а то звчит как неимоверный костыль, что именно вы хоите сделать?
32 ТутЯ
 
03.02.17
17:16
Я не спорю что могу делать большой костыль. Подскажите, плиз, как можно сделать проще.

Задача: В мобильном приложении есть картинка- тыкаем пальцем на картинку и на ней появляются некоторые объекты. Координаты этих объектов мы хотим сохранить в 1с. Не важно где на форме Мп или в 1с боевой.

На примере я пытаюсь отправить веб сервису боевой базы  строчку и хочу получить ответ(пока не обрабатываю сам ответ).
33 ТутЯ
 
03.02.17
17:18
Как связать "Поле HTML документа" с 1с мобильного приложения?
34 Tateossian
 
03.02.17
17:21
У поля есть событие ПриНажатии, в параметр передается данныеОСобытии.

После этого в МП вызывается некая функция, которая реализует вызов веб сервиса (объект конфигурации WS ссылка)
35 DitriX
 
03.02.17
17:23
(32) страницу в студию:)
36 ТутЯ
 
03.02.17
17:25
у меня не срабатывает эта процедура
37 ТутЯ
 
03.02.17
17:25
на мобильном эти процедуры не работают
38 ТутЯ
 
03.02.17
17:26
Если конфигурацию МП открыть на ПК, то будут работать, но мне же нужно на МП.
39 ТутЯ
 
03.02.17
17:28
(32) (35) показать картинку или что?
Обычная картинка на ней крестики- все.
40 Tateossian
 
03.02.17
17:34
(37) А сделать форму управляемую c картинкой? Почему именно HTML?
41 ТутЯ
 
03.02.17
17:35
42 ТутЯ
 
03.02.17
17:35
(40) а как метки ставить?
43 ТутЯ
 
03.02.17
17:37
(40)Картинками не получится наложить картинку на картинку.
44 ТутЯ
 
03.02.17
17:38
Таких объектов несколько и это самый простой пример.
45 Юрий Лазаренко
 
03.02.17
18:04
(30) На мобильном ты со страницы с одним URL пытаешься дернуть аяксом сайт с другим URL, а аякс в этом случае может козлить. Похоже именно этот случай.
https://yandex.ru/search/?lr=959&msid=1486134238.4276.22885.1344&text=ajax%20запрос%20на%20другой%20домен
46 ТутЯ
 
03.02.17
18:22
(45) спасибо. Я попробую разобраться. Появлюсь чуть позже.
Ошибка? Это не ошибка, это системная функция.