Доступ к SOAP веб-сервисам 1С из JavaScript и Html

Опубликовал Сергей Карташев (Elisy) в раздел Обмен - Интеграция с WEB

Описанный метод позволяет обратиться к веб-сервисам 1С из html-страницы через JavaScript. В качестве примера выводится список справочников. При нажатии на любой справочник выводятся первые буквы наименований. При нажатии на букву выводятся данные с наименованиями, начинающимися на эту букву.

Описанный метод позволяет обратиться к веб-сервисам 1С из html-страницы через JavaScript. В качестве примера выводится список справочников. При нажатии на любой справочник выводятся первые буквы наименований. При нажатии на букву выводятся данные с наименованиями, начинающимися на эту букву.

Способ применим для случаев, когда веб-сервис и html-страница опубликованы на одном сервере. В этом случае не возникает кросс-доменных проблем. Например, если домены будут отличаться, то Chrome выдаст ошибку:

Failed to load resource: Origin http://localhost:3299 is not allowed by Access-Control-Allow-Origin

Не вдаваясь в подробности публикации веб-сервисов, предположим, что на стороне 1С создан и опубликован веб-сервис catalogs с операцией Execute. На входе - параметр script типа string, на выходе тип string. Операция запускает на стороне произвольный код script из параметра и возвращает JSON-сериализацию от переменной result.

Функция ExecuteCommands(script)
    result = null;
    Execute(script);
    return JSON(result);
КонецФункции

С JSON-сериализацией удобно работать средствами JavaScript и преобразовать строку в объект/массив одной командой eval(resultText). В Интернете можно найти несколько JSON-сериализаторов для 1С.

Удостоверимся, что веб-сервис отвечает, введя его адрес:

Отклик веб-сервиса

[more]

Проект Html-файла лучше начать с готового шаблона, где прописаны стили на все случаи браузеров. Весьма достойный шаблон находится по адресу http://html5boilerplate.com/ В шаблон включен jQuery 1.9.1.

На форме сверху разместим элементы настройки веб-сервера: wsUrl - адрес веб-сервиса, wsUser - логин, wsPassword - пароль. На стороне веб-сервиса 1С включена basic autherization. Логин и пароль соответствуют пользователю, прописанному в 1С.

Левая панель отвечает за отображение доступных справочников catalogsList, правая - за отображение букв (letters) и данных (catalogRecords).

JavaScript

Функция обращения к SOAP веб-сервису определена следующим образом:

function executeSoap(script, successHandler) {
    var wsUrl = $("#wsUrl").val();

    var soapRequest =
    '' +
    '<soapenv:Envelope ' +
    'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' +
    'xmlns:api="http://www.1cbit.ru/dominicana/soap-html-js" ' +
    'xmlns:xsd="http://www.w3.org/2001/XMLSchema" ' +
    'xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">' +
    '' +
    '' +
    '     '' +
    '' +
    '';

    $.ajax({
    type: "POST",
    url: wsUrl,
    contentType: "text/xml",
    dataType: "xml",
    username: $("#wsUser").val(),
    password: $("#wsPassword").val(),
    data: soapRequest,
    success: successHandler,
    error: processError
    });
}

На входе в executeSoap подается скрипт 1С, который выполняется на стороне 1С, и обработчик для удачного исполнения. В случае ошибки вызовется обработчик processError, который выведет сообщение об ошибке.

Код 1С записан в html-коде через script-тэг. Получить текст каждого куска кода для выполнения можно через jQuery $("#enumerate1CCatalogs").text().

Получение списка наименований каталогов.

// result = Новый Массив();
Для Каждого СправочникИзМетаданных Из Метаданные.Справочники Цикл
    структура = Новый Структура("name, synonym");
    структура.name = СправочникИзМетаданных.Имя;
    структура.synonym = СправочникИзМетаданных.Синоним;
    result.Добавить(структура);
КонецЦикла;
// ]]>

Получение первых букв наименований справочника {catalog}

// запрос = Новый Запрос();
запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ Подстрока(Наименование, 0, 1) КАК letter ИЗ Справочник.{catalog}
УПОРЯДОЧИТЬ ПО Подстрока(Наименование, 0, 1)";
result = запрос.Выполнить().Выгрузить();
// ]]>

Получение данных для каталога {catalog}, где первая буква входит в условие {condition}.

// запрос = Новый Запрос();
запрос.Текст = "ВЫБРАТЬ Ссылка as ref, Наименование as name ИЗ Справочник.{catalog}
ГДЕ Подстрока(Наименование, 0, 1) В ({condition})";
result = запрос.Выполнить().Выгрузить();
// ]]>

При нажатии на кнопку Обновить происходит вызов функции

executeSoap($("#enumerate1CCatalogs").text(), processSuccess);

и при успешном выполнении вызывается обработчик processSuccess

function processSuccess(data, status, req) {

    var resultText = $(req.responseText).find("m\\:return").html();
    result = eval(resultText);

    $("#catalogRecords").empty();

    catalogsList = $("#catalogsList");
    catalogsList.empty();

    $(result).each(function (index, item) {
        var li = '

  • ' + item.synonym + '

';
        catalogsList.append(
            $(li).addClass("catalogTitle")
        );
    });
}

 

Веб-сервис возвращает xml, где значимым является содержимое m:return-тэга - JSON-сериализация. Перевести его в объекты JavaScript можно через eval-вызов. Обработчик очищает перечень справочников и заново его формирует через li-тэги с атрибутом catalog. Каждому элементу устанавливается класс catalogTitle.

Веб-сервис возвращает xml, где значимым является содержимое m:return-тэга - JSON-сериализация. Перевести его в объекты JavaScript можно через eval-вызов. Обработчик очищает перечень справочников и заново его формирует через li-тэги с атрибутом catalog. Каждому элементу устанавливается класс catalogTitle.

Аналогично обрабатываются нажатия на все управляющие элементы. Нажатие на справочник очищает буквы и данные, перезаполняет буквы. Нажатие на букву перезаполняет данные из справочника. За обработку кода на 1С отвечают куски кода в script-блоках с типом "text/1c".

Приложение выглядит так:

Внешний вид примера

Нерешенная проблема авторизации на браузере IE

Существует проблема авторизации на IE. На IE 8/9 не удалось решить проблему basic authorization аналогичным для остальных браузеров методом.

Ошибка при доступе через Internet Explorer

На IE Ajax не работает с использованием user/password - свойств $.ajax. На FF и Chrome все работает нормально. По какой-то причине на сервер в случае с IE не передается заголовок

Authorization: Basic 0JHQsNGF0YjQuNC10LLQn9CYICjRgNGD0LrQvtCy0L7QtNC40YLQtdC70YwpOg==

Если кто-нибудь знает причину и как обойти, пожалуйста, напишите в комментариях.

Выводы

Предложенный подход на основе SOAP имеет право на существование для несложных задач, так как сопровождается достаточно большим числом JavaScript кода. Возможно, в будущем удастся создать JavaScript фреймворк для упрощения процесса создания приложений.

Разработчики в этом способе самостоятельно отвечают за безопасность. Необходимо проверять входные параметры при записи, не позволять запуск произвольных скриптов, переданных с клиента. В статье выполнение произвольного кода показано только для примера. Унифицировать можно выполнение произвольного запроса, но это связано с опасностью SQL-инъекций.

Внешние компоненты Native API от 1С не будут работать в данной среде. Это значит, что нужно дополнительно решать проблему с написанием драйверов для оборудования.

// //

Скачать файлы

Наименование Файл Версия Размер
Пример веб-сайта
.zip 81,76Kb
16.07.13
35
.zip 81,76Kb 35 Скачать

См. также

Комментарии
1. Asmody (Asmody) 16.07.13 10:44 Сейчас в теме
часть кода после
var soapRequest =
парсер пожрал?
2. crazy1C (detro) 16.07.13 11:03 Сейчас в теме
Есть ли оценки производительности 1С при выдаче результатов по SOAP, какая возможная интенсивность работы ?
3. Сергей Карташев (Elisy) 844 16.07.13 11:24 Сейчас в теме
(1) Asmody,
парсер пожрал?

Да, парсер. В каждой статье что-нибудь съедает. Как побороть не придумал еще.
function executeSoap(script, successHandler) {
    var wsUrl = $("#wsUrl").val();

    var soapRequest =
    '<?xml version="1.0" encoding="utf-8"?>' +
    '<soapenv:Envelope ' +
    'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' +
    'xmlns:api="http://www.1cbit.ru/dominicana/soap-html-js" ' +
    'xmlns:xsd="http://www.w3.org/2001/XMLSchema" ' +
    'xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">' +
    '<soapenv:Body>' +
    '<api:Execute soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">' +
    '<' + 'script xsi:type="xsd:string">' + script + '</' + 'script>' + 
    '</api:Execute>' +
    '</soapenv:Body>' +
    '</soapenv:Envelope>';

    $.ajax({
    type: "POST",
    url: wsUrl,
    contentType: "text/xml",
    dataType: "xml",
    username: $("#wsUser").val(),
    password: $("#wsPassword").val(),
    data: soapRequest,
    success: successHandler,
    error: processError
    });
}
...Показать Скрыть
4. Сергей Кудашкин (sikuda) 480 16.07.13 12:06 Сейчас в теме
username: ,
password: , в IE не работают на русском(Пришлось делать пользователей на английском). Причина и решение самому интересна.
5. Алексей Белоусов (AllexSoft) 16.07.13 12:14 Сейчас в теме
По моему опыту все гораздо веселее работает на PHP5... не люблю я JS ( за статью плюс!
6. Александр Кунташов (kuntashov) 349 16.07.13 17:44 Сейчас в теме
(3) Elisy,

Как побороть не придумал еще.


В статью вставляйте картинкой, а для тех, кому нужен исходник - давайте ссылку на сниппет, который можно разместить либо на http://gist.github.com либо на http://pastebin.com
7. Евгений _ (Johny_v) 14 17.07.13 08:36 Сейчас в теме
Если кто-нибудь знает причину и как обойти, пожалуйста, напишите в комментариях.

Сделай простенький модуль на PHP, который будет обращаться к веб-сервису 1С и возвращать XML или JSON.
AJAX-ом будешь обращаться к этому модулю. Тогда не должно быть проблем с авторизацией.
Был где-то пример. Могу поискать, если надо.
white_sochi; Elisy; vasiliy_b; +3 Ответить 1
8. Сергей Карташев (Elisy) 844 17.07.13 11:27 Сейчас в теме
(4) sikuda,
username: ,
password: , в IE не работают на русском(Пришлось делать пользователей на английском). Причина и решение самому интересна.

Спасибо. Интересная версия. Хотя бы намек появился на причину. На другом ресурсе
http://www.richmedia.us/post/2013/06/25/soap-1c-jscript-html.aspx
в комментарии предложили переписать Authorization-заголовок
9. Павел Опарин (opx) 427 17.07.13 13:55 Сейчас в теме
Soap это такой же http запрос, переданный в виде xml и полученный ответ тоже в xml.
По мне удобнее работать с soap запросами через xmlhttp = Новый COMОбъект("Msxml2.XMLHTTP");
Кстати и с авторизацией можно попробовать через xmlhttp.setRequestHeader("Authorization","Basic dXNlcm5hbWU6cGFzc3dvcmQ=");
10. Трактор Трактор (Трактор) 1112 17.07.13 14:13 Сейчас в теме
Параметры авторизации можно прописать в файле default.vrd, в строке с путём к информационнойй базе ib. Работает не на всех релизах 1С, но на последних должно работать. Так мы получим анонимный сервис.
11. Сергей Карташев (Elisy) 844 18.07.13 10:17 Сейчас в теме
(7) Johny_v,
Сделай простенький модуль на PHP, который будет обращаться к веб-сервису 1С и возвращать XML или JSON.
AJAX-ом будешь обращаться к этому модулю. Тогда не должно быть проблем с авторизацией.
Был где-то пример. Могу поискать, если надо.

Хотелось бы обойтись без посредников. Модуль PHP тянет за собой PHP и настройку сервера. В сложных задачах, вероятно, не удастся обойтись без Asp.Net/PHP, а на простых, думаю, можно обойтись средствами клиента.
12. Александр Кузин (sashocq) 187 18.07.13 11:01 Сейчас в теме
У меня одного возникают сомнения в практической ценности данного материала?
13. Алексей Белоусов (AllexSoft) 18.07.13 11:39 Сейчас в теме
Elisy, просьба, ну то же самое только с прицелом на PHP, было бы гораздо полезнее... почему имено JS ?
14. Сергей Карташев (Elisy) 844 18.07.13 14:34 Сейчас в теме
(10) Трактор,
Параметры авторизации можно прописать в файле default.vrd, в строке с путём к информационнойй базе ib. Работает не на всех релизах 1С, но на последних должно работать. Так мы получим анонимный сервис.

Новость вызывает двоякое чувство. С одной стороны - это гибкость. Но с другой стороны 1С и сетевая безопасность - вещи несовместимые. Применение оправдано без выхода в публичную сеть.
15. Евгений _ (Johny_v) 14 18.07.13 14:35 Сейчас в теме
В случае использования связки PHP + JS вы получите более безопасный метод обращения к веб-сервису.
Пользователь вообще не сможет узнать что используется веб-сервис 1С, тем более адреса сервера и данные авторизации.
16. Сергей Видякин (badboychik) 54 18.07.13 18:43 Сейчас в теме
когда я работал с веб-сервисами 1С из РНР, возникла проблема преобразования сложных вложенных структур XDTO в объекты РНР. Может в эту сторону подумать?
17. Алексей Белоусов (AllexSoft) 18.07.13 20:14 Сейчас в теме
(15) Johny_v, (16) badboychik, помоему автор игнорирует все вопросы о Web-сервисы + PHP ((
18. Трактор Трактор (Трактор) 1112 18.07.13 22:28 Сейчас в теме
(16) (17) В качестве примера можно 1С+php рассматривать эту разработку http://infostart.ru/public/59207/ Если сподоблюсь сделаю пример попроще.
19. Сергей Карташев (Elisy) 844 19.07.13 06:20 Сейчас в теме
(12) sashocq,
У меня одного возникают сомнения в практической ценности данного материала?

Мы на определенном этапе столкнулись с ограничениями управляемых форм. Ведут они себя непредсказуемо, занимают много лишнего места. Адекватная замена - это html. Именно поэтому html было уделено много внимания. Подходы использования html могут быть различными: встраивание html в УФ на стороне 1С, встраивание веб-клиента 1С в свой Frame и создание своих страниц с доступом по soap. Все эти варианты были рассмотрены в предыдущих и этой публикациях. Насколько применимы, судить нужно в каждом конкретном случае.
20. Евгений _ (Johny_v) 14 19.07.13 08:23 Сейчас в теме
(17) AllexSoft,
Нет, он вроде объяснил что хочется обойтись без PHP. Может в его случае это как-то оправданно.
21. Алексей Белоусов (AllexSoft) 19.07.13 10:31 Сейчас в теме
(20) Johny_v, ну если это считать объяснением...

В сложных задачах, вероятно, не удастся обойтись без Asp.Net/PHP, а на простых, думаю, можно обойтись средствами клиента


Хм, а проект расчитан для ларьков? Насколько я понял подобная модульная система (с веб мордой) будет охватывать всю деятельность предприятия, тогда зачем говорить о простых задачах и наивно полагать что хватит JS ?)
22. Сергей Карташев (Elisy) 844 19.07.13 12:33 Сейчас в теме
(13) AllexSoft,
Elisy, просьба, ну то же самое только с прицелом на PHP, было бы гораздо полезнее... почему имено JS ?

Я работал в рамках поставленной задачи. Здесь делюсь результатами исследований. PHP не входил в поставленную задачу. Да и статьи на тему PHP + 1C были: в (18) пример одной из них.
Лично я не сторонник веб-сервисов вообще, а сторонник альтернативного подхода, где работа ведется по веб-протоколу 1С. Связано это с тем, что веб-сервисы пока не доступны в облаках, а их реализация не является универсальной.
23. Алексей Белоусов (AllexSoft) 19.07.13 12:49 Сейчас в теме
веб-сервисы пока не доступны в облаках

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

ПС: а в чем их не универсальность в данной реализации ?
24. ффф ыыы (zqzq) 15 19.07.13 16:16 Сейчас в теме
(19)
Мы на определенном этапе столкнулись с ограничениями управляемых форм. Ведут они себя непредсказуемо, занимают много лишнего места. Адекватная замена - это html.

Такое впечатление, что у вас там веб-программисты собрались, неосилившие управляемые формы. Пока что недоказанное утверждение, попробуйте статью на эту тему написать с примерами и посмотрите на реакцию сообщества.

Управляемые формы "из коробки" очень много функционала реализуют при минимальных усилиях разработчика.
25. Ярослав Попов (YOr!k) 61 19.07.13 18:00 Сейчас в теме
(24) Странные у вас выводы :)
Наоборот, собравшиеся люди много работали с управляемыми формами, поэтому прекрасно знакомы с их ограничениями - статью здесь писать не о чем, любой профессиональный разработчик, проработавший с упр. формами более 2х месяцев прекрасно знает все эти ограничения. И то что "управляемые" формы во многих аспектах фактически не управляемы также неоспоримый факт (размеры формы и элементов, цвет фона, расстояние между элементами, шрифты заголовков, управление стандартными панелями навигации, отсутствие многих элементов управления и прочее, и прочее...)

Во многом (но далеко не всегда) эти ограничения обоснованы тем, что
управляемые формы "из коробки" очень много функционала реализуют при минимальных усилиях разработчика.

Но позиция нашей команды - это бережное отношение к пользователю и уделение большого внимания к интерфейсу и юзабилити, и здесь решений "из коробки" часто не хватает.
mdSerg; Elisy; +2 Ответить
26. Сергей Карташев (Elisy) 844 19.07.13 20:01 Сейчас в теме
(16) badboychik,
когда я работал с веб-сервисами 1С из РНР, возникла проблема преобразования сложных вложенных структур XDTO в объекты РНР. Может в эту сторону подумать?

Я перспективней вижу технологию 1С Business Connector. После Проекта Доминикана вернусь к той теме.
27. Сергей Карташев (Elisy) 844 19.07.13 20:08 Сейчас в теме
(17) AllexSoft,
(15) Johny_v, (16) badboychik, помоему автор игнорирует все вопросы о Web-сервисы + PHP ((

Стараюсь отвечать на вопросы по мере возможности. Но про PHP мне нечего сказать. Во-первых к данной теме не относится, а во вторых - я разбираюсь в Asp.Net, а не в PHP. По PHP вам лучше найти кого-то другого.
28. Сергей Карташев (Elisy) 844 19.07.13 20:28 Сейчас в теме
(21) AllexSoft,
Хм, а проект расчитан для ларьков? Насколько я понял подобная модульная система (с веб мордой) будет охватывать всю деятельность предприятия, тогда зачем говорить о простых задачах и наивно полагать что хватит JS ?)

Вы что-то совсем ниже плинтуса опустили JS. JS + HTML5 + jQuery(UI) даст фору управляемым формам, потому что формат открытый, стандартизованный и поддерживаемый во всем мире. Там уж точно нет багов, которых уже насчитали штук 10 в новом Такси. Контролов раз в 100 больше от разных производителей и они гибкие и настраиваемые под любые задачи. Не то, что набор из Поле-Таблица-Декорация. 1С пошла по пути Microsoft, которая выпустила лет 10 назад XAML и ее реализацию для web XBAP (до нее WebForms). Потом одумались XAML оставили для десктопа, а для веба создали Asp.Net MVC + jQuery.
29. Сергей Карташев (Elisy) 844 19.07.13 20:34 Сейчас в теме
(23) AllexSoft,
ПС: а в чем их не универсальность в данной реализации ?

Не совсем понял, в какой реализации?
30. Алексей Белоусов (AllexSoft) 22.07.13 09:44 Сейчас в теме
(29) Elisy,
Связано это с тем, что веб-сервисы пока не доступны в облаках, а их реализация не является универсальной.


Вот я про это, в чем не универсальность веб сервисов платформы?
31. Сергей Карташев (Elisy) 844 22.07.13 13:36 Сейчас в теме
(24) zqzq,
Такое впечатление, что у вас там веб-программисты собрались, неосилившие управляемые формы. Пока что недоказанное утверждение, попробуйте статью на эту тему написать с примерами и посмотрите на реакцию сообщества.
Управляемые формы "из коробки" очень много функционала реализуют при минимальных усилиях разработчика.

Наконец-то появился человек, который разъяснит нам во многих местах странное поведение УФ и откровенные баги Такси, а то на форуме 1С не торопятся комментировать.
Много функционала УФ - это заявление маркетологов, потому что набор из Группа-Поле-Таблица-Декорация в нормальных фрейморках за функционал не считается. Попробуйте на досуге поиграться с шириной бордюра, поуправлять отображением, растянуть кнопку на всю ширину формы, убрать сплиттер между таблицами. Может, вы подскажете, как подсказку генерить динамически и отображать разную для каждой строки таблицы? А вы в курсе были, что в динамических списках бестолку использовать ПЕРВЫЕ N - конструкцию, потому что динамический список настолько высокоинтеллектуальный, что в расчет ее не берет.
32. Алексей Белоусов (AllexSoft) 23.07.13 13:16 Сейчас в теме
33. Сергей Карташев (Elisy) 844 23.07.13 14:42 Сейчас в теме
(30)(32)
Извиняюсь за задержку. Неуниверсальность относится к вопросу №4 публикации 1С в SaaS:
http://www.forum.mista.ru/topic.php?id=645570
http://habrahabr.ru/qa/31297/
Судя по ответам, на тот момент не было возможности пользоваться веб-сервисами на популярных 1С SaaS-площадках.

Можно еще почитать комментарии (начиная с 9го) к
http://forum.infostart.ru/forum24/topic75705/
"Веб-сервисы более прогрессивны, но и у них есть свои особенности работы и сложности (настройка, преобразование типов, сложность стандарта, несовместимость). "
34. Алексей Белоусов (AllexSoft) 23.07.13 21:17 Сейчас в теме
(33) Elisy, по поводу 1cfresh это проблема конкретной реализации конфигураций, а не платформы... я всетаки говорил про сам обмен через SOAP web-сервисы
за вторую ссылку спасибо, почитал... согласен про преобразование типов, но никуда не денешься от этого, тут проблемы платформеных типов значений которая она использует
35. Сергей Карташев (Elisy) 844 23.07.13 21:33 Сейчас в теме
(34) AllexSoft,
Elisy, по поводу 1cfresh это проблема конкретной реализации конфигураций, а не платформы... я всетаки говорил про сам обмен через SOAP web-сервисы

Меня очень интересует вопрос - есть ли системные проблемы у веб-сервисов на SaaS-серверах 1С, работающих на базах с разделением данных. Не встречались ли статьи на тему особенностей использования веб-сервисов в режиме разделения данных? Какие особенности и узкие места, практика использования?
Наша система планируется именно такой и хотелось бы знать, можно ли закладывать в нее клиентские веб-сервисы, как инструмент, например, для обмена с веб-сайтами клиентов. Есть опасения, что веб-сервисы могут привести к уязвимостям в системе безопасности.
36. Алексей Белоусов (AllexSoft) 23.07.13 21:47 Сейчас в теме
(35) Elisy, к сожалению примеров таких систем не знаю, да и статьи искал и не нашел ( самому интересно... если напишите статью о использовании web-сервисов в нестандатных задачах (условиях модульности, условиях разделения данных) то было бы очень интересно.
А по поводу стоит ли закладывать возможности обмена с сайтами через SOAP то конечно нужно, вот только придумать как ) схемы подключения xsd пользовательских схем, сам обмен данными на подобие обработки универсального обмена и файлов правил...
37. Игорь (6есик) 30 08.08.13 15:57 Сейчас в теме
Я обычный XMLHttpRequest использовал, то у меня авторизируется обоими способами.
Только в IE заметил разницу что при авторизации не через хедеры при неправильных данных не появляется стандартное окно авторизации в браузере.

И при использовании русских символов либо в пароле либо в пользователе авторизация неработает даже в стандартных окошках авторизации в браузере (пробовал хром,мозилу,експлорер)
38. Ivan Kovtun (i.kovtun) 118 25.08.13 19:13 Сейчас в теме
(37) 6есик,
А в какой кодировке отправляете реквизиты авторизации? Подозреваю 1С UTF-8 ожидает...
39. Сергей Карташев (Elisy) 844 26.08.13 14:15 Сейчас в теме
(38) i.kovtun,
На странице выставлен meta для utf-8. Хорошо бы было, если бы браузер ее и использовал :)
40. Игорь (6есик) 30 27.08.13 12:21 Сейчас в теме
(38) i.kovtun,
Да по разному пробовал уже. И через encodeURIComponent() пробовал авторизационные данные пропускать, но ничего не помогло. Даже надоело пробовать - но если у кого-то получиться то было бы очень интересно увидеть.
41. Олег Власенко (Vlasenko.Oleg) 10 02.09.13 16:47 Сейчас в теме
По поводу авторизации попробуйте использовать Preemptive Authentication,
здесь описано как http://hc.apache.org/httpclient-3.x/authentication.html
42. Ivan Kovtun (i.kovtun) 118 20.09.13 13:55 Сейчас в теме
(40) 6есик,
Вот появилась публикация http://infostart.ru/public/201461/, в ней есть информация по поводу авторизации киррилистических логинов. Сам пока до проблемы не добрался.
43. program program (prodines) 103 08.04.15 12:11 Сейчас в теме
А как всё-таки составлять SOAP-запросы из веб-клиента к веб-серверу 1С?
44. Алексей Белоусов (AllexSoft) 08.04.15 12:25 Сейчас в теме
(43) prodines, точнее проблему озвучьте, в чем сложность то? примеров использования SoapClient на PHP полно, там 3 строки кода.. ну а собственно вызов из вашего клиентского приложения веб сервиса на 1С или на чем то другом одинаков, там все равно ответы в формате XML вам будут приходить. Ну а как парсить ответы это уже другая тема =)
45. Сергей Карташев (Elisy) 844 08.04.15 12:39 Сейчас в теме
(43) Веб-клиент имеется ввиду 1С?
46. program program (prodines) 103 10.04.15 12:13 Сейчас в теме
(44) AllexSoft, (45) Elisy, Суть проблемы в следующем: есть веб-клиент в виде броузера с загруженным HTML/JavaScript-файлом. Есть Веб-сервер в виде связки 1С:Предприятие и Апач. Задача: обращаться из клиента к серверу и получать некий ответ. Вопрос: какого вида XML-файлы слать из клиента на 1С? Откуда я узнаю их формат, синтаксис?

При этом, разумеется, такие вещи, как JSON, WSDL, SOAP, jQuery - для меня, программиста 1С, тёмный лес. Кое-как со скрипом я ещё могу осилить JavaScript - хотя это тоже довольно непростой язык программирования, просто я случайно прочитал недавно 5 издание библии флэнагана. Да, ну и XML - вещь понятная, разумеется, т.к. 1С-программист с XML регулярно сталкивается в работе.

Таким образом, данная статья мне вообще абсолютно непонятна - ни единого слова.
47. Сергей Карташев (Elisy) 844 15.04.15 08:06 Сейчас в теме
(46) Извините, что отвечаю с запозданием. На Инфостарт с определенного момента перестала нотификация об ответах приходить по почте. Очень неудобно стало.

Суть проблемы в следующем: есть веб-клиент в виде броузера с загруженным HTML/JavaScript-файлом. Есть Веб-сервер в виде связки 1С:Предприятие и Апач. Задача: обращаться из клиента к серверу и получать некий ответ. Вопрос: какого вида XML-файлы слать из клиента на 1С? Откуда я узнаю их формат, синтаксис?

Думаю, вам нужно решить сначала вопрос с авторизацией.
Для вашего случая есть несколько подходов: 1) из этой статьи и 2) http-сервисы из мира 1С 8.3. В обоих случаях встанет проблема ввода пользователем логина и пароля. В случае статьи - хранение логина и пароля будет на стороне веб-браузера, в случае с http-сервисов логин и пароль распознает 1С и факт распознавания будет передаваться через куки. 3) подход - http://infostart.ru/public/104926/ может не предполагать авторизации совсем (Требует платный компонент .Net Bridge - встречал аналог через COM-объект).

Я встречал несколько вариантов передачи данных от сервера к клиенту: JSON и XML. Самый распространненный в веб-мире все-таки JSON, но он очень медленный при формировании средствами 1С.
По методам:
1) Поддерживает XML, внутрь ответов можно встраивать JSON. Формат XML фиксированный - определяется 1С стандартом SOAP - сложный для понимания.
2) Поддерживает XML, JSON - гибче, чем 1й подход. Формат XML и JSON вы определяете на стороне 1С
3) Поддерживает XML, JSON. Формат XML и JSON вы определяете на стороне 1С
48. program program (prodines) 103 15.04.15 11:48 Сейчас в теме
(47) Elisy, то ли Вы ничего не ответили на мой вопрос, то ли я не сумел ничего понять. Да поймите же - JSON для меня просто не существует. Примите это как условное допущение. И изучать его я не стану - нет смысла.
Формат XML и JSON вы определяете на стороне 1С

Возможно, это является ответом. Тогда это и есть суть моего вопроса - как конкретно это делается - "Формат XML вы определяете на стороне 1С"?
49. Алексей Белоусов (AllexSoft) 15.04.15 16:47 Сейчас в теме
(48) prodines, думаю у вас еще недостаточно теоретической основы для реализации вашей задачи.
При этом, разумеется, такие вещи, как JSON, WSDL, SOAP, jQuery - для меня, программиста 1С, тёмный лес.

И изучать его я не стану - нет смысла.

ну тогда вы ничего и не сделаете к сожалению ( Нельзя что-то сделать и не понимать что ты делаешь. Копипаст тут не прокатит
50. Сергей Карташев (Elisy) 844 16.04.15 07:29 Сейчас в теме
(48) prodines,
Про JSON нужно знать, что это альтернатива XML. Это текстовая строка, полученная на выходе какой-то функции 1С. Ее понимает JavaScript. 1С запакует структуру в JSON без вашего участия, JavaScript его поймет и восстановит объект опять без вашего участия.
Код для получения JSON при беглом поиске можно взять здесь http://infostart.ru/public/61194/
XML создается стандартными 1С-средствами, например, так - для таблицы значений:
	Запись = Новый ЗаписьXML;
    Запись.УстановитьСтроку("UTF-8");
     
    Запись.ЗаписатьОбъявлениеXML(); 
    Запись.ЗаписатьНачалоЭлемента("root");  
     
    МасКолонки = Новый Массив();
    Запись.ЗаписатьНачалоЭлемента("columns");   
    Для Ном = 0 по Таблица.Колонки.Количество()-1 цикл          
        Колонка = Таблица.Колонки[Ном];
        МасКолонки.Добавить(Колонка.Имя);
         
        Запись.ЗаписатьНачалоЭлемента("colum");
        Запись.ЗаписатьАтрибут("Name",Колонка.Имя);
        Запись.ЗаписатьАтрибут("Type",Строка(Колонка.ТипЗначения));
        Запись.ЗаписатьКонецЭлемента();  // colum       
    КонецЦикла;     
    Запись.ЗаписатьКонецЭлемента();  // columns
     
    Запись.ЗаписатьНачалоЭлемента("records");   
    Для Каждого СтрТаблицы из Таблица цикл
         
        Запись.ЗаписатьНачалоЭлемента("record");
        Для каждого ИмяКолонки из МасКолонки цикл
            Запись.ЗаписатьНачалоЭлемента(ИмяКолонки);
			
			Тип = ТипЗнч(СтрТаблицы[ИмяКолонки]);
		    Если Справочники.ТипВсеСсылки().СодержитТип(Тип)
              Или Документы.ТипВсеСсылки().СодержитТип(Тип) Тогда
			    Запись.ЗаписатьТекст("" + СтрТаблицы[ИмяКолонки].УникальныйИдентификатор());
			ИначеЕсли Тип = Тип("Число") Тогда
		    	Запись.ЗаписатьТекст(Формат(СтрТаблицы[ИмяКолонки], "ЧРД=.; ЧН=0; ЧГ=0"));
			Иначе  
				Значение = Строка(СтрТаблицы[ИмяКолонки]);
            	Запись.ЗаписатьСекциюCDATA(Значение);
			КонецЕсли;
			
            Запись.ЗаписатьКонецЭлемента();
        КонецЦикла;         
        Запись.ЗаписатьКонецЭлемента();
    КонецЦикла;     
     
    Запись.ЗаписатьКонецЭлемента();  // records     
    Запись.ЗаписатьКонецЭлемента();  // root        
	
    Возврат Запись.Закрыть();
...Показать Скрыть


Здесь под "Формат XML вы определяете на стороне 1С" я понимаю то, что вы можете дать другие имена root, columns или добавить другую информацию
51. Алексей Белоусов (AllexSoft) 17.04.15 11:21 Сейчас в теме
(50) Elisy, думаю он хочет пример оформления soapRequest с одним или двумя параметром (скажем простыми в виде string) в вызове функции executeSoap(script, successHandler) из вашего примера
52. Serg S (mdSerg) 19.02.16 04:05 Сейчас в теме
(24) zqzq, (24) zqzq, Поставил бы минус на Ваше высказывание. А автор молодец.